r - 具有不同原假设的 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
解决方案
summary()
-object 为您提供在每个系数等于 0 的零假设下所有系数的lm
p 值。但是,它还为您提供了所有必要的信息,以使用不同的零假设进行您自己的测试,例如系数为 1。
这是详细解释回归系数 t 检验的许多地方之一。本质上,您通过计算得到 t 值(estimate - reference) / SE
。SE
是标准误差,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)
推荐阅读
- reactjs - 反应中输入字段的值属性没有响应
- css - 当 flex 方向为 row reverse 时,内容是否应该结束对齐?
- javascript - 创建一个不能复制/粘贴的零和一的表
- arkit - 向 ARKit 添加深度数据
- javascript - 如何使用括号表示法在对象文字上创建嵌套属性?
- java - JAVA使用类在线程之间同步操作
- python - Python pandas 数字频率
- spring - 如何在 Spring Boot Thymeleaf 模板引擎中链接另一个 html 页面?
- php - 如何仅从时间函数中选择年份?
- php - 在 foreach 调用中替换值的最佳方法是什么