У меня проблемы с перекрестной проверкой в ​​R с пакетом purrr - PullRequest
0 голосов
/ 07 декабря 2018

Набор данных, с которым я работаю, взят из Текущего опроса населения по IPUMS, и в нем содержится около 1 716 121 наблюдений 13 переменных.Я пытаюсь выполнить перекрестную проверку этих данных и затем отобразить полученный AUC.

Модель, которую я использую, представляет собой логистическую регрессию, а моя зависимая переменная представляет собой двоичную переменную (имеет значение 0 или 1).Всякий раз, когда я запускаю код, я получаю предупреждение:

В bind_rows_ (x, .id): векторизация «помеченных» элементов может не сохранять их атрибуты.

IЯ не уверен, что это значит.

Я также получаю ошибки:

Ошибка выбора (., .Id, исход, pred): неиспользованные аргументы (.id, исход, pred) "

и

Ошибка в summarise_impl (.data, dots): Ошибка оценки: объект «исход» не найден.

Если кто-то может помочь мне сэто, это будет с благодарностью!

Мой код:

    mod1_formula<-formula("self_employ~
    as.factor(educ_level)+
    as.factor(SEX)+
    as.factor(RACE)+
    as.factor(NCHILD)")
    cps_data %>%
    crossv_kfold(k=2) %>%
    mutate(model = purrr::map(train, ~glm(mod1_formula, data=., 
    family=binomial))) -> trained.models
    trained.models %>%
    unnest( pred = map2( model, test, ~predict( .x, .y, type = 
    "response")) ) -> test.predictions`
    trained.models %>%
    unnest( fitted = map2(model, test, ~augment(.x, newdata = 
    .y)),
    pred = map2( model, test, ~predict( .x, .y, type = 
    "response")) ) -> test.predictions
    test.predictions %>% select(.id, outcome, pred )
    test.predictions %>%
    group_by(.id) %>%
    summarize(auc = roc(outcome, .fitted)$auc) %>%
    select(auc)
    gg <- ggplot(data=test.predictions, aes(x= auc))
    gg <- gg+geom_histogram()
    gg

1 Ответ

0 голосов
/ 10 декабря 2018

Основываясь на предупреждающем сообщении, я считаю, что проблема связана с использованием ipumsr помеченных значений вместо коэффициентов R.В частности, вам, вероятно, нужно преобразовать в факторы перед запуском регрессий, вместо того, чтобы вводить as.factor в формулу (также as.factor не получает метки, вместо этого используйте as_factor).Больше информации в value-labels виньетка .

Я ценю, что лицензионные ограничения IPUMS затрудняют вам публикацию полного воспроизводимого примера, который ожидает сообщество здесь (вы опубликовали свойкод, который является хорошим первым шагом, но без данных мы не можем полностью воспроизвести его).Вы можете установить небольшое количество строк, чтобы увидеть, получаете ли вы одно и то же сообщение об ошибке и публикуете эти данные.В противном случае может быть проще, если вы отправите сообщение на форум IPUMS (http://answers.popdata.org/), где сотрудники IPUMS смогут получить доступ к вашей выписке и, таким образом, вы сможете быстрее получить помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...