poly()和正交多项式

时间:2015-04-05 21:02:57

标签: r regression linear-algebra linear-regression

我搜索了R中的poly(),我认为它应该产生正交多项式,所以当我们在回归模型中使用它时,如lm(y~poly(x,2)),预测变量是不相关的。但是:

poly(1:3,2)=
[1,] -7.071068e-01  0.4082483
[2,] -7.850462e-17 -0.8164966
[3,]  7.071068e-01  0.4082483

我认为这可能是一个愚蠢的问题,但我不明白的是结果poly(1:3,2)的列向量没有内积为零?那是-7.07*0.40-7.85*(-0.82)+7.07*0.41=/ 0?那么这种不相关的回归预测因素怎么样?

1 个答案:

答案 0 :(得分:3)

您的主要问题是您错过了e"E notation"的含义:正如上面@MamounBenghezal所评论的那样,fff e {{ 1}}是ggg

的简写

我得到略微不同的答案(差异在数值上是微不足道的)因为我在不同的平台上运行它:

fff * 10^(ggg)

更简单的格式:

pp <- poly(1:3,2)
##                  1          2
## [1,] -7.071068e-01  0.4082483
## [2,]  4.350720e-18 -0.8164966
## [3,]  7.071068e-01  0.4082483

或者使用您的示例,正​​确放置小数点:

print(zapsmall(matrix(c(pp),3,2)),digits=3)
##        [,1]   [,2]
## [1,] -0.707  0.408
## [2,]  0.000 -0.816
## [3,]  0.707  0.408

sum(pp[,1]*pp[,2]) ## 5.196039e-17, effectively zero