比较R中的两个线性模型

时间:2013-02-21 22:33:29

标签: r statistics linear-regression

假设我在R中有两个线性模型:

lm1 =(x~a + b)

lm2 =(x~a + b + c)

我想根据

确定 c对x 的影响 1)效果的重要性 2)估计效果 3)c对x的整体变化的贡献(例如,R平方值的c分量)

anova(lm1,lm2)为我提供了一个有意义的数字,但不是我需要的其他数字,特别是上面的3个。

我如何计算这些数字?

3 个答案:

答案 0 :(得分:6)

通常的方法是查看anova(lm1, lm2)summary(lm2),尽管有一个effects - 包可能会提供额外的容量。我不明白你需要做些什么是不够的。如果它是伴随“c”的加法的因子变量,则平方和与自由度的差异由anova的输出提供。 “c'对x的贡献”有点模糊,但可能意味着系数(由summary(lm2)提供的x标记为“估计”)。当在回归分析中控制“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"]

答案 1 :(得分:3)

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

答案 2 :(得分:0)

您可以使用compare_performance库中的performance函数:

library(performance)
compare_performance(lm1, lm2, rank = TRUE)