如何在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
相关产品推荐
相关产品推荐

