我想询问方差F检验。可以使用该检验来测量因变量对系数的贡献吗?
[Anova检验比较了特定组之间和组之间的差异,在线性回归中,我们使用它来检验Wheater的所有回归系数(除截距外)均等于零。
我的问题是,我们是否可以按如下方式比较回归中使用的每个项的残差和平方:
library(tidyverse)
mtcars %>%
lm(hp ~ factor(gear) + factor(am) + qsec + wt, data = .) %>%
aov() %>%
broom::tidy() %>%
mutate(contribution = sumsq/sum(sumsq))
我们能否将摘要输出解释为:gear解释因变量的44%左右的可变性? qsec解释了大约25%的可变性吗?这种方法可以在实践中用作例如如果我们仅需选择一个变量来解释因变量,则在此示例中应选择gear仅包含此变量?
我想问一下这是否正确,最重要的是为什么
是的,您的解释是正确的。观察这种情况的一种方法是,如果我们取所有sumsq
的总和,减去sumsq
的残差,然后将该数量除以sumsq
的总和,我们将得出回归的R平方(因此由我们的模型解释的总方差的百分比)。
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
由一个主效应(或相互作用效应)解释的方差比例称为“平方平方”,是effect size量度。有一些函数可以计算出来,例如使用lsr
包:
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
您可以在实践中使用它来选择最重要的变量,但我会选择套索回归等其他模型来做到这一点。