library(performance)
## Warning: package 'performance' was built under R version 4.1.3
The attached who.csv dataset contains real-world data from 2008. The variables included follow. Country: name of the country
LifeExp: average life expectancy for the country in years
InfantSurvival: proportion of those surviving to one year or more
Under5Survival: proportion of those surviving to five years or more
TBFree: proportion of the population without TB.
PropMD: proportion of the population who are MDs
PropRN: proportion of the population who are RNs
PersExp: mean personal expenditures on healthcare in US dollars at average exchange rate
GovtExp: mean government expenditures per capita on healthcare, US dollars at average exchange rate
TotExp: sum of personal and government expenditures.
Read the csv as a dataframe.
who_df <- df <- read.csv("who.csv", stringsAsFactors = FALSE)
Summarize it.
summary(who_df)
## Country LifeExp InfantSurvival Under5Survival
## Length:190 Min. :40.00 Min. :0.8350 Min. :0.7310
## Class :character 1st Qu.:61.25 1st Qu.:0.9433 1st Qu.:0.9253
## Mode :character Median :70.00 Median :0.9785 Median :0.9745
## Mean :67.38 Mean :0.9624 Mean :0.9459
## 3rd Qu.:75.00 3rd Qu.:0.9910 3rd Qu.:0.9900
## Max. :83.00 Max. :0.9980 Max. :0.9970
## TBFree PropMD PropRN PersExp
## Min. :0.9870 Min. :0.0000196 Min. :0.0000883 Min. : 3.00
## 1st Qu.:0.9969 1st Qu.:0.0002444 1st Qu.:0.0008455 1st Qu.: 36.25
## Median :0.9992 Median :0.0010474 Median :0.0027584 Median : 199.50
## Mean :0.9980 Mean :0.0017954 Mean :0.0041336 Mean : 742.00
## 3rd Qu.:0.9998 3rd Qu.:0.0024584 3rd Qu.:0.0057164 3rd Qu.: 515.25
## Max. :1.0000 Max. :0.0351290 Max. :0.0708387 Max. :6350.00
## GovtExp TotExp
## Min. : 10.0 Min. : 13
## 1st Qu.: 559.5 1st Qu.: 584
## Median : 5385.0 Median : 5541
## Mean : 40953.5 Mean : 41696
## 3rd Qu.: 25680.2 3rd Qu.: 26331
## Max. :476420.0 Max. :482750
Preview.
head(who_df)
## Country LifeExp InfantSurvival Under5Survival TBFree PropMD
## 1 Afghanistan 42 0.835 0.743 0.99769 0.000228841
## 2 Albania 71 0.985 0.983 0.99974 0.001143127
## 3 Algeria 71 0.967 0.962 0.99944 0.001060478
## 4 Andorra 82 0.997 0.996 0.99983 0.003297297
## 5 Angola 41 0.846 0.740 0.99656 0.000070400
## 6 Antigua and Barbuda 73 0.990 0.989 0.99991 0.000142857
## PropRN PersExp GovtExp TotExp
## 1 0.000572294 20 92 112
## 2 0.004614439 169 3128 3297
## 3 0.002091362 108 5184 5292
## 4 0.003500000 2589 169725 172314
## 5 0.001146162 36 1620 1656
## 6 0.002773810 503 12543 13046
Provide a scatterplot of LifeExp~TotExp, and run simple linear regression. Do not transform the variables. Provide and interpret the F statistics, R^2, standard error,and p-values only. Discuss whether the assumptions of simple linear regression met.
Scatter plot.
attach(who_df)
plot(LifeExp, TotExp, main="Life Expectancy vs. Total Expenditures",
xlab="Life Expectancy (Years) ", ylab="Sum of Government and Personal Expenditures", pch=19)
Simple linear regression model.
who_lm <- lm(LifeExp ~ TotExp, data=who_df)
Performance metrics.
summary(who_lm)
##
## Call:
## lm(formula = LifeExp ~ TotExp, data = who_df)
##
## Residuals:
## Min 1Q Median 3Q Max
## -24.764 -4.778 3.154 7.116 13.292
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 6.475e+01 7.535e-01 85.933 < 2e-16 ***
## TotExp 6.297e-05 7.795e-06 8.079 7.71e-14 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 9.371 on 188 degrees of freedom
## Multiple R-squared: 0.2577, Adjusted R-squared: 0.2537
## F-statistic: 65.26 on 1 and 188 DF, p-value: 7.714e-14
Total Government and Personal Expenditures has a high correlation and is predictive of Life Expectancy for a country. The f-statistic and p-value show a significant association. Our coefficient is almost 10x the standard error, which is a indicative of a good predictor. However, both r-squared values indicate that differences in expenditures only partially explain differences in life expectancy.
Checking assumptions.
check_model(who_lm)
We unfortunately see an imperfect linear model. Residuals do not vary uniformly across fitted values. Moreover, the Q-Q plot shows larger errors for larger inputs. The assumptions of linear regression are not met, but we’re hopeful that some transformations could help us create a workable model.
Raise life expectancy to the 4.6 power (i.e., LifeExp^4.6). Raise total expenditures to the 0.06 power (nearly a log transform, TotExp^.06). Plot LifeExp^4.6 as a function of TotExp^.06, and re-run the simple regression model using the transformed variables. Provide and interpret the F statistics, R^2, standard error, and p-values. Which model is “better?”
who_df_2 <- who_df
who_df_2$LifeExp2 <- who_df_2$LifeExp^4.6
who_df_2$TotExp2 <- who_df_2$TotExp^.06
who_lm_2 <- lm(LifeExp2 ~ TotExp2, data=who_df_2)
summary(who_lm_2)
##
## Call:
## lm(formula = LifeExp2 ~ TotExp2, data = who_df_2)
##
## Residuals:
## Min 1Q Median 3Q Max
## -308616089 -53978977 13697187 59139231 211951764
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -736527910 46817945 -15.73 <2e-16 ***
## TotExp2 620060216 27518940 22.53 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 90490000 on 188 degrees of freedom
## Multiple R-squared: 0.7298, Adjusted R-squared: 0.7283
## F-statistic: 507.7 on 1 and 188 DF, p-value: < 2.2e-16
Greatly improved r-squared values in addition to “better” f-statistics and p-values. Our coefficient-standard-error ratio also is ameliorated.
check_model(who_lm_2)
The recommended transformations gave us a linear model. Residual variance now appears uniform. The Q-Q plot appears linear as needed.
Using the results from 3, forecast life expectancy when TotExp^.06 =1.5. Then forecast life expectancy when TotExp^.06=2.5.
Assuming we mean the model from 2.
TotExp2 = 1.5
e3_1 <- who_lm_2$coefficients[1] + who_lm_2$coefficients[2] * 1.5
e3_1^(1/4.6)
## (Intercept)
## 63.31153
TotExp2 = 2.5
e3_2 <- who_lm_2$coefficients[1] + who_lm_2$coefficients[2] * 2.5
e3_2^(1/4.6)
## (Intercept)
## 86.50645
Build the following multiple regression model and interpret the F Statistics, R^2, standard error, and p-values. How good is the model?
LifeExp = b0+b1 x PropMd + b2 x TotExp +b3 x PropMD x TotExp
who_lm_3 <- lm(LifeExp ~ PropMD + TotExp + (PropMD * TotExp), data = who_df)
summary(who_lm_3)
##
## Call:
## lm(formula = LifeExp ~ PropMD + TotExp + (PropMD * TotExp), data = who_df)
##
## Residuals:
## Min 1Q Median 3Q Max
## -27.320 -4.132 2.098 6.540 13.074
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 6.277e+01 7.956e-01 78.899 < 2e-16 ***
## PropMD 1.497e+03 2.788e+02 5.371 2.32e-07 ***
## TotExp 7.233e-05 8.982e-06 8.053 9.39e-14 ***
## PropMD:TotExp -6.026e-03 1.472e-03 -4.093 6.35e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 8.765 on 186 degrees of freedom
## Multiple R-squared: 0.3574, Adjusted R-squared: 0.3471
## F-statistic: 34.49 on 3 and 186 DF, p-value: < 2.2e-16
Model metrics are better than 1 but worsee than 2. We need to transform for a linear model. Just to verify, check the model’s assumptions:
check_model(who_lm_3)
Linear assumptions not met. Most strikingly, our residual variance is not uniform.
Forecast LifeExp when PropMD=.03 and TotExp = 14. Does this forecast seem realistic? Why or why not?
e5 <- predict(who_lm_3, data.frame(TotExp=14,PropMD=.03))
e5
## 1
## 107.696
Unless we’re in Okinawa or Sardinia, this seems high. That’s a lot of docs per population - a linear coefficient wouldn’t reflect that, while more medical professionals (hopefully) leads to longer lives, there would definitely be a point of diminishing returns well below 3% of the population being physicians.