# 10 Basic Linear Unobserved Effects Panel Data Models

Also available in Stata and Python versions

## 10.1 Example 10.4

``````library(wooldridge)
library(stargazer)
library(AER)
library(plm)
library(plyr)``````

RE Estimation of the Effects of Job Training Grants)

``````jtrainP <- pdata.frame(jtrain, index = c("fcode", "year"))
summary(RE <- plm(lscrap ~ d88 + d89 + union + grant + grant_1, data = jtrainP, model = "random"))``````
``````## Oneway (individual) effect Random Effect Model
##    (Swamy-Arora's transformation)
##
## Call:
## plm(formula = lscrap ~ d88 + d89 + union + grant + grant_1, data = jtrainP,
##     model = "random")
##
## Balanced Panel: n = 54, T = 3, N = 162
##
## Effects:
##                  var std.dev share
## idiosyncratic 0.2477  0.4977 0.114
## individual    1.9322  1.3900 0.886
## theta: 0.7975
##
## Residuals:
##      Min.   1st Qu.    Median   3rd Qu.      Max.
## -2.546798 -0.223892  0.040554  0.255287  1.549792
##
## Coefficients:
##              Estimate Std. Error z-value Pr(>|z|)
## (Intercept)  0.414833   0.243432  1.7041  0.08836 .
## d88         -0.093452   0.109156 -0.8561  0.39192
## d89         -0.269834   0.131650 -2.0496  0.04040 *
## union        0.547802   0.410625  1.3341  0.18218
## grant       -0.214696   0.147784 -1.4528  0.14629
## grant_1     -0.377070   0.205352 -1.8362  0.06633 .
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Total Sum of Squares:    45.509
## Residual Sum of Squares: 38.798
## R-Squared:      0.14748
## Adj. R-Squared: 0.12015
## Chisq: 26.9867 on 5 DF, p-value: 5.7383e-05``````
``linearHypothesis(RE, c("grant=0","grant_1=0"))``
``````## Linear hypothesis test
##
## Hypothesis:
## grant = 0
## grant_1 = 0
##
## Model 1: restricted model
## Model 2: lscrap ~ d88 + d89 + union + grant + grant_1
##
##   Res.Df Df  Chisq Pr(>Chisq)
## 1    158
## 2    156  2 3.6645     0.1601``````

## 10.2 Example 10.5

FE Estimation of the Effects of Job Training Grants

``summary(FE <- plm(lscrap ~ 1 + d88 + d89 + union + grant + grant_1, data = subset(jtrainP), model = "within"))``
``````## Oneway (individual) effect Within Model
##
## Call:
## plm(formula = lscrap ~ 1 + d88 + d89 + union + grant + grant_1,
##     data = subset(jtrainP), model = "within")
##
## Balanced Panel: n = 54, T = 3, N = 162
##
## Residuals:
##      Min.   1st Qu.    Median   3rd Qu.      Max.
## -2.286936 -0.112387 -0.017841  0.144272  1.426674
##
## Coefficients:
##          Estimate Std. Error t-value Pr(>|t|)
## d88     -0.080216   0.109475 -0.7327  0.46537
## d89     -0.247203   0.133218 -1.8556  0.06634 .
## grant   -0.252315   0.150629 -1.6751  0.09692 .
## grant_1 -0.421590   0.210200 -2.0057  0.04749 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Total Sum of Squares:    32.25
## Residual Sum of Squares: 25.766
## R-Squared:      0.20105
## Adj. R-Squared: -0.23684
## F-statistic: 6.54259 on 4 and 104 DF, p-value: 9.7741e-05``````
``````FE2 <- plm(lscrap ~ 1 + d88 + d89 + union , data = subset(jtrainP), model = "within")

pFtest(FE, FE2)``````
``````##
##  F test for individual effects
##
## data:  lscrap ~ 1 + d88 + d89 + union + grant + grant_1
## F = 2.2294, df1 = 2, df2 = 104, p-value = 0.1127
## alternative hypothesis: significant effects``````

## 10.3 Example 10.5+

Continued pp.311

