什么是R算法的虚拟编码模型矩阵?

时间:2016-08-23 14:48:37

标签: r dummy-variable

我注意到当使用虚拟编码来拟合我的线性模型时,R在形成模型矩阵时排除了某些参数。这样做的R算法是什么?

1 个答案:

答案 0 :(得分:2)

没有详细记录,但它可以追溯到底层LAPACK代码使用的任何旋转算法:

来自source code of lm.fit

z <- .Call(C_Cdqrls, x, y, tol, FALSE)
...
coef <- z$coefficients
pivot <- z$pivot
...
r2 <- if(z$rank < p) (z$rank+1L):p else integer()
if (is.matrix(y)) {
    ....
} else {
    coef[r2] <- NA
    ## avoid copy
    if(z$pivoted) coef[pivot] <- coef
    ...
}

如果你想进一步深入挖掘,你需要研究dqrdc2.f,其中说明了(它的价值):

  

c dqrdc2使用户主变换来计算qr
  c由p矩阵x对n进行分解。有限的栏目   c基于减少列的2范数的旋转策略
  c将具有接近零范数的列移动到
的右边缘   c x矩阵。这种策略意味着顺序一   c自由度效应可以自然的方式计算。

在实践中我一般发现R消除了一组共线预测变量的最后一列(最右边)...