You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在strucchange包的Fstats函数中指定vcovHC参数?

在strucchange的Fstats()中使用稳健标准误的正确方式

你遇到的问题是Fstats()的参数传递方式不对——这个函数需要通过vcov.参数指定方差估计函数,而不是直接调用vcovHC(., ...)。

你的错误尝试及报错

rm(list = ls())

library(lmtest)
library(sandwich)
library(strucchange)

y <- as.ts(c(4,3,-2,1,-4,0,1,-2,-3,2,0,1,-2,2,4,1,3,5,2,2,3,4))
X <- as.ts(rep(1,22))

# 线性模型加稳健标准误(正常运行)
model <- lm(y ~ X - 1)
coeftest(model, vcov = vcovHC(model, type = "HC0"))

# 常规标准误的Fstats(正常运行)
model2 <- Fstats(y ~ X - 1, from = 3, to = 18)
model2$Fstats

# 错误的稳健标准误写法
model3 <- Fstats(y ~ X - 1, from = 3, to = 18, vcovHC(.,type = "HC0"))
# Error in vcovHC(., type = "HC0") : object '.' not found

Fstats()内部相关代码片段

else {
      allX <- cbind(X1, matrix(rep(0, point[i]*k), ncol=k))
      allX <- rbind(allX, cbind(X2, X2))
      fm2 <- lm(y ~ 0 + allX)
      beta2 <- coef(fm2)[-(1:k)]
      V <- vcov.(fm2)

正确的两种实现方式

方式1:直接传入vcovHC并附加参数

Fstats()支持通过...传递额外参数给指定的方差估计函数,写法简洁:

model3 <- Fstats(y ~ X - 1, from = 3, to = 18, vcov. = vcovHC, type = "HC0")

方式2:用匿名函数包装(更灵活)

如果需要更明确的参数控制,用匿名函数把模型对象传递给vcovHC:

model3 <- Fstats(y ~ X - 1, from = 3, to = 18, vcov. = function(mod) vcovHC(mod, type = "HC0"))

运行上述任意一种写法后,model3$Fstats就会输出基于HC0稳健标准误的F统计量序列。


内容的提问来源于stack exchange,提问作者James Vercammen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 11:26:00