R:用高阶项编码lm公式的等效方法

时间:2013-08-21 15:25:38

标签: r lm higher-order-functions quadratic

据我所知,在公式中有三种可能的方法来编码二阶(和更高)项。

我们可以使用函数I(..),函数poly(..),我们可以自己构造第二度的变量。我的问题是:这些功能如何运作?

set.seed(23)
A = rnorm(12)
B = 1:12
C = factor(rep(c(1,2,3),4))
B2=B^2

使用lm(A~poly(B,2)*C)或使用变量I(..)时,B2相当于什么?

raw=T函数中使用poly(..)不会改变结果,对吗?

2 个答案:

答案 0 :(得分:1)

lm(A~B2*C)

lm(A~I(B^2)*C)

给出平方列B然后进行回归的结果。使用

poly(B,2)

完全不同 - 请参阅?poly。

编辑添加: poly()计算正交多项式,这些正多项式与从简单平方,立方体等数字导出的标准多项式不同。

答案 1 :(得分:1)

是否意味着poly(B,2,raw = T)等于I(B ^ 2)或B + I(B ^ 2)?

尝试:

x = 0:99
df = data.frame(x=x,y=rnorm(100)+0.1*x + 0.04*x*x)
lm(y~poly(x,2),data=df)
lm(y~poly(x,2,raw=TRUE),data=df)
lm(y~x+I(x^2),data=df)