将rxGlm转换为GLM时出错

时间:2017-08-24 12:06:14

标签: r glm microsoft-r

我在将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公式中指定。

其他人处理过此事吗?

1 个答案:

答案 0 :(得分:1)

rxGlm个对象没有qr组件,转换为glm对象不会创建一个组件。这是故意的,因为计算模型矩阵的QR分解需要将完整的数据集放在内存中,这会破坏使用rx *函数的目的。

as.glm对于通过PMML支持模型导入/导出更有意义。您想要做的大部分事情都可以使用rxGlm对象完成,而无需转换。例如,rxGlm计算系数std错误作为拟合的一部分,之后不需要qr组件。