我尝试在R' lm.fit.recursive
包中使用函数quantreg
来构造一个简单回归的递归残差而不是常量。
以下是一种不起作用的方法的最小示例:
# some data
n <- 20
z <- rnorm(n)
x <- rnorm(n)
x.mat <- matrix(rnorm(2*n),ncol=2)
lm.fit.recursive(x, z, int=T) # works WITH intercept with one regressor
lm.fit.recursive(x.mat, z, int=F) # works WITHOUT intercept with two regressors
lm.fit.recursive(x, z, int=F) # what I actually want but which returns Error in 1:p : argument of length 0
我的预感是错误与回归矩阵有关,在这种情况下,回归矩阵不是矩阵而是向量,这导致R以不同方式处理这个变量。
这是正确的,还是我错误地使用了这个功能?
答案 0 :(得分:0)
确实,
> lm.fit.recursive
function (X, y, int = TRUE)
{
if (int)
X <- cbind(1, X)
p <- ncol(X)
n <- nrow(X)
D <- qr(X[1:p, ])
...
}
以便ncol(x)=0
为向量。因此,
lm.fit.recursive(as.matrix(x,ncol=1), z, int=F)
提供了一种解决方法。