3

我正在尝试对面板数据 OLS 回归(在 R 中)上的固定效应(个体特定虚拟变量)的联合显着性进行 F 检验,但是我还没有找到一种方法来为大量固定效果。理想情况下,我会在plm包中使用一个函数,但是我还没有找到任何专门做这个测试的东西。

这是 Stata 在使用该xtreg, fe命令时自动执行的操作。在 Stata 中,结果如下所示:

------------------------------------------------------------------------------
F test that all u_i=0:  F(49, 498) =    12.00   Prob > F = 0.000

同样,我试图在 R 中为大量虚拟变量重现 Stata 结果,可能通过+ factor(us.state)usinglm()model = "fe"using指定plm()

这是一个可重现的示例:

require(foreign)

voter <- read.dta("http://www.montana.edu/econ/cstoddard/562/panel_hw.dta")

reg1 <- lm(vaprate ~ gsp + midterm + regdead + WNCentral + South + Border
               + factor(state), data=voter)

这相当于使用plm包的以下“内部”回归。

require(plm)

reg1.fe <- plm(vaprate ~ gsp + midterm + regdead + WNCentral + South + Border,
data=voter, index = c("state","year"), model = "within")

因此,测试将是所有状态虚拟变量共同不为零(共同显着)的测试。这是对无限制模型(上面的 reg1 和 reg1.fe)的线性限制。此 F 检验在以下文档中有更好的解释(参见幻灯片 5-7)。

http://jackman.stanford.edu/classes/350B/07/ftestforWeb.pdf

这是我为零假设的 F 检验创建“R”矩阵的微弱尝试之一:Rb = q 其中 b 是系数矩阵(β 帽),q 是零向量。

d1 = length(unique(voter$stcode))-1
d2 = length(reg1$coefficients)
R = cbind(matrix(0,d1,d2),diag(d1))

linearHypothesis(reg1,R,rhs=0)

这不行!而且,我希望有一种简化的方法来测试所有固定效应虚拟变量的联合显着性。

4

2 回答 2

1

首先,我想建议您的问题可以通过(1)提供一个可重复的示例,以及(2)描述您在说“F 测试”时所指的精确测试来改进。可能是指向 Stata 文档的链接?F 是分布,因此可以有大量的测试,称为“F 测试”。

如果您的实质性兴趣在于确定固定效应模型是否比没有固定效应的 OLS 更适合数据,那么您始终可以使用似然比检验。我确信 R 中有很多实现,但是lmtest包提供的那个非常方便。这是一个使用随plm包分发的数据集的示例(您似乎已经安装了该数据集,因此应该很容易尝试)。

library(plm)
data(Produc)

library(lmtest)
mod <- lm(pcap ~ hwy + water, Produc)
mod.fe <- lm(pcap ~ hwy + water + factor(state), Produc)
lrtest(mod, mod.fe)  

和输出:

Likelihood ratio test

Model 1: pcap ~ hwy + water
Model 2: pcap ~ hwy + water + factor(state)
  #Df  LogLik Df  Chisq Pr(>Chisq)    
1   4 -8038.1                         
2  51 -6712.4 47 2651.4  < 2.2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

编辑:选项 2

require(foreign)
voter <- read.dta("http://www.montana.edu/econ/cstoddard/562/panel_hw.dta")
reg1 <- lm(vaprate ~ gsp + midterm + regdead + WNCentral + South + Border
               + factor(state), data=voter)

library(plm)
reg1.fe <- plm(vaprate ~ gsp + midterm + regdead + WNCentral + South + Border,
data=voter, index = c("state","year"), model = "within")

reg1.pooling <- plm(vaprate ~ gsp + midterm + regdead + WNCentral + South + Border,
data=voter, index = c("state","year"), model = "pooling")

pFtest(reg1.fe, reg1.pooling)

输出:

    F test for individual effects

data:  vaprate ~ gsp + midterm + regdead + WNCentral + South + Border 
F = 13.0712, df1 = 45, df2 = 498, p-value < 2.2e-16
alternative hypothesis: significant effects 
于 2011-05-30T01:04:01.130 回答
0

我真的不认为这个测试是有用的。与其估计你所说的固定效应(我称之为无池模型),为什么不估计分层模型呢?分层模型(或部分池模型)将允许您的估计缩小到状态的共同平均值,但不会强制它们相等。此外,如果您需要评估州有多少变化,您只需要使用州和州内估计的方差即可。如果状态之间的差异很低(接近于零),那么使用分层模型并不会获得太多收益,并且截距大致相同。如果方差非常大(在极限内,当达到无穷大时)层次模型添加的很少,您可以为每个状态运行一个单独的模型。

您可以使用包 lme4 估计 R 中的层次模型。使用您的数据:

require(lme4)
require(arm)
reg1 <- glmer(vaprate ~ gsp + midterm + regdead + WNCentral + South + Border
           + (1|state), data=voter)
display(reg1)

各州截距的估计标准差为 4.39,个体标准差为 4.19。

于 2011-05-30T04:46:55.873 回答