R 用方差分析测量回归系数贡献
我想问一下方差分析F检验。这个测试可以用来测量系数对因变量的贡献吗 Anova检验比较特定组之间和组内的变化,在线性回归中,我们使用它来检验所有回归系数(除截距外)是否等于零 我的问题是,我们是否可以比较回归中使用的每个项的残差平方和,如下所示:R 用方差分析测量回归系数贡献,r,statistics,anova,R,Statistics,Anova,我想问一下方差分析F检验。这个测试可以用来测量系数对因变量的贡献吗 Anova检验比较特定组之间和组内的变化,在线性回归中,我们使用它来检验所有回归系数(除截距外)是否等于零 我的问题是,我们是否可以比较回归中使用的每个项的残差平方和,如下所示: library(tidyverse) mtcars %>% lm(hp ~ factor(gear) + factor(am) + qsec + wt, data = .) %>% aov() %>% broom
library(tidyverse)
mtcars %>%
lm(hp ~ factor(gear) + factor(am) + qsec + wt, data = .) %>%
aov() %>%
broom::tidy() %>%
mutate(contribution = sumsq/sum(sumsq))
我们能否将这个总结结果解释为:gear解释了因变量中约44%的可变性?qsec解释了25%的变异性?这种方法是否可以在实践中使用,例如,如果我们必须只选择一个变量来解释因变量,那么在本例中,我们应该只选择这个变量的齿轮
我想问一下这是否正确,最重要的是为什么你的解释是正确的。一种方法是,如果我们取所有
sumsq
之和,减去残差的sumsq
,然后将这个数量除以sumsq
之和,我们得到回归的R平方(因此我们的模型解释了总方差的百分比)
您可以在实践中使用此选项来选择最重要的变量,但我会选择其他模型,如lasso回归来完成此操作。您好,非常感谢。你能不能也展示一下如何手工计算每个学期的sumsq?如果可以的话,我会链接到这个()?
mtcars %>%
lm(hp ~ factor(gear) + factor(am) + qsec + wt, data = .) %>%
aov() %>%
broom::tidy() %>%
mutate(contribution = sumsq/sum(sumsq),
r_squared = (sum(sumsq) - sumsq[term == "Residuals"]) / sum(sumsq))
# A tibble: 5 x 8
term df sumsq meansq statistic p.value contribution r_squared
<chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 factor(gear) 2 64213. 32106. 33.3 0.0000000680 0.441 0.828
2 factor(am) 1 759. 759. 0.787 0.383 0.00521 0.828
3 qsec 1 36567. 36567. 37.9 0.00000165 0.251 0.828
4 wt 1 19098. 19098. 19.8 0.000144 0.131 0.828
5 Residuals 26 25090. 965. NA NA 0.172 0.828
mtcars %>%
lm(hp ~ factor(gear) + factor(am) + qsec + wt, data = .) %>%
summary() %>% .["r.squared"]
$r.squared
[1] 0.8278279
aov_model <- aov(hp ~ (gear) + (am) + qsec + wt, data = mtcars)
library(lsr)
etaSquared(aov_model, type = 1)
eta.sq eta.sq.part
gear 0.440638981 0.7190454
am 0.005210947 0.0293768
qsec 0.250925660 0.5930678
wt 0.131052319 0.4321958