R中的物流单位固定效应模型

Logistic Unit Fixed Effect Model in R

我正在尝试使用 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 无法使用 "within" 模型: fixed <- pglm(y ~ x, data=data, index=c("location", "date"), model="within", family=binomial("logit")).

pglm 的 "within" 模型与 glm()clogit() 中的方法有什么区别?在尝试预测 y 时,这三种方法中的哪一种是正确的给定的日期和单位?

我没有看到你已经定义了一个正确的假设来在你所说的 "panel data" 的上下文中进行测试,但就让 glm 给出逻辑系数的估计而言strata 可以通过添加 family="binomial" 并按 "unit" 变量分层来完成:

> 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