【问题标题】:How do I perform a joint Wald test on panel data regression coefficients against some specific values?如何针对某些特定值对面板数据回归系数执行联合 Wald 检验?
【发布时间】:2026-02-11 00:50:02
【问题描述】:

我想对我的固定效应回归系数进行简单的联合 Wald 检验,但我想将限制设置为非零值。 更具体地说,我想测试: H0: ai=0 and b=1 for each i 或者基本上,是否从固定效应模型(ai)中提取截距(我知道固定效应模型中没有截距,但您仍然可以通过 fixef() 命令提取它们,如果固定效应模型是,它们应该接近于零正确的模型)对于每个 i 都等于 0,我的系数 (bi) 等于 1。

这是我所拥有的:

library(plm)


form <- R_excess ~ I(beta_MKT_RF*MKT_RF) + I(beta_HML*HML) + I(beta_SMB*SMB)
reg1 <- plm(form, data=nlspd, model="within")

summary(reg1, vcov =function(x) vcovSCC(x, type="HC3", maxlag=12))

这是输出,你可以看到我的系数都接近 1:

Call:
plm(formula = form, data = nlspd, model = "within")

Balanced Panel: n = 10, T = 624, N = 6240

Residuals:
       Min.     1st Qu.      Median     3rd Qu.        Max. 
-7.8706e-02 -9.0319e-03  3.8278e-05  8.9624e-03  1.1349e-01 

Coefficients:
                         Estimate Std. Error t-value  Pr(>|t|)    
I(beta_MKT_RF * MKT_RF) 1.0023818  0.0072942 137.422 < 2.2e-16 ***
I(beta_HML * HML)       0.9985867  0.0527123  18.944 < 2.2e-16 ***
I(beta_SMB * SMB)       0.9731437  0.0355880  27.345 < 2.2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Total Sum of Squares:    18.067
Residual Sum of Squares: 1.5037
R-Squared:      0.91677
Adj. R-Squared: 0.91661
F-statistic: 7808.71 on 3 and 623 DF, p-value: < 2.22e-16

我还可以使用以下方法获得固定效果截距:

summary(fixef(reg1), vcov =function(x) vcovSCC(x, type="HC3", maxlag=12))
      Estimate  Std. Error t-value  Pr(>|t|)    
1   0.00127680  0.00062245  2.0512  0.040285 *  
2   0.00136923  0.00062251  2.1995  0.027877 *  
3   0.00104805  0.00062246  1.6837  0.092283 .  
4   0.00132979  0.00062259  2.1359  0.032727 *  
5  -0.00061048  0.00062252 -0.9807  0.326795    
6   0.00085262  0.00062247  1.3697  0.170816    
7  -0.00104724  0.00062250 -1.6823  0.092557 .  
8  -0.00089731  0.00062275 -1.4409  0.149672    
9  -0.00174805  0.00062292 -2.8062  0.005028 ** 
10 -0.00271173  0.00062343 -4.3497 1.385e-05 ***

现在我想对这些系数进行联合 wald 检验,以测试是否每个 i: H0: ai =0 和 b=1。

编辑:这与固定效应的 F 检验不同,因为我正在针对非零假设进行测试。

【问题讨论】:

  • 不幸的是,我正在研究一个特定的假设,而不是假设回归量在 null 下为零的通常 F 检验。
  • @ErwinRhine,我的回答能解决你的问题吗?

标签: r testing panel plm


【解决方案1】:
@Helix123 在 cmets 中提到的

The question 并没有完全满足您的需求(也不是关于测试 所有 系数是否为零),但它是相关的。特别是,如果您只想测试固定效应是否等于 0,您可以在此处找到答案。

然而,在您的情况下,除了关于固定效应的假设外,我们还测试 all 其他系数是否具有一些 非零 值。这就是它产生问题的原因。

如果您想测试I(beta_HML * HML) 的系数为零,那么提供给pFtest 的受限模型(请参阅链接问题中接受的答案)将是reg2,如

form <- R_excess ~ -1 + I(beta_MKT_RF * MKT_RF) + I(beta_SMB * SMB)
reg2 <- plm(form, data = nlspd, model = "pooling") # Note "pooling", which sets fixed effects to zero

如果你想测试这个变量的系数是1,那么你可以使用reg3 in

form <- R_excess - I(beta_HML * HML) ~ -1 + I(beta_MKT_RF * MKT_RF) + I(beta_SMB * SMB)
reg3 <- plm(form, data = nlspd, model = "pooling") # Note "pooling", which sets fixed effects to zero

由于您的假设是关于所有剩余的三个系数,因此我们实际上不会在右侧进行任何估计。碰巧plm 不喜欢这样并抛出empty model 错误。

如果我们使用lm,则在公式中还有另一个选项可以使用offset(beta_MKT_RF * MKT_RF),它将系数固定为1,并且不会被估计。但是,plm 不允许 offset

也就是说,似乎更简单的选择是使用lm,正如链接问题中所建议的那样。特别是,

data("Produc", package = "plm")
mU <- lm(log(gsp) ~ -1 + log(emp) + factor(state), data = Produc)
mR <- lm(log(gsp) ~ -1 + offset(log(emp)), data = Produc)
library(lmtest)
lrtest(mR, mU)
# Likelihood ratio test
#
# Model 1: log(gsp) ~ -1 + offset(log(emp))
# Model 2: log(gsp) ~ -1 + log(emp) + factor(state)
#   #Df  LogLik Df  Chisq Pr(>Chisq)    
# 1   1 -2187.9                         
# 2  50  1467.3 49 7310.4  < 2.2e-16 ***
# ---
# Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

这样mU 包含固定效果,可以不受限制地估计log(emp) 的效果,而mR 不包含固定效果,将log(emp) 的效果固定为1。

您没有提供数据,但应该接近

mU <- lm(R_excess ~ -1 + I(beta_MKT_RF * MKT_RF) + I(beta_HML * HML) +
           I(beta_SMB * SMB) + factor(var), data = nlspd)
mR <- lm(R_excess ~ -1 + offset(beta_MKT_RF * MKT_RF) + offset(beta_HML * HML) +
           offset(beta_SMB * SMB), data = nlspd)
lrtest(mR, mU)

其中var 是横截面尺寸变量。

【讨论】: