首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我无法取回被排除在估算模型(impute.transcan)之外的变量

我无法取回被排除在估算模型(impute.transcan)之外的变量
EN

Stack Overflow用户
提问于 2021-06-04 04:53:31
回答 1查看 29关注 0票数 0

在使用aregImputeimpute.transcan执行补偿后,我尝试只选择一个数据框。但是,我无法取回被排除在估算模型之外的变量。有人能告诉我怎么做吗?

如果我们使用以下可重现的示例来说明此问题,我如何才能获得包含所有未计算的变量的数据帧,例如Speciesid变量?

代码语言:javascript
运行
复制
data("iris") 
library(missForest)
library(tidyverse)
library(Hmisc)
    
# example
iris.missing <- iris %>% 
group_by(Species) %>% 
prodNA(noNA = 0.1) %>% 
ungroup() %>% 
mutate(id = row_number())
    
imputation_model <- aregImpute(~ Sepal.Length + Sepal.Width + Petal.Width,
                               n.impute = 3, data = iris.missing,
                               pr = FALSE, type = 'pmm')
    
data_imp <- impute.transcan(imputation_model,
                            imputation = 1,
                            data = iris.missing,
                            list.out = TRUE,
                            pr = FALSE,
                            check = FALSE)

datos_imp <- bind_rows(data_imp)
EN

回答 1

Stack Overflow用户

发布于 2021-06-07 03:37:15

没有任何函数可以为您完成此操作。你必须手工完成它们。下面是一个如何对一个数据集执行此操作的示例:

代码语言:javascript
运行
复制
new_data <- iris.missing
new_data[, names(data_imp)] <- bind_rows(data_imp)
head(new_data)
# # A tibble: 6 x 6
#   Sepal.Length Sepal.Width Petal.Length Petal.Width Species    id
#          <dbl> <impute>           <dbl> <impute>    <fct>   <int>
# 1          5.1 3.5                  1.4 0.2         setosa      1
# 2          4.9 3.0                  1.4 0.2         NA          2
# 3          4.7 3.2                  1.3 0.2         setosa      3
# 4          4.6 3.2                  1.5 0.2         setosa      4
# 5          5   3.6                  1.4 0.2         setosa      5
# 6          5.4 4.4                  1.7 0.4         setosa      6

在这里,对于所有数据集,输出数据集列表:

代码语言:javascript
运行
复制
imps <- lapply(seq_len(3), function(i) {
  data_imp <- impute.transcan(imputation_model,
                              imputation = i,
                              data = iris.missing,
                              list.out = TRUE,
                              pr = FALSE,
                              check = FALSE)
  iris.missing[, names(data_imp)] <- bind_rows(data_imp)
  iris.missing
})

更常见的情况是,人们只是使用mice包来进行估算。在后续函数中使用它要容易得多。对于mice,我们只使用complete

代码语言:javascript
运行
复制
imp <- mice::mice(iris.missing)

# one dataset at a time
imp_1 <- complete(imp)
imp_2 <- complete(imp, 2)
imp_3 <- complete(imp, 3)

# all datasets at once
imps <- lapply(1:imp$m, complete)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67828555

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档