假设我在 R 中有两个线性模型,这样:
lm1 = (x ~ a + b)
lm2 = (x ~ a + b + c)
我想确定c 对 x的影响
1) 效果的显着性 2) 效果的估计 3) c 对 x 整体变化的贡献(例如 c 的 R 平方值的分量)
anova(lm1, lm2)为我提供了一个重要数字,但没有提供我需要的其他数字,尤其是上面的 3。
我该如何计算这些数字?
假设我在 R 中有两个线性模型,这样:
lm1 = (x ~ a + b)
lm2 = (x ~ a + b + c)
我想确定c 对 x的影响
1) 效果的显着性 2) 效果的估计 3) c 对 x 整体变化的贡献(例如 c 的 R 平方值的分量)
anova(lm1, lm2)为我提供了一个重要数字,但没有提供我需要的其他数字,尤其是上面的 3。
我该如何计算这些数字?
通常的方法是查看anova(lm1, lm2)
和summary(lm2)
,尽管有一个effects
-package 可以提供额外的容量。我不明白你确实需要那些还不够。平方和的差值和自由度(如果它是伴随“c”相加的因子变量)由 的输出提供anova
。“'c' 对 x 的贡献”有点模糊,但可能意味着系数(标记为 x 提供的 x 的“估计” summary(lm2)
)。您可能会被要求写类似“当在回归分析中控制“a”和“b”时,“c”对“x”变化的贡献是......”
如果您想在单个模型中分解平方和,只需查看:
anova(lm2)
######
Analysis of Variance Table
Response: Y
Df Sum Sq Mean Sq F value Pr(>F)
X1 1 2.2167 2.21672 4.9554 0.03982 *
X2 1 1.2316 1.23156 2.7531 0.11540
Residuals 17 7.6047 0.44733
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
很容易计算出 X1 平方和中总平方和的百分比。首先查看anova(lm2)
带有的对象str()
。这是一个列表:
100*anova(lm2)[['Sum Sq']][1]/sum(anova(lm2)[['Sum Sq']])
#[1] 20.05545
“X1 控制 X2 的部分 R^2”(R^2_Y.X1|X2)是:
anova(lm2)[['Sum Sq']]["X1"]/anova(lm2)[['Sum Sq']][""Residuals"]
尝试比较summary(lm1)
和summary(lm2)
。R平方信息应该在底部。
您可以使用库中compare_performance
的函数performance
:
library(performance)
compare_performance(lm1, lm2, rank = TRUE)