如何从Amelia包中提取完整的数据集

时间:2016-01-23 20:53:43

标签: r package missing-data r-mice imputation

在用于提取完整数据集的鼠标包中,您可以使用complete()命令,如下所示:

install.packages("mice")
library ("mice")
imp1=mice(nhanes,10) 
fill1=complete(imp,1)
fill2=complete(imp,2)
fillall=complete(imp,"long")

但有人可以告诉我如何在Amelia包中提取完整的数据集吗?

install.packages("Amelia")
library ("Amelia")
imp2= amelia(freetrade, m = 5, ts = "year", cs = "country")

1 个答案:

答案 0 :(得分:1)

此处str()功能总是有用的。您将看到完整的数据集存储在imputations返回的对象的amelia()元素中:

> str(imp2, 1)
List of 12
 $ imputations:List of 5
  ..- attr(*, "class")= chr [1:2] "mi" "list"
 $ m          : num 5
 $ missMatrix : logi [1:171, 1:10] FALSE FALSE FALSE FALSE FALSE FALSE ...
  ..- attr(*, "dimnames")=List of 2
 $ overvalues : NULL
 $ theta      : num [1:9, 1:9, 1:5] -1 -0.0161 0.199 -0.0368 -0.0868 ...
 $ mu         : num [1:8, 1:5] -0.0161 0.199 -0.0368 -0.0868 -0.0658 ...
 $ covMatrices: num [1:8, 1:8, 1:5] 0.8997 -0.3077 0.0926 0.2206 -0.1115 ...
 $ code       : num 1
 $ message    : chr "Normal EM convergence."
 $ iterHist   :List of 5
 $ arguments  :List of 23
  ..- attr(*, "class")= chr [1:2] "ameliaArgs" "list"
 $ orig.vars  : chr [1:10] "year" "country" "tariff" "polity" ...
 - attr(*, "class")= chr "amelia"

要单独获取每个插补,只需执行imp2$imputations[[1]]等等,直到您请求的所有插补。在您的示例中,有五个:

> str(imp2$imputations, 1)
List of 5
 $ imp1:'data.frame':   171 obs. of  10 variables:
 $ imp2:'data.frame':   171 obs. of  10 variables:
 $ imp3:'data.frame':   171 obs. of  10 variables:
 $ imp4:'data.frame':   171 obs. of  10 variables:
 $ imp5:'data.frame':   171 obs. of  10 variables:
 - attr(*, "class")= chr [1:2] "mi" "list"