# Michael Jordan vs Lebron James: The true G.O.A.T shows improvement

Feb. 17, 2021, 9:50 a.m. Today is Michael Jordan's birthday--arguably one of the greatest players of all time; but whenever Jordan is addressed as the best, Lebron James enters the conversion and since age is in the discussion, I wonder whose improved more as they age.

Some people determine who's better by comparing Michael Jordan's stats against Lebron James', but instead of comparing the two player's stats against one another, what if we compared the player's stats against themselves to see who has a higher improvement rate over their career?

Michael Jordan and Lebron James are both talented NBA players, but if you knew one player doesn't improve as well as the other throughout their career, wouldn't that change your mind about who the best really is?

In RStudio, I compared each player's average statistic of a specific category, graphed the data, and calculated the improvement rate for each respective category. Below are the following NBA stat categories I used:

NBA Stat Categories:

• Average Field Goal Percentage Per Season
• Average Free Throw Percentage Per Season
• Average Total Rebounds Per Season
• Average Assists Per Season
• Average Steals Per Season
• Average Blocks Per Season
• Average Turnovers Per Season
• Average Fouls Per Season
• Average Points Per Season

### Michael Jordan's and Lebron James' Average Field Goal Percentages Per Season

The two graphs above represent each player's average field goal percentage each season they played in and how it changed as they age (since it's Jordan's birthday). On average, as Michael Jordan got older, his field goal percentage decreased but as Lebron James got older, his field goal percentage increased.

It's equally important to notice the y-axis' range. Michael Jordan's average field goal percentage ranges from 41.1% to 53.9% while Lebron James' average field goal percentage ranges from 41.7% to 56.7%.

Below is the code I used to generate my graphs:

``````library(ggplot2)

ggplot(jordan, aes(x = Age, y = FG.)) +
geom_point() +
geom_smooth(method = "lm", color= "red", se = FALSE) +
labs( title = "Michael Jordan's Improvement Rate for Average Field Goal Percentage Per Season", x = "Age", y = "Average Field Goal Percentage per Season") + theme(plot.title = element_text(hjust = 0.5))

r_jordan <- lm(FG. ~ Age, data=jordan)
r_jordan

ggplot(lebron, aes(x = Age, y = FG.)) +
geom_point() +
geom_smooth(method = "lm", color= "blue", se = FALSE) +
labs( title = "Lebron James' Improvement Rate for Average Field Goal Percentage Per Season", x = "Age", y = "Average Field Goal Percentage per Season") + theme(plot.title = element_text(hjust = 0.5))

r_lebron <- lm(FG. ~ Age, data=lebron)
r_lebron``````

Field Goal Percentage Improvement Rate:

Below is a linear regression formula I ran to know the slope, or improvement rate, of the colored lines in the graphs above.

On average, Michael Jordan's field goal percentage decreased by .004512 for every year he got older. As for Lebron James, on average his field goal percentage increased by .003956 for every year he got older.

### Michael Jordan's and Lebron James' Average Free Throw Percentages Per Season

The two graphs above represent each player's average free throw percentage each season they played in and how it changed as they got older. On average, as Michael Jordan and Lebron James got older, their free throw percentages decreased.

Michael Jordan's average free throw percentage ranges from 78.4% to 85.7% while Lebron James' average free throw percentage ranges from 66.5% to 78%.

Below is the code I used to generate my graphs:

``````library(ggplot2)

ggplot(jordan, aes(x = Age, y = FT.)) +
geom_point() +
geom_smooth(method = "lm", color= "red", se = FALSE) +
labs( title = "Michael Jordan's Improvement Rate for Average Free Throw Percentage Per Season", x = "Age", y = "Average Free Throw Percentage per Season") + theme(plot.title = element_text(hjust = 0.5))

r_jordan <- lm(FT. ~ Age, data=jordan)
r_jordan

