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

library(tidyverse)
url <- "https://raw.githubusercontent.com/saayedalam/Data/master/who.csv"
who_df <- read.csv(url)
head(who_df)
##               Country LifeExp InfantSurvival Under5Survival  TBFree
## 1         Afghanistan      42          0.835          0.743 0.99769
## 2             Albania      71          0.985          0.983 0.99974
## 3             Algeria      71          0.967          0.962 0.99944
## 4             Andorra      82          0.997          0.996 0.99983
## 5              Angola      41          0.846          0.740 0.99656
## 6 Antigua and Barbuda      73          0.990          0.989 0.99991
##        PropMD      PropRN PersExp GovtExp TotExp
## 1 0.000228841 0.000572294      20      92    112
## 2 0.001143127 0.004614439     169    3128   3297
## 3 0.001060478 0.002091362     108    5184   5292
## 4 0.003297297 0.003500000    2589  169725 172314
## 5 0.000070400 0.001146162      36    1620   1656
## 6 0.000142857 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.

who_df %>% 
  ggplot(aes(TotExp, LifeExp)) + 
  geom_point() +
  geom_smooth(method = lm, se = F) +
  theme_minimal()

who_df_lm <- lm(LifeExp ~ TotExp, data = who_df)
who_df_lm
## 
## Call:
## lm(formula = LifeExp ~ TotExp, data = who_df)
## 
## Coefficients:
## (Intercept)       TotExp  
##   6.475e+01    6.297e-05
summary(who_df_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

F-statistic of the above model is 65.26 and it’s p-value is less than 5%, which indicates we can reject the null hypothesis that there is a relationship between TotalExp and LifeExp. R-square is 0.26, which indicates that the model explains only 26% of the variance in data. The standard error is 8 times smaller than the corresponding coefficient. Overall, I would say this the assumptions of simple linear regression are not met.


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?”

x <- who_df$TotExp^0.06
y <- who_df$LifeExp^4.6

who_df %>% 
  ggplot(aes(x, y)) + 
  geom_point() +
  geom_smooth(method = lm, se = F) +
  theme_minimal()

who_df_lm <- lm(y ~ x, data = who_df)
who_df_lm
## 
## Call:
## lm(formula = y ~ x, data = who_df)
## 
## Coefficients:
## (Intercept)            x  
##  -736527909    620060216
summary(who_df_lm)
## 
## Call:
## lm(formula = y ~ x, data = who_df)
## 
## 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 ***
## x            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

F-statistic of the above model is 507.7 and it’s p-value is less than 5%, which indicates we can reject the null hypothesis that there is a relationship between transformed TotalExp and LifeExp. R-square is 0.73, which indicates that the model explains only 73% of the variance in data. The standard error is 23 times smaller than the corresponding coefficient. We an improved r-squared value, I would say this model is better.


Using the results from 2, forecast life expectancy when TotExp^.06 = 1.5. Then forecast life expectancy when TotExp^.06 = 2.5.

x <- who_df$TotExp^0.06
values <- data.frame(x = c(1.5, 2.5))
predict(who_df_lm, values)^(1/4.6) # we have to transform both variable
##        1        2 
## 63.31153 86.50645

Forecasted life expectancy when TotExp^.06 = 1.5 is 63.31 years old and forecasted life expectancy when TotExp^.06 = 2.5 is 86.51 years old.


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_df_lm <- lm(LifeExp ~ PropMD + TotExp + (TotExp * PropMD), data = who_df)
who_df_lm
## 
## Call:
## lm(formula = LifeExp ~ PropMD + TotExp + (TotExp * PropMD), data = who_df)
## 
## Coefficients:
##   (Intercept)         PropMD         TotExp  PropMD:TotExp  
##     6.277e+01      1.497e+03      7.233e-05     -6.026e-03
summary(who_df_lm)
## 
## Call:
## lm(formula = LifeExp ~ PropMD + TotExp + (TotExp * PropMD), 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

F-statistic of the above model is 34.49 and it’s p-value is less than 5%, which indicates we can reject the null hypothesis of the aformentioned multiple regression model. R-square is 0.36, which indicates that the model explains only 36% of the variance in data. However, the standard error has improved slightly. Overall, I would say this model is not so good because of small f-statistics p-value and r-squared value.


Forecast LifeExp when PropMD=.03 and TotExp = 14. Does this forecast seem realistic? Why or why not?

values <- data.frame(PropMD = 0.03, TotExp = 14)
predict(who_df_lm, values)
##       1 
## 107.696

The forcast doesn’t seem realistic because the model is not a good model. Also, the highest age in the dataset is 83 years old.