2015-02-04 3 views
0

Я взвешиваю эффективность использования одной монолитной модели по сравнению с разбивкой на две разные модели (разделенная модель) на около 100 000 строк данных. Чтобы сделать это, я получаю результаты моей разделенной модели, как так:Эффективно использовать predict.glm с несколькими моделями

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) 

Есть ли у вас идеи о том, как я могу оптимизировать первый фрагмент?

+0

Я нисколько не удивлен, что это медленно. Кажется, вы можете получить это с помощью двух «предсказывающих» вызовов, используя подходящую пару аргументов «newdata». –

+0

Как я уже упоминал в другом комментарии, мне нужно сохранить порядок таким же, как и в кадре данных, чтобы я мог делать такие вещи, как исследование ROC. – user1775655

ответ

1
preds1 <- predict(glm1, DF[DF$col == condition, ]) 
preds2 <- predict(glm2, DF[DF$col != condition,]) 

Если вы хотите, чтобы они в векторе сохранения использовали только c().

Если вы хотите построить dataframe с фактическими и прогнозируемыми значениями расслаиваются по condition то сначала сделать структуру, которая держит «фактический» и cond переменных, некоторые из которых в данный момент не названы или приписываемых какой-либо конкретной структуры, поэтому я предполагаю, что они находятся в кадре данных с именем DF с заголовком «актуальный»:

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, ]) 
+0

Основная проблема здесь в том, что если я хочу сравнить предсказанные значения с фактическими значениями, я теперь потерял первоначальный порядок DM. – user1775655

Смежные вопросы