【发布时间】:2017-04-24 01:13:01
【问题描述】:
所以,我想对面板数据进行回归,使用时间和商店的双向效应。如果面板完美平衡,它工作正常,但由于某种原因,如果不是,代码就会卡住。 (见:https://stat.ethz.ch/pipermail/r-help/2010-May/239272.html)。
我的数据在本质上并不是不平衡的,但它有一些 NA,所以我猜当 plm 函数删除具有 NA 的行时它会变得不平衡。 我写了一个示例代码来举例说明我拥有的数据。
如果我运行这个:
set.seed(123)
library(plm)
number.of.days <- 1100
number.of.stores <- 1000
days <- sort(rep(c(1:number.of.days),number.of.stores))
stores <- rep(c(1:number.of.stores),number.of.days)
data <- cbind.data.frame(stores,days,matrix(rnorm(number.of.days*number.of.stores*7),nrow=number.of.days*number.of.stores,ncol=7))
colnames(data)[3:9] <- c('y',paste0('x',1:6))
data <- plm.data(data,c("stores","days"))
fit <- plm(y ~ x1 + x2 + x3 + x4 + x5 + x6, data = data, index=c("stores","days"), effect="twoway", model="within")
它工作正常,因为面板是平衡的。但是,如果我创建一些 NA 值:
data$y[sample(1:number.of.days*number.of.stores,150)] <- NA
data$x1[sample(1:number.of.days*number.of.stores,150)] <- NA
data$x2[sample(1:number.of.days*number.of.stores,150)] <- NA
data$x3[sample(1:number.of.days*number.of.stores,150)] <- NA
data$x4[sample(1:number.of.days*number.of.stores,150)] <- NA
data$x5[sample(1:number.of.days*number.of.stores,150)] <- NA
data$x6[sample(1:number.of.days*number.of.stores,150)] <- NA
并尝试再次运行回归:
fit <- plm(y ~ x1 + x2 + x3 + x4 + x5 + x6, data = data, index=c("stores","days"), effect="twoway", model="within")
它不起作用(代码显然永远不会停止运行)
我尝试对商店使用“个人”效果并添加一个带有假人的矩阵作为时间,但由于有 1100 天,它变得同样缓慢。
我认为这不是一个罕见的问题。有什么已知的解决方案吗?
谢谢
【问题讨论】:
-
运行您的代码时出现内存不足错误:
Reached total allocation of 8139Mb: see help(memory.size)。但是,如果您减少样本量,错误就会消失。这与您在使用真实数据时遇到的错误相同吗? -
如果我在 Linux 服务器上运行,这是我通常做的,它永远不会结束。但是当我尝试使用本地 RStudio 时,是的,这会发生。关于大小,你是对的,但我的真实数据一样大
-
请具体说明“它不起作用”是什么意思。您是否收到某种错误消息或观察到的表明“不起作用”信号的行为是什么?
-
“它不起作用”是什么意思?模型是因为错误而停止还是最终输出无法理解?
-
您可以尝试从 plm 2.4 版本开始设置
options("plm.fast" = TRUE)。
标签: r regression panel-data plm