我试图使用R估算面板数据的逻辑单元固定效应模型。我的因变量是二元的,每两年测量13个位置。 此模型的目标是基于x预测特定日期和位置的y值。
zero <- seq(from=0, to=1, by=1)
ids = dplyr::data_frame(location=seq(from=1, to=13, by=1))
dates = dplyr::data_frame(date = seq(as.Date("2015-01-01"), as.Date("2016-12-31"), by="days"))
data = merge(dates, ids)
data$y <- sample(zero, size=9503, replace=TRUE)
data$x <- sample(zero, size=9503, replace=TRUE)
在调查可用的软件包时,我已经阅读了很多方法(显然)这样做,但我并不相信我已经理解了软件包和方法之间的差异。
根据我到目前为止所读到的内容,glm()
,survival::clogit()
和pglm::pglm()
可用于执行此操作,但我想知道这些包之间是否存在实质性差异那些可能是什么
以下是我使用过的电话:
fixed <- glm(y ~ x + factor(location), data=data)
fixed <- clogit(y ~ x + strata(location), data=data)
这种不安全的原因之一是我在使用pglm时遇到的错误(另请参阅this question)pglm
无法使用&#34;&#34;模型:
fixed <- pglm(y ~ x, data=data, index=c("location", "date"), model="within", family=binomial("logit"))
。
&#34;内部&#34;区别于什么?来自glm()
和clogit()
中的方法的pglm模型,以及在尝试预测给定日期和单位的y时,这三个中哪一个是正确的?
答案 0 :(得分:3)
我没有看到您已经定义了一个正确的假设,可以在您调用的内容和面板数据的范围内进行测试,但只要让glm
给出估算值对于层内的逻辑系数,可以通过添加family =&#34;二项式&#34;并由你的&#34;单位&#34;分层变量:
> fixed <- glm(y ~ x + strata(unit), data=data, family="binomial")
> fixed
Call: glm(formula = y ~ x + strata(unit), family = "binomial", data = data)
Coefficients:
(Intercept) x strata(unit)unit=2 strata(unit)unit=3
0.10287 -0.05910 -0.08302 -0.03020
strata(unit)unit=4 strata(unit)unit=5 strata(unit)unit=6 strata(unit)unit=7
-0.06876 -0.05042 -0.10200 -0.09871
strata(unit)unit=8 strata(unit)unit=9 strata(unit)unit=10 strata(unit)unit=11
-0.09702 0.02742 -0.13246 -0.04816
strata(unit)unit=12 strata(unit)unit=13
-0.11449 -0.16986
Degrees of Freedom: 9502 Total (i.e. Null); 9489 Residual
Null Deviance: 13170
Residual Deviance: 13170 AIC: 13190
这不会考虑任何日期排序,这是我期望的兴趣。但正如我上面所说的那样,似乎并不是一个以任何顺序排序为前提的假设。
这将创建一个固定效果模型,其中包含date
与y事件概率的样条关系。我选择将日期居中,而不是将其作为一个非常大的整数:
library(splines)
fixed <- glm(y ~ x + ns(scale(date),3) + factor(unit), data=data, family="binomial")
fixed
#----------------------
Call: glm(formula = y ~ x + ns(scale(date), 3) + factor(unit), family = "binomial",
data = data)
Coefficients:
(Intercept) x ns(scale(date), 3)1 ns(scale(date), 3)2
0.13389 -0.05904 0.04431 -0.10727
ns(scale(date), 3)3 factor(unit)2 factor(unit)3 factor(unit)4
-0.03224 -0.08302 -0.03020 -0.06877
factor(unit)5 factor(unit)6 factor(unit)7 factor(unit)8
-0.05042 -0.10201 -0.09872 -0.09702
factor(unit)9 factor(unit)10 factor(unit)11 factor(unit)12
0.02742 -0.13246 -0.04816 -0.11450
factor(unit)13
-0.16987
Degrees of Freedom: 9502 Total (i.e. Null); 9486 Residual
Null Deviance: 13170
Residual Deviance: 13160 AIC: 13200