library(haven)
library(stargazer)
library(plm)
library(dplyr)
library(AER)
Estimation results wage equation, males 1980-1987
df <- read_dta("Data/males.dta")
df$EXPER2 <- df$EXPER**2
df <- pdata.frame(df, index = c("NR", "YEAR"))
wBetween <- plm(WAGE ~ SCHOOL + EXPER + EXPER2 + UNION + MAR + BLACK + HISP +
PUB, model="between", data=df)
wFixed = plm(WAGE ~ SCHOOL + EXPER + EXPER2 + UNION + MAR + BLACK + HISP +
PUB, model="within", data=df)
wOLS <- plm(WAGE ~ SCHOOL + EXPER +EXPER2 + UNION + MAR + BLACK + HISP + PUB,
model="pooling", data=df)
wRandom <- plm(WAGE ~ SCHOOL + EXPER + EXPER2 + UNION + MAR + BLACK + HISP + PUB, model="random", data=df, effect = "twoway")
stargazer(wBetween, wFixed, wOLS, wRandom, column.labels = c("Between", "FE", "OLS", "RE"), keep.stat = c("N", "rsq"), no.space = T, type="text")
##
## ====================================================
## Dependent variable:
## ---------------------------------------
## WAGE
## Between FE OLS RE
## (1) (2) (3) (4)
## ----------------------------------------------------
## SCHOOL 0.095*** 0.099*** 0.100***
## (0.011) (0.005) (0.009)
## EXPER -0.050 0.116*** 0.089*** 0.116***
## (0.050) (0.008) (0.010) (0.009)
## EXPER2 0.005 -0.004*** -0.003*** -0.004***
## (0.003) (0.001) (0.001) (0.001)
## UNION 0.274*** 0.081*** 0.180*** 0.105***
## (0.047) (0.019) (0.017) (0.018)
## MAR 0.145*** 0.045** 0.108*** 0.063***
## (0.041) (0.018) (0.016) (0.017)
## BLACK -0.139*** -0.144*** -0.144***
## (0.049) (0.024) (0.048)
## HISP 0.005 0.016 0.020
## (0.043) (0.021) (0.043)
## PUB -0.056 0.035 0.004 0.030
## (0.109) (0.039) (0.037) (0.036)
## Constant 0.490** -0.034 -0.098
## (0.221) (0.065) (0.116)
## ----------------------------------------------------
## Observations 545 4,360 4,360 4,360
## R2 0.220 0.178 0.187 0.105
## ====================================================
## Note: *p<0.1; **p<0.05; ***p<0.01
OLS, within and OLS-FD estimation results dynamic model
df <- read_dta("Data/debtratio.dta") #Unbalanced Panel Data
tlag <- function(x, n = 1L, time) {
index <- match(time - n, time, incomparables = NA)
x[index]
}
df <- df %>%
group_by(gvkey) %>%
mutate(mdrlag = tlag(mdr, 1, time = yeara),
mdrlag2 = tlag(mdr, 2, time = yeara),
dmdr = mdr - tlag(mdr, 1, time = yeara),
dmdrlag = mdrlag - tlag(mdrlag, 1, time = yeara),
dmdrlag2 = tlag(dmdrlag, 1, time = yeara),
dlagebit_ta = lagebit_ta - tlag(lagebit_ta, 1, time = yeara),
dlagmb = lagmb - tlag(lagmb, 1, time = yeara),
dlagdep_ta = lagdep_ta - tlag(lagdep_ta, 1, time = yeara),
dlaglnta = laglnta - tlag(laglnta, 1, time = yeara),
dlagfa_ta = lagfa_ta - tlag(lagfa_ta, 1, time = yeara),
dlagrd_dum = lagrd_dum - tlag(lagrd_dum, 1, time = yeara),
dlagrd_ta = lagrd_ta - tlag(lagrd_ta, 1, time = yeara),
dlagindmedian = lagindmedian - tlag(lagindmedian, 1, time = yeara),
dlagrated = lagrated - tlag(lagrated, 1, time = yeara)
)
form <- mdr ~ mdrlag + lagebit_ta + lagmb + lagdep_ta + laglnta + lagfa_ta + lagrd_dum + lagrd_ta + lagindmedian + lagrated
summary(OLS <- lm(form, data=df))
##
## Call:
## lm(formula = form, data = df)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.78380 -0.05925 -0.02252 0.05580 0.76923
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.0581818 0.0108941 5.341 9.36e-08 ***
## mdrlag 0.8835036 0.0045568 193.888 < 2e-16 ***
## lagebit_ta -0.0323378 0.0057074 -5.666 1.48e-08 ***
## lagmb 0.0016432 0.0007814 2.103 0.035484 *
## lagdep_ta -0.2605179 0.0334661 -7.785 7.34e-15 ***
## laglnta -0.0006704 0.0006057 -1.107 0.268405
## lagfa_ta 0.0201215 0.0051479 3.909 9.31e-05 ***
## lagrd_dum 0.0068896 0.0020229 3.406 0.000661 ***
## lagrd_ta -0.1202051 0.0142376 -8.443 < 2e-16 ***
## lagindmedian 0.0321225 0.0091084 3.527 0.000422 ***
## lagrated 0.0071341 0.0029114 2.450 0.014280 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.1253 on 19562 degrees of freedom
## (8189 observations deleted due to missingness)
## Multiple R-squared: 0.7409, Adjusted R-squared: 0.7408
## F-statistic: 5595 on 10 and 19562 DF, p-value: < 2.2e-16
summary(Within <- plm(form, model="within", data=df))
## Oneway (individual) effect Within Model
##
## Call:
## plm(formula = form, data = df, model = "within")
##
## Unbalanced Panel: n = 3777, T = 1-15, N = 19573
##
## Residuals:
## Min. 1st Qu. Median 3rd Qu. Max.
## -0.6174822 -0.0493743 -0.0020841 0.0431051 0.5756810
##
## Coefficients:
## Estimate Std. Error t-value Pr(>|t|)
## mdrlag 5.3498e-01 7.6646e-03 69.7992 < 2.2e-16 ***
## lagebit_ta -5.0033e-02 8.0860e-03 -6.1876 6.260e-10 ***
## lagmb 2.2776e-03 1.1358e-03 2.0052 0.04495 *
## lagdep_ta -1.2395e-01 5.7544e-02 -2.1541 0.03125 *
## laglnta 3.8030e-02 2.0593e-03 18.4678 < 2.2e-16 ***
## lagfa_ta 5.9344e-02 1.2635e-02 4.6969 2.664e-06 ***
## lagrd_dum 5.9768e-05 5.8840e-03 0.0102 0.99190
## lagrd_ta -6.5676e-02 2.7093e-02 -2.4241 0.01536 *
## lagindmedian 1.6722e-01 1.8959e-02 8.8201 < 2.2e-16 ***
## lagrated 2.0590e-02 4.6521e-03 4.4259 9.670e-06 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Total Sum of Squares: 307.38
## Residual Sum of Squares: 202.75
## R-Squared: 0.3404
## Adj. R-Squared: 0.1822
## F-statistic: 814.653 on 10 and 15786 DF, p-value: < 2.22e-16
summary(FD <- plm(dmdr ~ dmdrlag + dlagebit_ta + dlagmb + dlagdep_ta + dlaglnta + dlagfa_ta + dlagrd_dum + dlagrd_ta + dlagindmedian + dlagrated +0, model="pooling", data=df))
## Pooling Model
##
## Call:
## plm(formula = dmdr ~ dmdrlag + dlagebit_ta + dlagmb + dlagdep_ta +
## dlaglnta + dlagfa_ta + dlagrd_dum + dlagrd_ta + dlagindmedian +
## dlagrated + 0, data = df, model = "pooling")
##
## Unbalanced Panel: n = 2996, T = 1-14, N = 15039
##
## Residuals:
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## -0.83303 -0.04583 -0.00160 0.00812 0.05930 0.77226
##
## Coefficients:
## Estimate Std. Error t-value Pr(>|t|)
## dmdrlag -0.1104090 0.0093859 -11.7633 < 2.2e-16 ***
## dlagebit_ta -0.0460275 0.0076391 -6.0252 1.728e-09 ***
## dlagmb 0.0027553 0.0011577 2.3800 0.017327 *
## dlagdep_ta 0.1837711 0.0654743 2.8068 0.005011 **
## dlaglnta 0.0727863 0.0038149 19.0796 < 2.2e-16 ***
## dlagfa_ta 0.1012892 0.0157913 6.4143 1.457e-10 ***
## dlagrd_dum -0.0173716 0.0078249 -2.2200 0.026430 *
## dlagrd_ta -0.0516802 0.0278544 -1.8554 0.063563 .
## dlagindmedian 0.1787605 0.0251423 7.1099 1.213e-12 ***
## dlagrated 0.0114568 0.0063668 1.7995 0.071966 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Total Sum of Squares: 238.04
## Residual Sum of Squares: 232.43
## R-Squared: 0.027872
## Adj. R-Squared: 0.02729
## F-statistic: 36.286 on 10 and 15029 DF, p-value: < 2.22e-16
IV and GMM estimation results dynamic model
summary(AH1 <- ivreg(dmdr ~ 0 + dmdrlag + dlagebit_ta + dlagmb + dlagdep_ta + dlaglnta + dlagfa_ta + dlagrd_dum + dlagrd_ta + dlagindmedian + dlagrated | . - dmdrlag + dmdrlag2, data=df))
##
## Call:
## ivreg(formula = dmdr ~ 0 + dmdrlag + dlagebit_ta + dlagmb + dlagdep_ta +
## dlaglnta + dlagfa_ta + dlagrd_dum + dlagrd_ta + dlagindmedian +
## dlagrated | . - dmdrlag + dmdrlag2, data = df)
##
## Residuals:
## Min 1Q Median 3Q Max
## -5.09229 -0.42934 0.02599 0.42502 8.68711
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## dmdrlag 8.55515 8.57745 0.997 0.319
## dlagebit_ta 1.48062 1.51993 0.974 0.330
## dlagmb 0.29550 0.28919 1.022 0.307
## dlagdep_ta -2.43942 2.61657 -0.932 0.351
## dlaglnta -0.66857 0.73741 -0.907 0.365
## dlagfa_ta -1.33701 1.43235 -0.933 0.351
## dlagrd_dum -0.02319 0.06878 -0.337 0.736
## dlagrd_ta 1.06815 1.14790 0.931 0.352
## dlagindmedian -4.11835 4.26046 -0.967 0.334
## dlagrated -0.33763 0.35064 -0.963 0.336
##
## Residual standard error: 0.924 on 11722 degrees of freedom
## Multiple R-Squared: -55.61, Adjusted R-squared: -55.66
## Wald test: 0.6109 on 10 and 11722 DF, p-value: 0.8059
summary(AH2 <- ivreg(dmdr ~ 0 + dmdrlag + dlagebit_ta + dlagmb + dlagdep_ta + dlaglnta + dlagfa_ta + dlagrd_dum + dlagrd_ta + dlagindmedian + dlagrated | . - dmdrlag + mdrlag2, data=df))
##
## Call:
## ivreg(formula = dmdr ~ 0 + dmdrlag + dlagebit_ta + dlagmb + dlagdep_ta +
## dlaglnta + dlagfa_ta + dlagrd_dum + dlagrd_ta + dlagindmedian +
## dlagrated | . - dmdrlag + mdrlag2, data = df)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.37975 -0.07620 0.00654 0.08633 1.09717
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## dmdrlag 1.124607 0.313929 3.582 0.000342 ***
## dlagebit_ta 0.162941 0.054237 3.004 0.002667 **
## dlagmb 0.039781 0.009555 4.164 3.15e-05 ***
## dlagdep_ta -0.150639 0.128208 -1.175 0.240028
## dlaglnta -0.031919 0.027172 -1.175 0.240128
## dlagfa_ta -0.123924 0.061705 -2.008 0.044627 *
## dlagrd_dum -0.020626 0.011509 -1.792 0.073123 .
## dlagrd_ta 0.099272 0.056028 1.772 0.076445 .
## dlagindmedian -0.462765 0.167036 -2.770 0.005605 **
## dlagrated -0.041951 0.016468 -2.548 0.010860 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.1824 on 15029 degrees of freedom
## Multiple R-Squared: -1.082, Adjusted R-squared: -1.083
## Wald test: 18.31 on 10 and 15029 DF, p-value: < 2.2e-16