我在将rxGlm模型转换为普通glm模型时遇到问题。每当我尝试转换模型时,我都会遇到同样的错误:
Error in qr.lm(object) : lm object does not have a proper 'qr' component.
Rank zero or should not have used lm(.., qr=FALSE).
这是一个简单的例子:
cols <- colnames(iris)
vars <- cols[!cols %in% "Sepal.Length"]
form1 <- as.formula(paste("Sepal.Length ~", paste(vars, collapse = "+")))
rx_version <- rxGlm(formula = form1,
data = iris,
family = gaussian(link = 'log'),
computeAIC = TRUE)
# here is the equivalent model with base R
R_version <- glm(formula = form1,
data = iris,
family = gaussian(link = 'log'))
summary(as.glm(rx_version)) #this always gives the above error
我似乎无法找到这个“qr”组件(我假设这与矩阵分解有关)在rxGlm公式中指定。
其他人处理过此事吗?
答案 0 :(得分:1)
rxGlm
个对象没有qr
组件,转换为glm
对象不会创建一个组件。这是故意的,因为计算模型矩阵的QR分解需要将完整的数据集放在内存中,这会破坏使用rx *函数的目的。
as.glm
对于通过PMML支持模型导入/导出更有意义。您想要做的大部分事情都可以使用rxGlm
对象完成,而无需转换。例如,rxGlm
计算系数std错误作为拟合的一部分,之后不需要qr
组件。