ggplot(lebron, aes(x = Age, y = FT.)) +
geom_point() +
geom_smooth(method = "lm", color= "blue", se = FALSE) +
labs( title = "Lebron James' Improvement Rate for Average Free Throw Percentage Per Season", x = "Age", y = "Average Free Throw  Percentage per Season") + theme(plot.title = element_text(hjust = 0.5))

r_lebron <- lm(FT. ~ Age, data=lebron)
r_lebron``````

Free Throw Percentage Improvement Rate:

Here is the linear regression formula:

On average, Michael Jordan's free throw percentage decreased by .002957 for every year he got older. As for Lebron James, on average his free throw percentage decreased by .003289 for every year he got older.

### Michael Jordan's and Lebron James' Average Number of Total Rebounds Per Season

The two graphs above represent each player's average number of total rebounds each season they played in and how it changed as they got older. On average, as Michael Jordan got older, his number of total rebounds slightly increased and as Lebron James got older, his number of total rebounds increased.

Michael Jordan's average number of total rebounds ranges from 3.6 to 8 while Lebron James' average number of total rebounds ranges from 5.5 to 8.6.

Below is the code I used to generate my graphs:

``````library(ggplot2)

ggplot(jordan, aes(x = Age, y = TRB)) +
geom_point() +
geom_smooth(method = "lm", color= "red", se = FALSE) +
labs( title = "Michael Jordan's Improvement Rate for Average Total Rebounds Per Season", x = "Age", y = "Average Total Rebounds per Season") + theme(plot.title = element_text(hjust = 0.5))

r_jordan <- lm(TRB ~ Age, data=jordan)
r_jordan

ggplot(lebron, aes(x = Age, y = TRB)) +
geom_point() +
geom_smooth(method = "lm", color= "blue", se = FALSE) +
labs( title = "Lebron James'Improvement Rate for Average Total Rebounds Per Season", x = "Age", y = "Average Total Rebounds per Season") + theme(plot.title = element_text(hjust = 0.5))

r_lebron <- lm(TRB ~ Age, data=lebron)
r_lebron``````

Number of Total Rebounds Improvement Rate:

Here is the linear regression formula:

On average, Michael Jordan's number of total rebounds increased by .02249 for every year he got older. As for Lebron James, on average his number of total rebounds increased by .09185 for every year he got older.

### Michael Jordan's and Lebron James' Average Number of Assists Per Season

The two graphs above represent each player's average number of assists each season they played in and how it changed as they aged. On average, as Michael Jordan got older, his number of assists decreased but as Lebron James got older, his number of assists increased.

Michael Jordan's average number of assists ranges from 3.6 to 8 while Lebron James' average number of assists ranges from 5.5 to 8.6.

Below is the code I used to generate my graphs:

``````library(ggplot2)

ggplot(jordan, aes(x = Age, y = AST)) +
geom_point() +
geom_smooth(method = "lm", color= "red", se = FALSE) +
labs( title = "Michael Jordan's Improvement Rate for Average Assists Per Season", x = "Age", y = "Average Assists per Season") + theme(plot.title = element_text(hjust = 0.5))

r_jordan <- lm(AST ~ Age, data=jordan)
r_jordan

ggplot(lebron, aes(x = Age, y = AST)) +
geom_point() +
geom_smooth(method = "lm", color= "blue", se = FALSE) +
labs( title = "Lebron James' Improvement Rate for Average Assists Per Season", x = "Age", y = "Average Assists per Season") + theme(plot.title = element_text(hjust = 0.5))

r_lebron <- lm(AST ~ Age, data=lebron)
r_lebron``````

Number of Assists Improvement Rate:

Here is the linear regression formula:

On average, Michael Jordan's number of assists decreased by .07797 for every year he got older. As for Lebron James, on average his number of assists increased by .1433 for every year he got older.

### Michael Jordan's and Lebron James' Average Number of Steals Per Season

The two graphs above represent each player's average number of steals each season they played in and how it changed as they got older. On average, as Michael Jordan and Lebron James got older, their number of steals decreased.

Michael Jordan's average number of steals ranges from 1.4 to 3.2 while Lebron James' average number of steals ranges from 1 to 2.2.

