我在使用purrr包的R中进行交叉验证时遇到问题

时间:2018-12-07 18:56:43

标签: r

我正在使用的数据集来自IPUMS的当前人口调查,它具有13个变量的大约1,716,121个观测值。我正在尝试对此数据进行交叉验证,然后绘制结果AUC。

我正在使用的模型是逻辑回归,我的因变量是二进制变量(值为0或1)。每当我运行代码时,都会收到警告:

  

在bind_rows_(x,.id)中:向量化“标记”元素可能不会保留其属性。

我不确定这意味着什么。

我也收到错误:

  

select(。,.id,result,pred)中的错误:未使用的参数(.id,result,pred)“

  

summarise_impl(.data,点)中的错误:评估错误:未找到对象“结果”。

如果有人可以帮助我,将不胜感激!

我的代码是:

    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 :(得分:0)

基于警告消息,我认为问题是由于ipumsr使用标签值而不是R的因素引起的。特别是,您可能需要在运行回归之前转换为因子,而不是将as.factor放入公式中((as.factor也没有得到标签,而是使用as_factor)。在value-labels vignette中有更多信息。

我感谢IPUMS许可限制使您很难发布完整的可复制示例,这在这里是社区所期望的(您已经发布了代码,这是很好的第一步,但是如果没有数据,我们将无法完全复制它) 。您可以将少量的行作为子集,以查看是否收到相同的错误消息并发布该数据。否则,如果您发布到IPUMS论坛(http://answers.popdata.org/),IPUMS工作人员可以访问您的摘录,这样可能会更容易,因此您可以更快地获得帮助。