在R中比较两个线性模型

3
假设我有两个 R 中的线性模型: lm1 = (x ~ a + b) lm2 = (x ~ a + b + c)
我想确定 c 对 x 的影响,涉及以下几个方面:
1)效果的显著性
2)效果的估计值
3)c 对 x 总变异的贡献(例如 R-squared 值中 c 的组成部分)
其中 anova(lm1, lm2) 提供了一个显著性数字,但我需要的其他数字,特别是上面的第 3 点。
那么我该如何计算这些数字呢?

2
从谷歌搜索“partial R^2 R”的结果中有帮助的吗? - Ben Bolker
3个回答

6
通常的方法是查看anova(lm1, lm2)summary(lm2),虽然有一个effects包可能提供额外的功能。如果这些不足以满足您的需求,我不明白您需要什么。如果伴随着添加"c"的因素变量,则anova的输出提供了平方和和自由度的差异。 "对'x'的'c'的贡献"有点模糊,但可能指的是由summary(lm2)提供的系数(标记为"x"的"Estimate")。您可能被要求编写类似于“在回归分析中控制"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平方和中,总平方和的百分比很容易计算。首先查看带有str()的对象anova(lm2)。它是一个列表:

 100*anova(lm2)[['Sum Sq']][1]/sum(anova(lm2)[['Sum Sq']])
 #[1] 20.05545

“控制X2后X1的偏R^2”(R^2_Y.X1|X2)是:
anova(lm2)[['Sum Sq']]["X1"]/anova(lm2)[['Sum Sq']][""Residuals"]

1
进一步解释:在模型“lm2”中,我想计算由c导致的模型总R平方的百分比。 - Rful
1
查询“偏R平方”和“调整R平方”。我认为R平方的“度量”分解方式与卡方统计量不同。它实际上更像是模型摘要统计量,而不是协变量属性。 - IRTFM

4

尝试比较summary(lm1)summary(lm2)。 R平方信息应该在底部。


1
我理解这一点,但我不能简单地使用R平方值的差异,因为每个模型的自由度不同。 - Rful

1
您可以使用来自performance库的compare_performance函数:
library(performance)
compare_performance(lm1, lm2, rank = TRUE)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接