Используйте glm для прогнозирования fre sh данных - PullRequest
1 голос
/ 10 июля 2020

Я относительно новичок в glm, поэтому, пожалуйста, потерпите меня.

Я создал glm (logisti c regression), чтобы предсказать, ПРОДОЛЖАЕТ ли человек учиться («0») или НЕ ПРОДОЛЖАЕТ («1»). Мне интересно предсказать последнее. В glm используются семь факторов в наборе данных, и матрицы путаницы очень хороши для того, что мне нужно, также было выполнено объединение данных за семь лет. Прямо вперед.

Однако теперь мне нужно применить модель к данным за текущие годы, в которых, конечно, нет столбца NOTCONTINUE. Допустим, модель glm - «CombinedYears», а новые данные - «Data2020»

Как я могу использовать модель glm, чтобы получить прогнозы о том, кто будет («0») или НЕ («1») продолжить их учеба? Мне нужно вставить столбец NOTCONTINUE в последний файл ?? Я пробовал эту структуру

Predict2020 <- predict (CombinedYears, data.frame (Data2020), type = 'response') </p>

, но результат содержит только значения <0,5. </p>

Любая помощь очень признательна. Заранее спасибо

1 Ответ

0 голосов
/ 11 июля 2020

Вы упомянули, что уже создали модель прогнозирования, чтобы предсказать, будет ли конкретный студент продолжать учебу или нет. Вы использовали пакет glm, и название вашей модели - CombinedYears.

Теперь вы должны знать, что ваша проблема - это двоичная классификация, и вы использовали для этого регрессию logisti c. Результатом вашей модели, когда вы применяете ее к новым данным или даже к тем же данным, которые используются для соответствия модели, являются вероятности. Это значения от нуля до единицы. На этапе разработки вашей модели вам необходимо определить порог отсечения этих вероятностей, который вы можете использовать позже, когда будете прогнозировать новые данные. Например, вы можете определить 0,5 в качестве порогового значения, и каждая вероятность выше, которая считается НЕ ПРОДОЛЖИТЬ, а ниже - ПРОДОЛЖИТЬ. Однако лучший порог может быть определен на основе ваших данных, максимизируя как специфичность, так и чувствительность. Это можно сделать, рассчитав площадь под кривой рабочих характеристик приемника c (AU C). Есть много пакетов, которые могут сделать это за вас, например, пакеты pRO C и AU C в R. Те же самые пакеты также могут определить лучшее отсечение.

Что вам нужно сделать, так это следующее:

  1. Определите порог отсечения после расчета AU C

    library(pROC)
    roc_object = roc(your_fit_data$NOTCONTINUE ~ fitted(CombinedYears))
    coords(roc.roc_object, "best", ret="threshold", transpose = FALSE)
    
  2. Используйте свою модель для прогнозирования вашего нового года данных (как и вы)

    
    
     Predict2020 = predict(CombinedYears, data.frame(Data2020), type = 'response')
    
  3. Теперь содержание Predict2020 - это просто вероятности для каждого ученика. Используйте отсечку, полученную на шаге (1), чтобы соответственно классифицировать своих учеников

...