在predict.lm()中使用coeftest结果

时间:2019-05-08 18:10:36

标签: r covariance predict

我正在分析一个数据集,其中对于所有观察而言,回归中误差项的方差不是恒定的。为此,我重新构建了模型,并使用coeftest函数估算了异方差稳健性(Huber-White)标准误差。现在,我想将这些新结果用于带有predict()函数的预测。

数据集如下所示,但带有多个X:

set.seed(123)
x <- rep(c(10, 15, 20, 25), each = 25)
e <- c()
e[1:25] <- rnorm(25, sd = 10)
e[26:50] <- rnorm(25, sd = 15)
e[51:75] <- rnorm(25, sd = 20)
e[76:100] <- rnorm(25, sd = 25)
y <- 720 - 3.3 * x + e
model <- lm(y ~ x)
library(lmtest)
library(sandwich)
coeftest(model, vcov=vcovHC(model, "HC1"))  

我在互联网上找到了以下解决方案:

predict.rob <- function(x,vcov,newdata){
    if(missing(newdata)){ newdata <- x$model }
    tt <- terms(x)
    Terms <- delete.response(tt)
    m.mat <- model.matrix(Terms,data=newdata)
    m.coef <- x$coef
    fit <- as.vector(m.mat %*% x$coef)
    se.fit <- sqrt(diag(m.mat%*%vcov%*%t(m.mat)))
    return(list(fit=fit,se.fit=se.fit))}

剩下的问题是我的回归变量有1个以上的回归变量。

有什么办法可以将此分辨率添加到多个(7)解释变量中?

谢谢!

1 个答案:

答案 0 :(得分:0)

我不确定,但是coeftest函数仅执行测试。您不能直接将其结果用于预测。也许,您可以通过predict.lm来指定vcovHC(model, "HC1")的变化。希望对您有所帮助。