我正在使用lm(y~poly(x,2))
来拟合我的数据的二次多项式。但是我找不到一种指定已知截距值的方法。如何使用lm
拟合一个已知截距值(比如说'k')的多项式模型呢?
我正在使用lm(y~poly(x,2))
来拟合我的数据的二次多项式。但是我找不到一种指定已知截距值的方法。如何使用lm
拟合一个已知截距值(比如说'k')的多项式模型呢?
lm(y~-1+x+I(x^2)+offset(k))
-1
可以抑制拟合时的常数项x
添加了线性项I(x^2)
添加了二次项;需要用 I()
包含这个项,这样 R 才能正确解释 ^2
代表平方,而不是 x
和自己交互(按公式规则等价于仅包含 x
)offset(k)
添加已知的常量截距我不确定是否可以使用 poly(x,2)-1
去除截距,您可以尝试一下。从数据中减去截距应该也可以,但是使用 offset(k)
可能更加明确。您可能需要将 k
设为向量(即将其复制到数据集的长度,或者更好地将其作为列包含在数据集中,并通过 data=...
传递数据)。
y=b0+b1*x1+b2*x2+1*offset
而不是y=b0+b1*x1+b2*x2+b3*offset
(其中b3
将是“估计系数”)。 - Ben Bolker
offset(k)
更加明确。 - rm167