2017-08-24 209 views
1

我在将rxGlm模型转换为正常的glm模型时遇到问题。每次我和隐蔽我的模型,我得到了同样的错误:将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

你为什么要转换它? –

+0

你可以指定'RevoScaleR'的版本吗 – akrun

+0

@NielsBerglund我希望将它转换为与Broom包一起使用(它使处理系数输出变得容易很多,尤其是绘图) –

回答

1

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

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

+0

再次感谢 - 我认为Broom正在调用Summary函数,它是所有错误的地方。我想我可以创建一个解决方法,但很高兴知道它不是一个明确的错误。 –

相关问题