在与面板索引变量不同的变量上设置固定效果

问题描述 投票:0回答:1

我正在尝试运行

plm
面板固定效果模型。面板指数以年度水平运行。挑战?我想在(更高阶)state 级别运行固定效果。我可以轻松地使用
fixest
进行编程,但我不确定如何使用
plm
进行编程。

这是示例数据

df <- data.frame(year= rep(c(2000, 2001, 2003, 2000, 2002, 2004), each=10),
                 county= rep(c("c1", "c2", "c3", "c4", "c5", "c6", "c7", "c8", "c9", "c10"), times=6),
                 state= rep(c("s1", "s2", "s3", "s4", "s5"), each=2, times=6),
                 temperature= runif(60, min=40, max=80),
                 trade= runif(60, min=10, max=20),
                 policy.outcome= runif(60, min=0, max=100))

这是我想用 plm 复制的最固定模型

m1.fixest <- feols(policy.outcome
 ~ temperature + trade|state+year, 
               panel.id= ~county+year,
                               data=df)

谢谢你,

r regression panel-data plm fixest
1个回答
0
投票

首先请注意,您的数据集具有年份 = 2000 的重复索引。

feols
不会抱怨这一点,但
plm
会抱怨。假设这是一个错误,我稍微改变了您的数据生成,最终得到唯一的索引组合。

使用

plm
,如果您想要除索引维度的一次之外的固定效应,则需要将它们显式指定为回归量(LSDV 方法)。在这里,您可以通过
effect = "time"
估计时间固定效应模型以实现
year
固定效应,并明确指定
+ factor(state)
来解释
state
固定效应,因为各个维度由
county
给出。

df <- data.frame(year= rep(c(2000, 2001, 2003, 2005, 2002, 2004), each=10),
                 county= rep(c("c1", "c2", "c3", "c4", "c5", "c6", "c7", "c8", "c9", "c10"), times=6),
                 state= rep(c("s1", "s2", "s3", "s4", "s5"), each=2, times=6),
                 temperature= runif(60, min=40, max=80),
                 trade= runif(60, min=10, max=20),
                 policy.outcome= runif(60, min=0, max=100))

library(fixest)
m1.fixest <- feols(policy.outcome
                   ~ temperature + trade|state+year, 
                   panel.id= ~county+year,
                   data=df)


library(plm)
m1.plm <- plm(policy.outcome ~ temperature + trade + factor(state), 
                   index = c("county", "year"), effect = "time",
                   data=df)
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.