我注意到当使用虚拟编码来拟合我的线性模型时,R 在形成模型矩阵时排除了某些参数。这样做的R算法是什么?
问问题
151 次
1 回答
2
它没有很好的记录,但它可以追溯到底层 LAPACK 代码使用的任何旋转算法:
来自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 使用户主变换来计算
n 乘以 p 矩阵 x 的 qrc 因式分解。
基于缩减列 c 的 2 范数的有限列c 旋转策略将具有接近零范数的列移动到 x 矩阵 c 的
右侧边缘。
这种策略意味着
可以以自然的方式计算连续的一个 c 自由度效应。
在实践中,我通常发现 R 消除了一组共线预测变量的最后(最右边)列......
于 2016-08-23T16:22:30.843 回答