首页 文章

R中的估算

提问于
浏览
4

我是R编程语言的新手 . 我只是想知道有没有办法在我们的数据集中包含 just one column 的空值 . 因为我看到的所有插补命令和库都会归因于整个数据集的空值 .

3 回答

  • 1

    以下是使用 Hmisc 包和 impute 的示例

    library(Hmisc)
    DF <- data.frame(age = c(10, 20, NA, 40), sex = c('male','female'))
    
    # impute with mean value
    
    DF$imputed_age <- with(DF, impute(age, mean))
    
    # impute with random value
    DF$imputed_age2 <- with(DF, impute(age, 'random'))
    
    # impute with the media
    with(DF, impute(age, median))
    # impute with the minimum
    with(DF, impute(age, min))
    
    # impute with the maximum
    with(DF, impute(age, max))
    
    
    # and if you are sufficiently foolish
    # impute with number 7 
    with(DF, impute(age, 7))
    
     # impute with letter 'a'
    with(DF, impute(age, 'a'))
    

    有关如何实施插补的详细信息,请查看 ?impute

  • 14

    为什么不使用更复杂的插补算法,例如鼠标(链式方程式的多重插补)?下面是R中的代码片段,您可以根据自己的情况进行调整 .

    library(mice)
    
    #get the nhanes dataset
    dat <- mice::nhanes
    
    #impute it with mice
    imp <- mice(mice::nhanes, m = 3, print=F)
    
    imputed_dataset_1<-complete(imp,1)
    
    head(imputed_dataset_1)
    
    #     age  bmi hyp chl
    # 1   1   22.5   1 118
    # 2   2   22.7   1 187
    # 3   1   30.1   1 187
    # 4   3   24.9   1 186
    # 5   1   20.4   1 113
    # 6   3   20.4   1 184
    
    #Now, let's see what methods have been used to impute each column
    meth<-imp$method
    #  age   bmi   hyp   chl
    #"" "pmm" "pmm" "pmm"
    
    #The age column is complete, so, it won't be imputed
    # Columns bmi, hyp and chl are going to be imputed with pmm (predictive mean matching)
    
    #Let's say that we want to impute only the "hyp" column
    #So, we set the methods for the bmi and chl column to ""
    meth[c(2,4)]<-""
    #age   bmi   hyp   chl 
    #""    "" "pmm"    "" 
    
    #Let's run the mice imputation again, this time setting the methods parameter to our modified method
    imp <- mice(mice::nhanes, m = 3, print=F, method = meth)
    
    partly_imputed_dataset_1 <- complete(imp, 3)
    
    head(partly_imputed_dataset_1)
    
    #    age  bmi hyp chl
    # 1   1   NA   1  NA
    # 2   2 22.7   1 187
    # 3   1   NA   1 187
    # 4   3   NA   2  NA
    # 5   1 20.4   1 113
    # 6   3   NA   2 184
    
  • 0

    有很多软件包可以帮到你 . (关于数据的更多信息可以帮助建议您最好的选择)

    一个例子可以使用 VIM 包 .

    它有一个名为 kNN 的函数(k-最近邻插补)这个函数有一个选项 variable ,你可以指定哪些变量应该被估算 .

    这是一个例子:

    library("VIM")
    kNN(sleep, variable = c("NonD","Gest"))
    

    我在本例中使用的睡眠数据集附带了VIM .

    如果你的列中存在一些时间依赖性,你想使用时间序列插补包也可能有意义 . 在这种情况下,您可以使用例如 imputeTS 包 . 这是一个例子:

    library(imputeTS)
      na.kalman(tsAirgap)
    

    这里使用的tsAirgap数据集也与imputeTS一起出现 .

相关问题