【问题标题】:Efficiently use predict.glm with multiple models高效地将 predict.glm 与多个模型一起使用
【发布时间】:2015-02-04 05:34:58
【问题描述】:

我正在权衡使用一个单一模型的效果,而不是在大约 100,000 行数据上拆分成两个不同的模型(拆分模型)。为此,我从拆分模型中得到结果,如下所示:

preds <- numeric(nrow(DF))
for (i in 1:nrow(DF))
{
  if (DF[i,]$col == condition)
  {
    preds[i] <- predict(glm1, DF[i,])
  }
  else
  {
    preds[i] <- predict(glm2, DF[i,])
  }
}

无论出于何种原因,这似乎都非常缓慢,尤其是与像这样只按整个数据框相比时:

preds <- predict(glm1,DF)

您对如何优化第一个 sn-p 有任何想法吗?

【问题讨论】:

  • 我一点也不惊讶它很慢。似乎您可以通过使用适当的一对“newdata”参数来通过两个“预测”调用来获得它。
  • 正如我在另一条评论中提到的,我需要保持顺序与数据框的顺序相同,以便我可以执行检查 ROC 之类的操作。

标签: r logistic-regression predict


【解决方案1】:
preds1 <- predict(glm1, DF[DF$col == condition, ])
preds2 <- predict(glm2, DF[DF$col != condition,])

如果您希望它们在保存向量中,只需使用c()

如果您想构建一个包含由condition 分层的实际值和预测值的数据框,那么首先创建一个包含“实际”和cond 变量的结构,其中一些目前尚未命名或归因于任何变量特定的结构,所以我假设它们位于名为 DF 的数据框中,列名为“actual”:

 compare.df <- data.frame(act=DF$actual, cond =DF$col, pred = NA)
 compare.df[DF$col==condition, 'pred'] <- 
        predict(glm1, DF[DF$col == condition, ])
 compare.df[DF$col !=condition, 'pred'] <- 
        predict(glm2, DF[DF$col != condition, ])

【讨论】:

  • 这里的主要问题是,如果我想将预测值与实际值进行比较,我现在已经失去了 DM 的原始排序。
猜你喜欢
  • 1970-01-01
  • 2010-11-08
  • 2021-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-28
  • 2018-11-22
  • 1970-01-01
相关资源
最近更新 更多