如何检查数据集的二阶方程拟合?



以数据集"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 更好地处理。

最新更新