Для даты требуется месяц и день, я предлагаю использовать начало года через ISOdate
.
testdf <- transform(testdf, year=as.Date(ISOdate(year, 1, 1))) ## Note: transform is from
## base R
head(testdf, 3)
# country year Var1 Var2 Var3 Var4
# 1 AT 2010-01-01 0.27246094 15 0 0
# 2 BE 2010-01-01 0.14729459 53 0 1
# 3 BG 2010-01-01 0.08744856 3 0 0
В вызове plm
вы, вероятно, захотите определить index=
и выбрать model=
, см. ?plm
.
library(plm)
reg1 <- plm(Var2 ~ Var1 + Var3 + Var4, data=testdf, index=c("country", "year"),
model="random")
Результат:
summary(reg1)
# Oneway (individual) effect Random Effect Model
# (Swamy-Arora's transformation)
#
# Call:
# plm(formula = Var2 ~ Var1 + Var3 + Var4, data = testdf, model = "random",
# index = c("country", "year"))
#
# Balanced Panel: n = 6, T = 4, N = 24
#
# Effects:
# var std.dev share
# idiosyncratic 0.8135 0.9019 0.001
# individual 615.6029 24.8113 0.999
# theta: 0.9818
#
# Residuals:
# Min. 1st Qu. Median 3rd Qu. Max.
# -1.416570 -0.789216 -0.064901 0.728004 1.392325
#
# Coefficients:
# Estimate Std. Error z-value Pr(>|z|)
# (Intercept) 18.47629 9.76600 1.8919 0.0585 .
# Var1 12.95722 2.84290 4.5577 5.171e-06 ***
# Var4 0.32221 0.40056 0.8044 0.4212
# ---
# Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#
# Total Sum of Squares: 32.753
# Residual Sum of Squares: 15.806
# R-Squared: 0.5174
# Adj. R-Squared: 0.47144
# Chisq: 22.5147 on 2 DF, p-value: 1.2912e-05
Данные:
testdf <- structure(list(country = structure(c(1L, 2L, 3L, 4L, 5L, 6L,
1L, 2L, 3L, 4L, 5L, 6L, 1L, 2L, 3L, 4L, 5L, 6L, 1L, 2L, 3L, 4L,
5L, 6L), .Label = c("AT", "BE", "BG", "CY", "CZ", "DE"), class = "factor"),
year = c(2010L, 2010L, 2010L, 2010L, 2010L, 2010L, 2011L,
2011L, 2011L, 2011L, 2011L, 2011L, 2012L, 2012L, 2012L, 2012L,
2012L, 2012L, 2013L, 2013L, 2013L, 2013L, 2013L, 2013L),
Var1 = c(0.27246094, 0.14729459, 0.08744856, 0.15369261,
0.2028436, 0.12541694, 0.35370741, 0.14572864, 0.11929461,
0.24550898, 0.23333333, 0.21943574, 0.3507378, 0.197, 0.08472803,
0.16949153, 0.26914661, 0.22037422, 0.34716599, 0.2890625,
0.14602216, 0.44023904, 0.35146022, 0.25500323), Var2 = c(15L,
53L, 3L, 6L, 6L, 37L, 16L, 54L, 4L, 7L, 7L, 38L, 17L, 55L,
5L, 8L, 8L, 39L, 18L, 56L, 6L, 9L, 9L, 40L), Var3 = c(0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), Var4 = c(0L, 1L, 0L, 0L,
1L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L,
0L, 1L, 0L, 1L, 1L)), class = "data.frame", row.names = c("1",
"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13",
"14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24"
))