我正在使用quantreg
包来预测基于训练集的新数据。predict.rq
但是,我注意到orpredict
和手动执行之间存在差异。这是一个例子:
分位数回归设置为
N = 10000
tauList = seq(1:11/12)/12
y = rchisq(N,2)
X = matrix( rnorm(3*N) ,nrow = N, ncol = 3 )
fit <- rq( y ~ X-1, tau = tauList, method = "fn")
我要预测的新数据集是
newdata <- matrix( rbeta((3*N),2,2) ,nrow = N,ncol=3 )
我使用predict.rq
orpredict
来预测 newdata。两者都返回相同的结果:
fit_use_predict <- predict.rq( fit, newdata = as.data.frame(newdata) )
我也手动根据系数矩阵进行预测:
coef_mat <- coef(fit)
fit_use_multiplication <- newdata %*% coef_mat
我希望两者在数字上是相同的,但它们不是:
diff <- fit_use_predict - fit_use_multiplication
print(diff)
他们的差异不容忽视。
然而,预测原始数据集X
,两者都返回相同的结果,即
predict(fit, newdata = data.frame(X)) = X %*% coef_mat ## True
使用该功能时我会错过什么吗?谢谢!