4 Multiple Regression Analysis: Inference
Also covered using Python and Stata
4.1 Example 4.1 Wage equation
rm(list = ls())
library(wooldridge)
library(psych)
library(stargazer)
library(car)
options(width=120)
wage_mols <- lm(lwage ~ educ + exper + tenure + 1, data=wage1)
stargazer(wage_mols, type="text", align=TRUE)
##
## ===============================================
## Dependent variable:
## ---------------------------
## lwage
## -----------------------------------------------
## educ 0.092***
## (0.007)
##
## exper 0.004**
## (0.002)
##
## tenure 0.022***
## (0.003)
##
## Constant 0.284***
## (0.104)
##
## -----------------------------------------------
## Observations 526
## R2 0.316
## Adjusted R2 0.312
## Residual Std. Error 0.441 (df = 522)
## F Statistic 80.391*** (df = 3; 522)
## ===============================================
## Note: *p<0.1; **p<0.05; ***p<0.01
4.2 Example 4.2. Student performance
math_lin_lin <- lm(math10 ~ totcomp + staff + enroll + 1, data=meap93)
stargazer(math_lin_lin, type="text", align=TRUE)
##
## ===============================================
## Dependent variable:
## ---------------------------
## math10
## -----------------------------------------------
## totcomp 0.0005***
## (0.0001)
##
## staff 0.048
## (0.040)
##
## enroll -0.0002
## (0.0002)
##
## Constant 2.274
## (6.114)
##
## -----------------------------------------------
## Observations 408
## R2 0.054
## Adjusted R2 0.047
## Residual Std. Error 10.244 (df = 404)
## F Statistic 7.697*** (df = 3; 404)
## ===============================================
## Note: *p<0.1; **p<0.05; ***p<0.01
math_lin_log <- lm(math10 ~ ltotcomp + lstaff + lenroll + 1, data=meap93)
stargazer(math_lin_log, type="text", align=TRUE)
##
## ===============================================
## Dependent variable:
## ---------------------------
## math10
## -----------------------------------------------
## ltotcomp 21.155***
## (4.056)
##
## lstaff 3.980
## (4.190)
##
## lenroll -1.268*
## (0.693)
##
## Constant -207.665***
## (48.703)
##
## -----------------------------------------------
## Observations 408
## R2 0.065
## Adjusted R2 0.058
## Residual Std. Error 10.182 (df = 404)
## F Statistic 9.420*** (df = 3; 404)
## ===============================================
## Note: *p<0.1; **p<0.05; ***p<0.01
##
## ===========================================================
## Dependent variable:
## ----------------------------
## math10
## (1) (2)
## -----------------------------------------------------------
## totcomp 0.0005***
## (0.0001)
##
## staff 0.048
## (0.040)
##
## enroll -0.0002
## (0.0002)
##
## ltotcomp 21.155***
## (4.056)
##
## lstaff 3.980
## (4.190)
##
## lenroll -1.268*
## (0.693)
##
## Constant 2.274 -207.665***
## (6.114) (48.703)
##
## -----------------------------------------------------------
## Observations 408 408
## R2 0.054 0.065
## Adjusted R2 0.047 0.058
## Residual Std. Error (df = 404) 10.244 10.182
## F Statistic (df = 3; 404) 7.697*** 9.420***
## ===========================================================
## Note: *p<0.1; **p<0.05; ***p<0.01
4.3 Example 4.3. Collage GPA
gpa_mols <- lm(colGPA ~ hsGPA + ACT + skipped + 1, data=gpa1)
stargazer(gpa_mols, type="text", align=TRUE)
##
## ===============================================
## Dependent variable:
## ---------------------------
## colGPA
## -----------------------------------------------
## hsGPA 0.412***
## (0.094)
##
## ACT 0.015
## (0.011)
##
## skipped -0.083***
## (0.026)
##
## Constant 1.390***
## (0.332)
##
## -----------------------------------------------
## Observations 141
## R2 0.234
## Adjusted R2 0.217
## Residual Std. Error 0.329 (df = 137)
## F Statistic 13.919*** (df = 3; 137)
## ===============================================
## Note: *p<0.1; **p<0.05; ***p<0.01
4.4 Example 4.4. Campus crime & enrollment
##
## ===============================================
## Dependent variable:
## ---------------------------
## lcrime
## -----------------------------------------------
## lenroll 1.270***
## (0.110)
##
## Constant -6.631***
## (1.034)
##
## -----------------------------------------------
## Observations 97
## R2 0.585
## Adjusted R2 0.580
## Residual Std. Error 0.895 (df = 95)
## F Statistic 133.792*** (df = 1; 95)
## ===============================================
## Note: *p<0.1; **p<0.05; ***p<0.01
4.5 Example 4.5. Housing prices
ldist <- log(hprice2$dist)
hprice_mols <- lm(lprice ~ lnox +ldist + rooms + stratio + 1, data=hprice2)
stargazer(hprice_mols, type="text", align=TRUE)
##
## ===============================================
## Dependent variable:
## ---------------------------
## lprice
## -----------------------------------------------
## lnox -0.954***
## (0.117)
##
## ldist -0.134***
## (0.043)
##
## rooms 0.255***
## (0.019)
##
## stratio -0.052***
## (0.006)
##
## Constant 11.084***
## (0.318)
##
## -----------------------------------------------
## Observations 506
## R2 0.584
## Adjusted R2 0.581
## Residual Std. Error 0.265 (df = 501)
## F Statistic 175.855*** (df = 4; 501)
## ===============================================
## Note: *p<0.1; **p<0.05; ***p<0.01
4.6 Example 4.6. Participation rates in 401k plans
pension_mols <- lm(prate ~ mrate + age + totemp + 1, data=k401k)
stargazer(pension_mols, type="text", align=TRUE)
##
## ===============================================
## Dependent variable:
## ---------------------------
## prate
## -----------------------------------------------
## mrate 5.442***
## (0.524)
##
## age 0.269***
## (0.045)
##
## totemp -0.0001***
## (0.00004)
##
## Constant 80.294***
## (0.778)
##
## -----------------------------------------------
## Observations 1,534
## R2 0.100
## Adjusted R2 0.098
## Residual Std. Error 15.878 (df = 1530)
## F Statistic 56.379*** (df = 3; 1530)
## ===============================================
## Note: *p<0.1; **p<0.05; ***p<0.01
4.7 Example 4.7. Job training
(Only for the year 1987 and for nonunionized firms)
jtrain87 <- subset(jtrain, jtrain$year==1987 & jtrain$union==0)
job_mols <- lm(lscrap ~ hrsemp + lsales + lemploy + 1, data=jtrain87)
stargazer(job_mols, type="text", align=TRUE)
##
## ===============================================
## Dependent variable:
## ---------------------------
## lscrap
## -----------------------------------------------
## hrsemp -0.029
## (0.023)
##
## lsales -0.962**
## (0.453)
##
## lemploy 0.761*
## (0.407)
##
## Constant 12.458**
## (5.687)
##
## -----------------------------------------------
## Observations 29
## R2 0.262
## Adjusted R2 0.174
## Residual Std. Error 1.376 (df = 25)
## F Statistic 2.965* (df = 3; 25)
## ===============================================
## Note: *p<0.1; **p<0.05; ***p<0.01
4.8 Example 4.8. RD and Sales
lrd_mols <- lm(lrd ~ lsales + profmarg + 1, data=rdchem)
stargazer(lrd_mols, type="text", align=TRUE)
##
## ===============================================
## Dependent variable:
## ---------------------------
## lrd
## -----------------------------------------------
## lsales 1.084***
## (0.060)
##
## profmarg 0.022
## (0.013)
##
## Constant -4.378***
## (0.468)
##
## -----------------------------------------------
## Observations 32
## R2 0.918
## Adjusted R2 0.912
## Residual Std. Error 0.514 (df = 29)
## F Statistic 162.231*** (df = 2; 29)
## ===============================================
## Note: *p<0.1; **p<0.05; ***p<0.01
4.9 Example 4.9. Parent’s education on birth weight
birth_mols <- lm(bwght ~ cigs + parity + faminc + motheduc + fatheduc + 1, data=bwght)
birth_ols <- lm(bwght ~ cigs + parity + faminc + 1, data=bwght)
stargazer(birth_mols, birth_ols, type="text", align=TRUE)
##
## ====================================================================
## Dependent variable:
## ------------------------------------------------
## bwght
## (1) (2)
## --------------------------------------------------------------------
## cigs -0.596*** -0.477***
## (0.110) (0.092)
##
## parity 1.788*** 1.616***
## (0.659) (0.604)
##
## faminc 0.056 0.098***
## (0.037) (0.029)
##
## motheduc -0.370
## (0.320)
##
## fatheduc 0.472*
## (0.283)
##
## Constant 114.524*** 114.214***
## (3.728) (1.469)
##
## --------------------------------------------------------------------
## Observations 1,191 1,388
## R2 0.039 0.035
## Adjusted R2 0.035 0.033
## Residual Std. Error 19.789 (df = 1185) 20.018 (df = 1384)
## F Statistic 9.553*** (df = 5; 1185) 16.633*** (df = 3; 1384)
## ====================================================================
## Note: *p<0.1; **p<0.05; ***p<0.01
## Linear hypothesis test
##
## Hypothesis:
## motheduc = 0
## fatheduc = 0
##
## Model 1: restricted model
## Model 2: bwght ~ cigs + parity + faminc + motheduc + fatheduc + 1
##
## Res.Df RSS Df Sum of Sq F Pr(>F)
## 1 1187 465167
## 2 1185 464041 2 1125.7 1.4373 0.238
4.10 Exaploring further example 4.5.
attend_ols_r <- lm(atndrte ~ priGPA + 1, data=attend)
attend_ols <- lm(atndrte ~ priGPA + ACT + 1, data=attend)
stargazer(attend_ols_r, attend_ols, type="text", align=TRUE)
##
## =====================================================================
## Dependent variable:
## -------------------------------------------------
## atndrte
## (1) (2)
## ---------------------------------------------------------------------
## priGPA 13.369*** 17.261***
## (1.087) (1.083)
##
## ACT -1.717***
## (0.169)
##
## Constant 47.127*** 75.700***
## (2.873) (3.884)
##
## ---------------------------------------------------------------------
## Observations 680 680
## R2 0.182 0.291
## Adjusted R2 0.181 0.288
## Residual Std. Error 15.425 (df = 678) 14.379 (df = 677)
## F Statistic 151.347*** (df = 1; 678) 138.651*** (df = 2; 677)
## =====================================================================
## Note: *p<0.1; **p<0.05; ***p<0.01
4.11 Example 4.10. Salary-pension tradeoff for teachers
meap_ols1 <- lm(lsalary ~ bensal + 1, data=meap93)
meap_ols2 <- lm(lsalary ~ bensal + lenroll + lstaff + 1, data=meap93)
meap_ols3 <- lm(lsalary ~ bensal + lenroll + lstaff + droprate + gradrate + 1, data=meap93)
stargazer(meap_ols1, meap_ols2, meap_ols3, type="text", align=TRUE)
##
## ===========================================================================================
## Dependent variable:
## -----------------------------------------------------------------------
## lsalary
## (1) (2) (3)
## -------------------------------------------------------------------------------------------
## bensal -0.825*** -0.605*** -0.589***
## (0.200) (0.165) (0.165)
##
## lenroll 0.087*** 0.088***
## (0.007) (0.007)
##
## lstaff -0.222*** -0.218***
## (0.050) (0.050)
##
## droprate -0.0003
## (0.002)
##
## gradrate 0.001
## (0.001)
##
## Constant 10.523*** 10.844*** 10.738***
## (0.042) (0.252) (0.258)
##
## -------------------------------------------------------------------------------------------
## Observations 408 408 408
## R2 0.040 0.353 0.361
## Adjusted R2 0.038 0.348 0.353
## Residual Std. Error 0.151 (df = 406) 0.125 (df = 404) 0.124 (df = 402)
## F Statistic 17.050*** (df = 1; 406) 73.386*** (df = 3; 404) 45.428*** (df = 5; 402)
## ===========================================================================================
## Note: *p<0.1; **p<0.05; ***p<0.01