Существует ли функция R, которая выполняет регрессию LASSO для нескольких вмененных наборов данных и объединяет результаты вместе?

У меня есть набор данных с 283 наблюдениями 60 переменных. Моя переменная результата дихотомическая (диагноз) и может быть одной из двух болезней. Я сравниваю два типа заболеваний, которые часто сильно перекрываются, и пытаюсь найти особенности, которые могут помочь дифференцировать эти заболевания друг от друга. Я понимаю, что логистическая регрессия LASSO является лучшим решением для этой проблемы, однако она не может быть запущена для неполного набора данных.

Поэтому я вменял свои недостающие данные с помощью пакета MICE в R и обнаружил, что примерно 40 исчислений хорошо для количества недостающих данных, которые у меня есть.

Теперь я хочу выполнить лассо-логистическую регрессию для всех моих 40 вмененных наборов данных и каким-то образом застрял в той части, где мне нужно объединить результаты всех этих 40 наборов данных.

Функция with() из MICE не работает на.glmnet

Импутировать базу данных с отсутствующими значениями с помощью пакета MICE:

imp<-mice(WMT1, m = 40)

Подходит регулярная логистическая регрессия по вмененным данным:

 imp.fit <- glm.mids(Diagnosis~., data=imp, 
                    family = binomial)

Объедините результаты всех 40 вмененных наборов данных:

Резюме (пул (imp.fit),2)

Кажется, что вышеприведенное работает нормально с логистической регрессией, используя glm(), но когда я пытаюсь выполнить то же самое, что и для регрессии Лассо, я получаю:

Сначала выполните перекрестную проверку, чтобы найти оптимальное значение лямбда:

CV<- cv.glmnet (Диагноз ~., Данные = чертенок, семья = "бином", альфа = 1, nlambda = 100)

Когда я пытаюсь выполнить перекрестную проверку, я получаю это сообщение об ошибке:

 Error in as.data.frame.default(data) : 
    cannot coerce class ‘"mids"’ to a data.frame

Может ли кто-нибудь помочь мне с этой проблемой?

0 ответов

Мысль: подумайте о том, чтобы провести анализ каждого из 40 наборов данных. Затем, сохраняя, какие переменные выбраны в каждой в матрице. Затем устанавливаем некоторый порог (например, выбран в>50% наборов данных).

Другие вопросы по тегам