r - 用数值自变量解释方差分析中的 Sum Sq
问题描述
我不知道如何解释数字自变量中的平方和。
summary(aov(Petal.Width ~ Petal.Length + Species, iris))
## Df Sum Sq Mean Sq F value Pr(>F)
## Petal.Length 1 80.26 80.26 2487.02 < 2e-16 ***
## Species 2 1.60 0.80 24.77 5.48e-10 ***
## Residuals 146 4.71 0.03
## ---
## Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Species 中的平方和对我来说很清楚(与组均值的平方偏差之和),但是如果你有一个像 Petal.Length 这样的数字自变量,如何解释它们?
解决方案
该线性模型的组件不是正交的,因此我们无法独立于其他组件计算每个组件的平方和 (SS)。相反,我们必须进行一系列模型比较。在这种情况下aov
,由于组件在公式中列出的顺序而考虑这些模型。
fm0 <- lm(Petal.Width ~ 1, iris) # null model
fm1 <- lm(Petal.Width ~ Petal.Length, iris)
fm2 <- lm(Petal.Width ~ Petal.Length + Species, iris) # full model
请注意,模型的残差平方和 (RSS)fm
是sum(resid(fm)^2)
并且 R 有一个专门用于此的函数,即deviance(fm)
。记住这一点,我们可以像这样分解空模型的 RSS:
deviance(fm0) # RSS of null model
= (deviance(fm0) - deviance(fm1) # SS of Petal.Length
+ (deviance(fm1) - deviance(fm2) # SS of Species
+ deviance(fm2) # RSS of full model
并且问题表格中报告的每个平方和都是上面的行之一。那是,
deviance(fm0) - deviance(fm1) # SS of Petal.Length
## [1] 80.25984
deviance(fm1) - deviance(fm2) # SS of Species
## [1] 1.598453
deviance(fm2) # RSS of full model
## [1] 4.711643
笔记
请注意,我们获得的 SS 值取决于我们使用的模型序列。例如,如果我们使用Species
之前考虑的这个序列Petal.Length
(而上面我们考虑了Petal.Length
then Species
),我们会得到不同的 SS 值。
fm0 # same null model as above
fm1a <- lm(Petal.Width ~ Species, iris)
fm2 # same full model as above
deviance(fm0) - deviance(fm1a) # SS of Species
## [1] 80.41333
deviance(fm1a) - deviance(fm2) # SS of Petal.Length
## [1] 1.444957
deviance(fm2) # RSS of full model
## [1] 4.711643
并注意,如果我们按该顺序列出组件,这确实对应于 aov,即这一次我们之前列出来Species
更改将考虑Petal.Length
的模型序列:aov
summary(aov(Petal.Width ~ Species + Petal.Length, iris))
## Df Sum Sq Mean Sq F value Pr(>F)
## Species 2 80.41 40.21 1245.89 < 2e-16 ***
## Petal.Length 1 1.44 1.44 44.77 4.41e-10 ***
## Residuals 146 4.71 0.03
## ---
## Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
推荐阅读
- typescript - TypeScript 2.8.3 类型必须有一个返回迭代器的 Symbol.iterator 方法
- css - SASS 彩虹背景简化
- python-3.x - 在openCV python中绘制矩形
- python - pyinstaller 会很快支持更多的软件包吗?
- xml - 我无法在 vb.net 中拆分 xml 数据
- react-native - 对于 React Native 的两种方式数据绑定,更改不会反映在 View 中
- c# - 如何在 Windows 10 上使用 OLE DB MSIDXS 提供程序在 C# 应用程序中搜索 pdf 文件的内容?
- javascript - 为什么 IE 11 会自动更改变量的值?
- java - 休息服务号码验证
- java - Selenium 与 TorBrowser