有效地使用具有多个模型的predict.glm

时间:2015-02-04 05:34:59

标签: r logistic-regression predict

我正在权衡使用一个单片模型的效果,而不是分成大约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)

您对如何优化第一个代码段有什么想法吗?

1 个答案:

答案 0 :(得分: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, ])