【问题标题】:Error converting rxGlm to GLM将 rxGlm 转换为 GLM 时出错
【发布时间】:2017-08-24 12:06:14
【问题描述】:

我在将 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

我似乎无法在 rxGlm 公式中找到这个“qr”组件(我假设这与矩阵分解有关)。

其他人处理过这个吗?

【问题讨论】:

  • 为什么要转换它?
  • 能否指定RevoScaleR的版本
  • @NielsBerglund 我希望对其进行转换以便将其与 Broom 包一起使用(它使处理系数输出变得更加容易,尤其是在绘图时)
  • @akrun its 9.0.1
  • 也许您可以更新到 9.1,然后检查是否仍然出现相同的错误

标签: r glm microsoft-r


【解决方案1】:

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

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

【讨论】:

  • 再次感谢 - 我认为 Broom 正在调用 Summary 函数,这一切都出错了。我想我可以创建一个解决方法,但很高兴知道它不是一个明确的错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-06
  • 2016-04-07
  • 2013-08-28
  • 2016-11-23
  • 2019-01-22
  • 1970-01-01
相关资源
最近更新 更多