以数据集"iris"为例。
假设我试图弄清楚是否有一个模型适合变量"Sepal.Width"和"Sepal.Length",如果我要检查线性回归模型,我可以简单地使用lm
函数:
lm(Sepal.Length ~ Sepal.Width, data = iris)
让我们假设我的 R 平方值很低,相反,我有一种预感,它不是线性模型,而是二度模型。所以像这样:
Sepal.Length ~ Sepal.Width + Sepal.Width^2
R 中是否有任何命令/包可以帮助我确定我的数据是否更有可能遵循二阶方程拟合?
首先,公式接口不允许此公式表示您认为它应该表示的含义。您需要执行以下操作:
Sepal.Length ~ Sepal.Width + I(Sepal.Width)^2
但即使这样也不是用于统计推断的正确方法。相反,您应该比较这两个模型:
mod1 <- lm( Sepal.Length ~ Sepal.Width, data=iris)
mod2 <- lm( Sepal.Length ~ poly( Sepal.Width, 2) , data=iris)
anova( mod1, mod2)
poly
函数创建正交多项式,推论统计量可以正确解释 X 和 X^2 之间的相关性。结果:
Analysis of Variance Table
Model 1: Sepal.Length ~ Sepal.Width
Model 2: Sepal.Length ~ poly(Sepal.Width, 2)
Res.Df RSS Df Sum of Sq F Pr(>F)
1 148 100.756
2 147 98.752 1 2.0044 2.9838 0.0862 .
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
。显示提示性 p 值为 0.086,但许多期刊会觉得这无趣。除了编码问题之外,这可能在我会参考任何后续问题的 CrossValidated.com 更好地处理。