首页 > 解决方案 > 具有不同原假设的 R 回归

问题描述

我有一系列回归,我想在同一个回归中执行不同的零假设。这意味着我想测试一个自变量是否等于 1,另一个是否等于 0。

netew3 <- summary(lm(ewvw[,3]-factors$RF ~ factors$Mkt.RF + factors$SMB + factors$HML + factors$MOM, na.action = na.exclude), data = ewvw)

我想测试第一个变量(factors$Mkt.RF)是否等于 1,其他变量(SMB、HML 和 MOM)是否等于 0。

预先感谢您的帮助。最佳PL

标签: rregressionlinear-regression

解决方案


summary()-object 为您提供在每个系数等于 0 的零假设下所有系数的lmp 值。但是,它还为您提供了所有必要的信息,以使用不同的零假设进行您自己的测试,例如系数为 1。

是详细解释回归系数 t 检验的许多地方之一。本质上,您通过计算得到 t 值(estimate - reference) / SESE是标准误差,reference是原假设下系数的假设值(通常为 0)。因此,您所要做的就是将后一个值从 0 更改为 1,然后您就得到了 t 值。

我在下面的一个函数中自动化了这个。h0.value是您在原假设下的假设值。您可以通过运行它来检查它是否与您的数据/模型一起正常工作,h0.value = 0并将结果与​​您从中获得的结果进行比较summary()。如果有效,请将其与h0.value = 1.

estim_test <- function(lm.mod, h0.value = 0) {
  coefm <- as.data.frame(summary(lm.mod)$coefficients)
  n <- length(lm.mod$residuals)
  coefm$`t value` <- (coefm$Estimate - h0.value)/coefm$`Std. Error`
  coefm$`Pr(>|t|)` <- 2*pt(-abs(coefm$`t value`), df=lm.mod$df.residual)
  coefm
}

# Testing the function
data("swiss")
mod1 <- lm(Fertility ~ Agriculture + Education + Catholic, data=swiss)
summary(mod1)
estim_test(mod1, h0.value=0)
estim_test(mod1, h0.value=1)

推荐阅读