面板回归与非个体特定的固定效应

时间:2012-05-23 13:24:13

标签: r panel

我每周都会对不同产品的销售收入进行观察,分别针对不同的国家/地区,如下:

df <- data.frame(year=rep(c(2002,2003), each=16),
             week=rep(1:4,4),
             product=rep(c('A','B'), each=8, times=2),
             country=rep(c('usa','germany'), each=4, times=4),
             revenue=abs(rnorm(32)))

这意味着收入观察仅对year - week - country - product

的组合而言是唯一的

我现在想估算一个模型,其中包含countryyear以及每个product的互动的固定效果,但无法弄清楚如何执行此操作:

  • 通过summary(lm(revenue~factor(paste(country,year)) + factor(product) + ..., data=df))估算因内存不足而失败,因为我的数据集比上面的例子大,这意味着我必须估算大约1000个固定效果的内容
  • 据我了解,使用plm软件包可以更好地估算面板,但我的情况似乎并不适合于面板的标准框架,其中观察结果只有一次和一次不同每个的横截面尺寸和每个的固定效应被估计。我可以从yearweek生成时间索引,但是(a)仍然留给我两个横截面尺寸,(b)将为每个year - {给我固定效果{1}}互动,这比我想要的要好得多。

有没有办法用week来估算这个,还是有其他包来做这种事情?我知道我可以贬低上述组中的数据,通过plm进行估算,然后进行df校正,但我宁愿避免这种情况。

1 个答案:

答案 0 :(得分:1)

首先,创建一个变量“fe”,用于标识国家,年份,产品的唯一组合。

library(data.table)
# convert data.frame to data.table
setDT(df)
# create a new group variable
df[, fe := .GRP, by = list(country, year, product)]
head(df)
   year week product country    revenue fe
1: 2002    1       A     usa 0.84131750  1
2: 2002    2       A     usa 0.07530538  1
3: 2002    3       A     usa 0.56183346  1
4: 2002    4       A     usa 0.80720792  1
5: 2002    1       A germany 1.25329883  2
6: 2002    2       A germany 0.44860296  2

现在使用plmfelm。我喜欢felm,因为它也适用于多个固定效果和交互式固定效果

library(lfe)
felm(revenue ~ week | fe, df)