R:nls()公式中的多项式快捷符号

时间:2010-09-04 19:05:48

标签: r formula nls lm

使用线性模型函数lm()多项式公式可以包含如下的快捷符号:

m <- lm(y ~ poly(x,3))

这是一种快捷方式,可以使用户不必创建x ^ 2和x ^ 3变量,或者在I(x^2) + I(x^3)等公式中键入变量。是否有非线性函数nls()的可比表示法?

2 个答案:

答案 0 :(得分:6)

poly(x, 3)不仅仅是x + I(x ^ 2) + I(x ^ 3)的快捷方式 - 它实际上会生成legendre polynomials,它具有不相关的良好属性:

options(digits = 2)
x <- runif(100)
var(cbind(x, x ^ 2, x ^ 3))
#       x            
# x 0.074 0.073 0.064
#   0.073 0.077 0.071
#   0.064 0.071 0.067
zapsmall(var(poly(x, 3)))
#      1    2    3
# 1 0.01 0.00 0.00
# 2 0.00 0.01 0.00
# 3 0.00 0.00 0.01

答案 1 :(得分:5)

简答:是的。

稍微长一点的答案:测试这个很便宜。我刚刚运行example(nls)来加载模型和数据,然后插入一个带有poly()的术语。

更长的答案:lm()实际上并不知道poly(),公式在拟合发生之前得到解决。所以在nls()具有公式接口的意义上......它必然会接受poly()

偏离主题,不要求:您是否根据Harrell的RMS书查看样条线?