library(performance)
## Warning: package 'performance' was built under R version 4.1.3

Assignment

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

1

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.

2

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.

3

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

4

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.

5

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.