[R] plm, multicollinearity and model checking
A. John Woodill
johnwoodill at gmail.com
Tue Mar 24 02:49:32 CET 2015
I'm fitting a fixed effect model with plm and know that I'm dealing with
multi-collinearity between two of the independent variables. I working on
identifying multicolliearity in models as a practice and have identified
the variable with alias(), then verified with vif(). I was also able to use
kappa() to show a very large conditional number verifying the
multicollinearity.
My question is why does plm() omit this multicolliearity variable from the
coefficients? There is no output clarifying why and I couldn't find
anything in the documentation. Stata automatically omits this variable and
I'm curious if plm() does a check and then omits. Does plm() run through
checks when fitting a fixed effect model that checks for collinearity or
any other problems before running the model? Why is dfmfd98 variable being
omitted in the example below?
Stack Exchange Post :
http://stats.stackexchange.com/questions/141684/multicollinearity-plm-and-omitting-variables
Multicollinearity variable dfmfd98
Reproducible example :
dput :
data <- structure(list(lexptot = c(8.28377505197124, 9.1595012302023,
8.14707583238833,
9.86330744180814, 8.21391453619232, 8.92372556833205, 7.77219149815994,
8.58202430280175, 8.34096828565733, 10.1133857229336, 8.56482997492403,
8.09468633074053, 8.27040804817704, 8.69834992618814, 8.03086333985764,
8.89644392254136, 8.20990433577082, 8.82621293136669, 7.79379981225575,
8.16139809188569, 8.25549748271241, 8.57464947213076, 8.2714431846277,
8.72374048671495, 7.98522888221012, 8.56460042433047, 8.22778847721461,
9.15431416391622, 8.25261818916933, 8.88033778695326), year = c(0L, 1L, 0L,
1L, 0L, 1L, 0L, 1L, 0L, 1L, 0L, 1L, 0L, 1L, 0L, 1L, 0L, 1L, 0L, 1L, 0L, 1L,
0L, 1L, 0L, 1L, 0L, 1L, 0L, 1L), dfmfdyr = c(0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0), dfmfd98 = c(1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
0, 0, 0), nh = c(11054L, 11054L, 11061L, 11061L, 11081L, 11081L, 11101L,
11101L, 12021L, 12021L, 12035L, 12035L, 12051L, 12051L, 12054L, 12054L,
12081L, 12081L, 12121L, 12121L, 13014L, 13014L, 13015L, 13015L, 13021L,
13021L, 13025L, 13025L, 13035L, 13035L)), .Names = c("lexptot", "year",
"dfmfdyr", "dfmfd98", "nh"), class = c("tbl_df", "data.frame"), row.names =
c(NA, -30L))
Regression Code :
library(plm)
lm <- plm(lexptot ~ year + dfmfdyr + dfmfd98 + nh, data = data, model =
"within", index = "nh")
summary(lm)
Output :
Oneway (individual) effect Within Model
Call:
plm(formula = lexptot ~ year + dfmfdyr + dfmfd98 + nh, data = data,
model = "within", index = "nh")
Balanced Panel: n=15, T=2, N=30
Residuals :
Min. 1st Qu. Median 3rd Qu. Max.
-4.75e-01 -1.69e-01 4.44e-16 1.69e-01 4.75e-01
Coefficients :
Estimate Std. Error t-value Pr(>|t|)
year 0.47552 0.23830 1.9955 0.06738 .
dfmfdyr 0.34635 0.29185 1.1867 0.25657
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Total Sum of Squares: 5.7882
Residual Sum of Squares: 1.8455
R-Squared : 0.68116
Adj. R-Squared : 0.29517
F-statistic: 13.8864 on 2 and 13 DF, p-value: 0.00059322
[[alternative HTML version deleted]]
More information about the R-help
mailing list