据我所知,在公式中有三种可能的方法来编码二阶(和更高)项。
我们可以使用函数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(..)
不会改变结果,对吗?
答案 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)