Below is the code I used to generate my graphs:

``````library(ggplot2)

ggplot(jordan, aes(x = Age, y = STL)) +
geom_point() +
geom_smooth(method = "lm", color= "red", se = FALSE) +
labs( title = "Michael Jordan's Improvement Rate for Average Steals Per Season", x = "Age", y = "Average Steals per Season") + theme(plot.title = element_text(hjust = 0.5))

r_jordan <- lm(STL ~ Age, data=jordan)
r_jordan

ggplot(lebron, aes(x = Age, y = STL)) +
geom_point() +
geom_smooth(method = "lm", color= "blue", se = FALSE) +
labs( title = "Lebron James' Improvement Rate for Average Steals Per Season", x = "Age", y = "Average Steals per Season") + theme(plot.title = element_text(hjust = 0.5))

r_lebron <- lm(STL ~ Age, data=lebron)
r_lebron``````

Number of Steals Improvement Rate:

Here is the linear regression formula:

On average, Michael Jordan's number of steals decreased by .07988 for every year he got older. As for Lebron James, on average his number of steals decreased by .04025 for every year he got older.

### Michael Jordan's and Lebron James' Average Number of Blocks Per Season

The two graphs above represent each player's average number of blocks each season they played in and how it changed as they got older. On average, as Michael Jordan and Lebron James got older, their number of blocks decreased.

Michael Jordan's average number of blocks ranges from .4 to 1.6 while Lebron James' average number of blocks ranges from .3 to 1.1.

Below is the code I used to generate my graphs:

``````library(ggplot2)

ggplot(jordan, aes(x = Age, y = BLK)) +
geom_point() +
geom_smooth(method = "lm", color= "red", se = FALSE) +
labs( title = "Michael Jordan's Improvement Rate for Average Blocks Per Season", x = "Age", y = "Average Blocks per Season") + theme(plot.title = element_text(hjust = 0.5))

r_jordan <- lm(BLK ~ Age, data=jordan)
r_jordan

ggplot(lebron, aes(x = Age, y = BLK)) +
geom_point() +
geom_smooth(method = "lm", color= "blue", se = FALSE) +
labs( title = "Lebron James' Improvement Rate for Average Blocks Per Season", x = "Age", y = "Average Blocks per Season") + theme(plot.title = element_text(hjust = 0.5))

r_lebron <- lm(BLK ~ Age, data=lebron)
r_lebron``````

Number of Blocks Improvement Rate:

Here is the linear regression formula:

On average, Michael Jordan's number of blocks decreased by .04859 for every year he got older. As for Lebron James, on average his number of blocks decreased by .01765 for every year he got older.

### Michael Jordan's and Lebron James' Average Number of Turnovers Per Season

The two graphs above represent each player's average number of turnovers each season they played in and how it changed as they got older. On average, as Michael Jordan got older, his number of turnovers decreased but as Lebron James got older, his number of turnovers increased.

Michael Jordan's average number of turnovers ranges from .4 to 1.6 while Lebron James' average number of turnovers ranges from 3 to 4.3. With turnovers, the smaller the number, the better.

Below is the code I used to generate my graphs:

``````library(ggplot2)

ggplot(jordan, aes(x = Age, y = TOV)) +
geom_point() +
geom_smooth(method = "lm", color= "red", se = FALSE) +
labs( title = "Michael Jordan's Improvement Rate for Average Turnovers Per Season", x = "Age", y = "Average Turnovers per Season") + theme(plot.title = element_text(hjust = 0.5))

r_jordan <- lm(TOV ~ Age, data=jordan)
r_jordan

ggplot(lebron, aes(x = Age, y = TOV)) +
geom_point() +
geom_smooth(method = "lm", color= "blue", se = FALSE) +
labs( title = "Lebron James' Improvement Rate for Average Turnovers Per Season", x = "Age", y = "Average Turnovers per Season") + theme(plot.title = element_text(hjust = 0.5))

r_lebron <- lm(TOV ~ Age, data=lebron)
r_lebron``````

Number of Turnovers Improvement Rate:

