Also covered using Python and Stata
library(wooldridge)
library(psych)
library(stargazer)
library(car)
bwght_full <- lm(lbwght ~ cigs + lfaminc + 1, data=bwght)
x <- nobs(bwght_full)/2
bwght2 <- bwght[1:x, ]
birth_half <- lm(lbwght ~ cigs + lfaminc + 1, data=bwght2)
stargazer(bwght_full, birth_half, type="text", align=TRUE)
##
## ====================================================================
## Dependent variable:
## ------------------------------------------------
## lbwght
## (1) (2)
## --------------------------------------------------------------------
## cigs -0.004*** -0.005***
## (0.001) (0.001)
##
## lfaminc 0.016*** 0.019**
## (0.006) (0.008)
##
## Constant 4.719*** 4.706***
## (0.018) (0.027)
##
## --------------------------------------------------------------------
## Observations 1,388 694
## R2 0.026 0.030
## Adjusted R2 0.024 0.027
## Residual Std. Error 0.188 (df = 1385) 0.196 (df = 691)
## F Statistic 18.310*** (df = 2; 1385) 10.519*** (df = 2; 691)
## ====================================================================
## Note: *p<0.1; **p<0.05; ***p<0.01
crime_ols <- lm(narr86 ~ pcnv + avgsen + tottime + ptime86 + qemp86 + 1, data=crime1)
crime_ols_r <- lm(narr86 ~ pcnv + ptime86 + qemp86 + 1, data=crime1)
stargazer(crime_ols, crime_ols_r, type="text", align=TRUE)
##
## =====================================================================
## Dependent variable:
## -------------------------------------------------
## narr86
## (1) (2)
## ---------------------------------------------------------------------
## pcnv -0.151*** -0.150***
## (0.041) (0.041)
##
## avgsen -0.007
## (0.012)
##
## tottime 0.012
## (0.010)
##
## ptime86 -0.039*** -0.034***
## (0.009) (0.009)
##
## qemp86 -0.103*** -0.104***
## (0.010) (0.010)
##
## Constant 0.706*** 0.712***
## (0.033) (0.033)
##
## ---------------------------------------------------------------------
## Observations 2,725 2,725
## R2 0.043 0.041
## Adjusted R2 0.041 0.040
## Residual Std. Error 0.841 (df = 2719) 0.842 (df = 2721)
## F Statistic 24.289*** (df = 5; 2719) 39.096*** (df = 3; 2721)
## =====================================================================
## Note: *p<0.1; **p<0.05; ***p<0.01
linearHypothesis(crime_ols, c("avgsen = 0", "tottime =0"))
## Linear hypothesis test
##
## Hypothesis:
## avgsen = 0
## tottime = 0
##
## Model 1: restricted model
## Model 2: narr86 ~ pcnv + avgsen + tottime + ptime86 + qemp86 + 1
##
## Res.Df RSS Df Sum of Sq F Pr(>F)
## 1 2721 1927.3
## 2 2719 1924.4 2 2.879 2.0339 0.131
resid <- resid(crime_ols_r)
resid_ols <- lm(resid ~ pcnv + avgsen + tottime + ptime86 + qemp86 + 1, data=crime1)
summary(resid_ols)
##
## Call:
## lm(formula = resid ~ pcnv + avgsen + tottime + ptime86 + qemp86 +
## 1, data = crime1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.9869 -0.4243 -0.2937 0.3514 11.4409
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.005711 0.033152 -0.172 0.863
## pcnv -0.001297 0.040855 -0.032 0.975
## avgsen -0.007049 0.012412 -0.568 0.570
## tottime 0.012095 0.009577 1.263 0.207
## ptime86 -0.004839 0.008917 -0.543 0.587
## qemp86 0.001022 0.010397 0.098 0.922
##
## Residual standard error: 0.8413 on 2719 degrees of freedom
## Multiple R-squared: 0.001494, Adjusted R-squared: -0.0003423
## F-statistic: 0.8136 on 5 and 2719 DF, p-value: 0.5398
LM <- summary(resid_ols)$r.squared * nobs(resid_ols) # LM = N*Rsq
LM
## [1] 4.070729