我试图用 R 来理解多项式拟合。从我在互联网上的研究来看,显然似乎有两种方法。假设我想将三次曲线拟合ax^3 + bx^2 + cx + d
到某个数据集中,我可以使用:
lm(dataset, formula = y ~ poly(x, 3))
或者
lm(dataset, formula = y ~ x + I(x^2) + I(x^3))
然而,当我在 R 中尝试它们时,我最终得到了两条截距和系数完全不同的不同曲线。关于多项式我在这里没有得到什么?
我试图用 R 来理解多项式拟合。从我在互联网上的研究来看,显然似乎有两种方法。假设我想将三次曲线拟合ax^3 + bx^2 + cx + d
到某个数据集中,我可以使用:
lm(dataset, formula = y ~ poly(x, 3))
或者
lm(dataset, formula = y ~ x + I(x^2) + I(x^3))
然而,当我在 R 中尝试它们时,我最终得到了两条截距和系数完全不同的不同曲线。关于多项式我在这里没有得到什么?
我现在明白了。原始多项式与正交多项式的 R 计算之间似乎存在差异。谢谢大家的帮助。
这归结为不同功能的作用。poly
生成正交多项式。poly(dataset$x, 3)
比较的值I(dataset$x^3)
。您的系数会有所不同,因为直接传递给线性模型的值(而不是通过I
orpoly
函数间接传递)是不同的。
正如 42 所指出的,您的预测值将非常相似。如果a
是您的第一个线性模型并且b
是您的第二个,b$fitted.values - a$fitted.value
则在所有点上都应该相当接近 0。