我正在使用MatrixModels:::lm.fit.sparse
和MatrixModels::glm4
(也很稀疏)拟合线性模型。
但是,这些函数仅返回coeff
,residuals
和fitted.values
。
获取/计算另一个值(例如stderr
,t-value
,p-value
,predict
值)的最快和最简单的方法是什么?
答案 0 :(得分:1)
我使用time.sleep(*Large number here*)
示例中的数据。
我构建了一个自定义函数MatrixModels:::lm.fit.sparse
来为该模型执行摘要。
所有矩阵运算均使用summary_sparse
包执行。
将结果与密集型模型进行比较。
注意Matrix
必须与lm.fit.sparse
一起评估才能获得正确的结果。
功能:
method = "chol"
应用程序:
summary_sparse <- function(l, X) {
XXinv <- Matrix::chol2inv(Matrix::chol(Matrix::crossprod(X)))
se <- sqrt(Matrix::diag(XXinv*sum(l$residuals**2)/(nrow(X)-ncol(X))))
ts <- l$coef/se
pvals <- 2*c(1 - pnorm(abs(ts)))
list(coef = l$coef, se = se, t = ts, p = pvals)
}
predict_sparse <- function(X, coef) {
X %*% coef
}