``summary(FEr <- plm(lscrap ~ d88 + d89 + union + grant + grant_1, data = subset(jtrainP), model = "within")) ``
``````## Oneway (individual) effect Within Model
##
## Call:
## plm(formula = lscrap ~ d88 + d89 + union + grant + grant_1, data = subset(jtrainP),
##     model = "within")
##
## Balanced Panel: n = 54, T = 3, N = 162
##
## Residuals:
##      Min.   1st Qu.    Median   3rd Qu.      Max.
## -2.286936 -0.112387 -0.017841  0.144272  1.426674
##
## Coefficients:
##          Estimate Std. Error t-value Pr(>|t|)
## d88     -0.080216   0.109475 -0.7327  0.46537
## d89     -0.247203   0.133218 -1.8556  0.06634 .
## grant   -0.252315   0.150629 -1.6751  0.09692 .
## grant_1 -0.421590   0.210200 -2.0057  0.04749 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Total Sum of Squares:    32.25
## Residual Sum of Squares: 25.766
## R-Squared:      0.20105
## Adj. R-Squared: -0.23684
## F-statistic: 6.54259 on 4 and 104 DF, p-value: 9.7741e-05``````
``coeftest(FEr, vcovHC(FEr, type = "HC3"))``
``````##
## t test of coefficients:
##
##          Estimate Std. Error t value Pr(>|t|)
## d88     -0.080216   0.097776 -0.8204  0.41387
## d89     -0.247203   0.196769 -1.2563  0.21182
## grant   -0.252315   0.143810 -1.7545  0.08229 .
## grant_1 -0.421590   0.283686 -1.4861  0.14028
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1``````

## 10.4 Example 10.6

FD Estimation of the Effects of Job Training Grants

``````jtrainP<- subset(jtrainP, !is.na(clscrap))
summary(FD <- lm(clscrap ~ d89 + cgrant + cgrant_1, data=jtrainP)) ``````
``````##
## Call:
## lm(formula = clscrap ~ d89 + cgrant + cgrant_1, data = jtrainP)
##
## Residuals:
##      Min       1Q   Median       3Q      Max
## -3.12737 -0.13682  0.07311  0.26191  2.48850
##
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.09061    0.09097  -0.996   0.3216
## d89         -0.09621    0.12545  -0.767   0.4449
## cgrant      -0.22278    0.13074  -1.704   0.0914 .
## cgrant_1    -0.35125    0.23508  -1.494   0.1382
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.5767 on 104 degrees of freedom
## Multiple R-squared:  0.03652,    Adjusted R-squared:  0.008725
## F-statistic: 1.314 on 3 and 104 DF,  p-value: 0.2739``````
``linearHypothesis(FD, c("cgrant=0","cgrant_1=0")) #Test``
``````## Linear hypothesis test
##
## Hypothesis:
## cgrant = 0
## cgrant_1 = 0
##
## Model 1: restricted model
## Model 2: clscrap ~ d89 + cgrant + cgrant_1
##
##   Res.Df    RSS Df Sum of Sq      F Pr(>F)
## 1    106 35.608
## 2    104 34.590  2    1.0174 1.5295 0.2215``````
``coeftest(FD, vcovHC(FD, type = "HC1")) #Robust``
``````##
## t test of coefficients:
##
##              Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.090607   0.084692 -1.0698  0.28717
## d89         -0.096208   0.128468 -0.7489  0.45562
## cgrant      -0.222781   0.123865 -1.7986  0.07499 .
## cgrant_1    -0.351246   0.247722 -1.4179  0.15921
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1``````

## 10.5 Example 10.6+

continued pp.320

``````u <- resid(FD <- lm(clscrap ~ d89 + cgrant + cgrant_1, data=jtrain))
jtrain2<- subset(jtrain, !is.na(clscrap))
jtrain2 <- cbind(jtrain2, u)

jtrain2 <- ddply(
jtrain2, .(fcode), transform,
u1 = c(NA, u[-length(u)])
)
ureg<- lm(u ~ u1, data=jtrain2)
stargazer(ureg, no.space=TRUE, type="text")``````
``````##
## ===============================================
##                         Dependent variable:
##                     ---------------------------
##                                  u
## -----------------------------------------------
## u1                            0.237*
##                               (0.135)
## Constant                       0.000
##                               (0.076)
## -----------------------------------------------
## Observations                    54
## R2                             0.056
## Adjusted R2                    0.038
## Residual Std. Error       0.560 (df = 52)
## F Statistic             3.096* (df = 1; 52)
## ===============================================
## Note:               *p<0.1; **p<0.05; ***p<0.01``````