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
我正在尝试使用 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