我每周都会对不同产品的销售收入进行观察,分别针对不同的国家/地区,如下:
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
我现在想估算一个模型,其中包含country
和year
以及每个product
的互动的固定效果,但无法弄清楚如何执行此操作:
summary(lm(revenue~factor(paste(country,year)) + factor(product) + ..., data=df))
估算因内存不足而失败,因为我的数据集比上面的例子大,这意味着我必须估算大约1000个固定效果的内容plm
软件包可以更好地估算面板,但我的情况似乎并不适合于面板的标准框架,其中观察结果只有一次和一次不同每个的横截面尺寸和每个的固定效应被估计。我可以从year
和week
生成时间索引,但是(a)仍然留给我两个横截面尺寸,(b)将为每个year
- {给我固定效果{1}}互动,这比我想要的要好得多。有没有办法用week
来估算这个,还是有其他包来做这种事情?我知道我可以贬低上述组中的数据,通过plm
进行估算,然后进行df校正,但我宁愿避免这种情况。
答案 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
现在使用plm
或felm
。我喜欢felm
,因为它也适用于多个固定效果和交互式固定效果
library(lfe)
felm(revenue ~ week | fe, df)