我注意到当使用虚拟编码来拟合我的线性模型时,R在形成模型矩阵时排除了某些参数。这样做的R算法是什么?
答案 0 :(得分:2)
没有详细记录,但它可以追溯到底层LAPACK代码使用的任何旋转算法:
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消除了一组共线预测变量的最后一列(最右边)...