Проблема с множественным кодом логистической регрессии с несколькими предикторами

#r #regression #analysis

#r #регрессия #анализ

Вопрос:

Я пытаюсь выполнить множественную логистическую регрессию с некоторыми переменными, которые оказались статистически значимыми для заболеваний с одномерным анализом. Мы приняли для этого значение p <0,2, поскольку размер нашей выборки составлял ~ 300. Я создал новый фрейм данных для этих переменных

 regression1df <- data.frame(dgfcriteria, recipientage, ESRD_dx,bmirange,graftnumber, dsa_class_1, organ_tx, transfuse01m, transfuse1yr, readmission1yr, citrange1, switrange, anastamosisrange, donorage, donorgender, donorcriteria, donorionotrope, intubaterange, kdpirange, kdrirange, eptsrange, proteinuria, terminalurea, na.rm=TRUE)
  

Я использую переменные для прогнозирования состояния болезни, которое равно DGF (dgfcriteria ==1), а не-заболевание — это отсутствие DGF (dgfcriteria == 0).

Вот структура данных.

введите описание изображения здесь

Когда я попытался запустить весь список переменных с помощью glm-кода, я получил:

 predictors1 <- glm(dgfcriteria ~.,
data = predictors1df,
family = "binomial" )
  

Ошибка в contrasts<- ( *tmp* , значение = contrfuns[1 isOF[nn]]) :
контрасты могут применяться только к факторам с 2 или более уровнями.

Но когда я запускаю его только с некоторыми переменными фрейма данных, появляется вывод.

 predictors1 <- glm(dgfcriteria ~ recipientage   ESRD_dx   bmirange   graftnumber   dsa_class_1   organ_tx   transfuse01m   transfuse1yr    readmission1yr  citrange1  switrange   anastamosisrange  donorage  donorgender   donorcriteria   donorionotrope,
data = predictors1df,
family = "binomial" )
  

Этот вывод выглядит действительно странно, хотя с большим количеством NAs.

введите описание изображения здесь

Где я ошибся?

Комментарии:

1. Это не значит, что вы ошиблись, обычно это означает, что когда у вас есть сообщение о сингулярности и значения NA, у вас есть переменные, которые не являются линейно независимыми… это означает, что их прогнозируемость учитывается другими переменными без значений NA для коэффициентов. Что вы можете сделать, так это удалить целые наборы переменных, когда они содержат NA для большинства уровней.

2. Вероятно, вам следует использовать корреляционную матрицу, чтобы оценить, в какой степени ваши переменные связаны до моделирования.

3. @sconfluentus Я уже провел одномерный анализ для измерения ассоциации примерно для 500 переменных, и это были те, у которых значение p <0,2. Я думаю, что я отброшу некоторые переменные и просто использую значимые для моделирования.

4. Вероятно, что не вся переменная, а только некоторые категории в некоторых переменных сильно коррелируют с другими переменными. И кажется, что вы создали группы некоторых непрерывных переменных, это может вызвать проблемы несколько раз. Я думаю, что если бы вы прочитали одну или две главы о регрессиях, вы могли бы найти там некоторые ответы, которые вы ищете. Современный подход к регрессии с помощью R Саймона Хизера содержит хорошие главы о выборе переменных, логистической регрессии и последовательной корреляции данных. Эти главы должны направить вас в правильном направлении!

Ответ №1:

Глядя на вашу структуру данных, у вас много пропущенных значений. Похоже, что многие из ваших переменных имеют только 2 или 3 не пропущенных значения в первых 10 строках. При выполнении регрессии для данных с пропущенными значениями по умолчанию отбрасываются все строки, в которых есть пропущенные значения.

По-видимому, некоторые из ваших данных имеют плохие перекрытия, так что, когда все строки с пропущенными значениями отбрасываются (см. na.omit(your_data) , Что осталось), у некоторых переменных остается только один уровень, и поэтому они больше не подходят для регрессии. Конечно, когда вы используете только некоторые переменные, будет удалено меньше строк, и вы можете оказаться в лучшей ситуации.

Итак, вам придется решить, что делать с вашими пропущенными значениями. Это должно зависеть от ваших целей и вашего понимания причин отсутствия. Общие возможности включают пропуск, вменение, создание новых «недостающих» уровней и учет уровня недостачи при выборе переменной.

Комментарии:

1. Спасибо за проницательный ответ. К сожалению, это ретроспективные клинические данные, поэтому мне приходится довольствоваться тем, что уже собрано, потому что мы не можем вернуться назад во времени, чтобы собрать эти образцы крови. Следуя вашему предложению, я разделил фрейм данных и снова запустил модели примерно с 3-4 переменными. Итак, теперь у меня есть 3 модели. Кажется, что комбинация переменных имеет значение, потому что в зависимости от того, в какую модель я помещаю возраст получателя, он может оказаться или не оказаться значительным… Есть идеи, почему это так?

2. Потому что некоторые из ваших переменных более или менее коррелируют с возрастом. Допустим BMI , и age коррелируют, и оба коррелируют с вашим результатом. Модель с или BMI или age покажет эту переменную как значимую. Модели с обоими будет трудно различать их. Это должно быть описано в любом учебнике или курсе по множественной регрессии.

3. Я бы настоятельно рекомендовал взять хорошую книгу по регрессии … исходя из вашего предмета и ваших проблем, я бы порекомендовал стратегии регрессионного моделирования Фрэнка Харрелла.