Here is the linear regression formula:

On average, Michael Jordan's number of turnovers decreased by .06259 for every year he got older. As for Lebron James, on average his number of turnovers increased by .0387 for every year he got older.

### Michael Jordan's and Lebron James' Average Number of Fouls Per Season

The two graphs above represent each player's average number of fouls each season they played in and how it changed as they got older. On average, as Michael Jordan and Lebron James got older, their number of fouls decreased.

Michael Jordan's average number of fouls ranges from 1.8 to 3.5 while Lebron James' average number of fouls ranges from 1.4 to 2.3. With fouls, the smaller the number, the better.

Below is the code I used to generate my graphs:

``````library(ggplot2)

ggplot(jordan, aes(x = Age, y = PF)) +
geom_point() +
geom_smooth(method = "lm", color= "red", se = FALSE) +
labs( title = "Michael Jordan's Improvement Rate for Average Fouls Per Season", x = "Age", y = "Average Fouls per Season") + theme(plot.title = element_text(hjust = 0.5))

r_jordan <- lm(PF ~ Age, data=jordan)
r_jordan

ggplot(lebron, aes(x = Age, y = PF)) +
geom_point() +
geom_smooth(method = "lm", color= "blue", se = FALSE) +
labs( title = "Lebron James' Improvement Rate for Average Fouls Per Season", x = "Age", y = "Average Fouls per Season") + theme(plot.title = element_text(hjust = 0.5))

r_lebron <- lm(PF ~ Age, data=lebron)
r_lebron``````

Number of Fouls Improvement Rate:

Here is the linear regression formula:

On average, Michael Jordan's number of fouls decreased by .07464 for every year he got older. As for Lebron James, on average his number of fouls decreased by .02085 for every year he got older.

### Michael Jordan's and Lebron James' Average Points Per Season

The two graphs above represent each player's average number of turnovers each season they played in and how it changed as they got older. On average, as Michael Jordan and Lebron James got older, their number of points decreased.

Michael Jordan's average number of points ranges from 20 to 37.1 while Lebron James' average number of points ranges from 20.9 to 31.4.

Below is the code I used to generate my graphs:

``````library(ggplot2)

ggplot(jordan, aes(x = Age, y = PTS)) +
geom_point() +
geom_smooth(method = "lm", color= "red", se = FALSE) +
labs( title = "Michael Jordan's Improvement Rate for Average Points Per Season", x = "Age", y = "Average Points per Season") + theme(plot.title = element_text(hjust = 0.5))

r_jordan <- lm(PTS ~ Age, data=jordan)
r_jordan

ggplot(lebron, aes(x = Age, y = PTS)) +
geom_point() +
geom_smooth(method = "lm", color= "blue", se = FALSE) +
labs( title = "Lebron James' Improvement Rate for Average Points Per Season", x = "Age", y = "Average Points per Season") + theme(plot.title = element_text(hjust = 0.5))

r_lebron <- lm(PTS ~ Age, data=lebron)
r_lebron``````

Here is the linear regression formula:

On average, Michael Jordan's number of points decreased by .4668 for every year he got older. As for Lebron James, on average his number of points decreased by .0742 for every year he got older.

### So who improves more as they get older?

After analyzing Michael Jordan's and Lebron James' average career stats across nine categories and calculating the improvement rate, Lebron James has a higher improvement rate in four categories (field goal percentage, rebounds, assists, and fouls) while Michael Jordan has a better improvement rate in two (free throws and turnovers).

There were three categories (steals, blocks, and points) where Michael Jordan had better ranges, but his improvement rates were lower than Lebron's. Jordan out-performs Lebron in these three categories, but with a smaller range Lebron showcases more consistency.

If the best NBA player is based on improvement ratings, Lebron James wins. Additionally, he is currently playing longer than Michael Jordan did which is difficult to do as we age.

Now, imagine if both NBA stars are in the same draft class and you have to select one of them in determining your team's future success, who do you choose knowing one player has a higher chance of improving throughout his career compared to the other?