我有多个回归模型,这些模型未通过Breusch-Pagan测试,因此我使用异方差校正的协方差矩阵重新计算方差,如下所示:coeftest(lm.model,vcov=hccm(lm.model))
。 coeftest()
来自lmtest
个包,而hccm()
来自car
个包。
我想提供F分数和标准化的测试版,但我不知道如何做到这一点,因为输出看起来像这样...
t test of coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.000261 0.038824 0.01 0.995
age 0.004410 0.041614 0.11 0.916
exercise -0.044727 0.023621 -1.89 0.059 .
tR -0.038375 0.037531 -1.02 0.307
allele1_num 0.013671 0.038017 0.36 0.719
tR:allele1_num -0.010077 0.038926 -0.26 0.796
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
有关如何报告这些内容的任何建议,以便它们与来自R和summary()
的标准Anova()
和car
输出以及来自std_beta()
的函数sjmisc
的输出尽可能一致{{1}}包裹?
答案 0 :(得分:0)
如果其他人有这个问题,这是我的解决方案。它不是特别优雅,但它的工作原理。
我只是将std_beta函数用作模板,然后将标准错误的输入更改为从std_beta()
函数派生的输入。
# This is taken from std_beta function from sj_misc package.
# =====================================
b <-coef(lm.model) # Same Estimate
b <-b[-1] # Same intercept
fit.data <- as.data.frame(stats::model.matrix(lm.model)) # Same model.
fit.data <- fit.data[, -1] # Keep intercept
fit.data <- as.data.frame(sapply(fit.data, function(x) if (is.factor(x))
to_value(x, keep.labels = F)
else x))
sx <- sapply(fit.data, sd, na.rm = T)
sy <- sapply(as.data.frame(lm.model$model)[1], sd, na.rm = T)
beta <- b * sx/sy
se <-coeftest(lm.model,vcov=hccm(lm.model))[,2] # ** USE HCCM covariance for SE **
se <- se[-1]
beta.se <- se * sx/sy
data.frame(beta = beta, ci.low = (beta - beta.se *
1.96), ci.hi = (beta + beta.se * 1.96))
对于F分数,我只是将t值平方。 我希望这能节省一些时间。