当变量数量较大时,调用MICE()后仍存在R MICE缺失数据
我不确定这背后的原因是什么 我有一个包含107个变量的数据集(混合了数字和因子数据类型),其中一些包含缺少的值。我用老鼠来估算数据 小鼠输入了大部分变量的数据。然而,有些变量根本不需要插补 非常奇怪的是,虽然有些变量被成功插补,但有些变量却没有。我还试着只在没有成功插补的变量上运行老鼠,这一次,它成功了当变量数量较大时,调用MICE()后仍存在R MICE缺失数据,r,r-mice,R,R Mice,我不确定这背后的原因是什么 我有一个包含107个变量的数据集(混合了数字和因子数据类型),其中一些包含缺少的值。我用老鼠来估算数据 小鼠输入了大部分变量的数据。然而,有些变量根本不需要插补 非常奇怪的是,虽然有些变量被成功插补,但有些变量却没有。我还试着只在没有成功插补的变量上运行老鼠,这一次,它成功了 这背后的原因是什么?它是否与我的数据集中变量的数量有关?我如何解决这个问题,还是需要为每个变量分别运行鼠标 非常感谢, 我现在给出代码来复制我的意思 > #create data set
这背后的原因是什么?它是否与我的数据集中变量的数量有关?我如何解决这个问题,还是需要为每个变量分别运行鼠标 非常感谢, 我现在给出代码来复制我的意思
> #create data set with NAs
> iris.fake = prodNA(iris, noNA = 0.9)
> iris.fake.miss <- aggr(iris.fake)
> iris.fake.miss$missings
Variable Count
Sepal.Length Sepal.Length 138
Sepal.Width Sepal.Width 137
Petal.Length Petal.Length 138
Petal.Width Petal.Width 131
Species Species 131
>
> #run mice
> imp = mice(iris.fake, m = 5, maxit = 5)
iter imp variable
1 1 Sepal.Width Petal.Length Petal.Width Species
1 2 Sepal.Width Petal.Length Petal.Width Species
1 3 Sepal.Width Petal.Length Petal.Width Species
1 4 Sepal.Width Petal.Length Petal.Width Species
1 5 Sepal.Width Petal.Length Petal.Width Species
2 1 Sepal.Width Petal.Length Petal.Width Species
2 2 Sepal.Width Petal.Length Petal.Width Species
2 3 Sepal.Width Petal.Length Petal.Width Species
2 4 Sepal.Width Petal.Length Petal.Width Species
2 5 Sepal.Width Petal.Length Petal.Width Species
3 1 Sepal.Width Petal.Length Petal.Width Species
3 2 Sepal.Width Petal.Length Petal.Width Species
3 3 Sepal.Width Petal.Length Petal.Width Species
3 4 Sepal.Width Petal.Length Petal.Width Species
3 5 Sepal.Width Petal.Length Petal.Width Species
4 1 Sepal.Width Petal.Length Petal.Width Species
4 2 Sepal.Width Petal.Length Petal.Width Species
4 3 Sepal.Width Petal.Length Petal.Width Species
4 4 Sepal.Width Petal.Length Petal.Width Species
4 5 Sepal.Width Petal.Length Petal.Width Species
5 1 Sepal.Width Petal.Length Petal.Width Species
5 2 Sepal.Width Petal.Length Petal.Width Species
5 3 Sepal.Width Petal.Length Petal.Width Species
5 4 Sepal.Width Petal.Length Petal.Width Species
5 5 Sepal.Width Petal.Length Petal.Width Species
> summary(imp)
Multiply imputed data set
Call:
mice(data = iris.fake, m = 5, maxit = 5)
Number of multiple imputations: 5
Missing cells per column:
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
138 137 138 131 131
Imputation methods:
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
"pmm" "pmm" "pmm" "pmm" "polyreg"
VisitSequence:
Sepal.Width Petal.Length Petal.Width Species
2 3 4 5
PredictorMatrix:
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
Sepal.Length 0 0 0 0 0
Sepal.Width 0 0 1 1 1
Petal.Length 0 1 0 1 1
Petal.Width 0 1 1 0 1
Species 0 1 1 1 0
Random generator seed value: NA
>
> com = complete(imp,2)
> iris.imp.miss <- aggr(com)
> iris.imp.miss$missings
Variable Count
Sepal.Length Sepal.Length 138
Sepal.Width Sepal.Width 0
Petal.Length Petal.Length 0
Petal.Width Petal.Width 0
Species Species 0
#使用NAs创建数据集
>iris.fake=prodNA(iris,noNA=0.9)
>艾瑞丝,假,艾瑞丝小姐,假,小姐$missings
可变计数
萼片长萼片长138
萼片宽萼片宽137
花瓣。长度花瓣。长度138
花瓣。宽花瓣。宽131
物种131
>
>#跑老鼠
>imp=小鼠(iris.fake,m=5,maxit=5)
iter imp变量
萼片。宽花瓣。长花瓣。宽种
12萼片。宽花瓣。长花瓣。宽种
13萼片。宽花瓣。长花瓣。宽种
萼片。宽花瓣。长花瓣。宽种
萼片。宽花瓣。长花瓣。宽种
萼片。宽花瓣。长花瓣。宽种
2萼片。宽花瓣。长花瓣。宽种
萼片。宽花瓣。长花瓣。宽种
萼片。宽花瓣。长花瓣。宽种
萼片。宽花瓣。长花瓣。宽种
3 1萼片。宽花瓣。长花瓣。宽种
萼片。宽花瓣。长花瓣。宽种
萼片。宽花瓣。长花瓣。宽种
萼片。宽花瓣。长花瓣。宽种
萼片。宽花瓣。长花瓣。宽种
4 1萼片。宽花瓣。长花瓣。宽种
萼片。宽花瓣。长花瓣。宽种
萼片。宽花瓣。长花瓣。宽种
萼片。宽花瓣。长花瓣。宽种
萼片。宽花瓣。长花瓣。宽种
5 1萼片。宽花瓣。长花瓣。宽种
5 2萼片。宽花瓣。长花瓣。宽种
5 3萼片。宽花瓣。长花瓣。宽种
萼片。宽花瓣。长花瓣。宽种
5萼片。宽花瓣。长花瓣。宽种
>摘要(imp)
多重插补数据集
电话:
小鼠(数据=iris.fake,m=5,maxit=5)
多重插补数:5
每列缺少单元格:
萼片。长萼片。宽花瓣。长花瓣。宽种
138 137 138 131 131
插补方法:
萼片。长萼片。宽花瓣。长花瓣。宽种
“pmm”“pmm”“pmm”“pmm”“polyreg”
访问顺序:
萼片。宽花瓣。长花瓣。宽种
2 3 4 5
预测矩阵:
萼片。长萼片。宽花瓣。长花瓣。宽种
萼片长度0
萼片宽0 0 1 1
花瓣长度0 1 0 1 1
花瓣宽度0 1 0 1
物种0110
随机生成器种子值:NA
>
>com=完成(imp,2)
>iris.imp.miss iris.imp.miss$missings
可变计数
萼片长萼片长138
萼片宽萼片宽0
花瓣。长度花瓣。长度0
花瓣。花瓣宽度。花瓣宽度0
物种0
“我是否需要为每个变量分别运行鼠标”没有意义,因为算法应该如何输入值?插补中应包括所有变量。然而,你可以尝试另一种插补方法。你能提供一些复制这个问题的样本数据吗?此外,您可能希望查看用于插补的预测矩阵,因为其中很可能有一个空列导致此问题。我回答了一个类似的问题,尽管这个问题似乎与你的略有不同。(还有,为什么要指定method=pmm
?该函数会自动确定要使用的最佳方法,通常不是pmm。)我刚刚编辑了我的文章以显示示例数据。我尝试了method=“mean”,结果甚至比pmm更糟糕。没有插补更多的变量。如果我没有指定方法,我会得到一个错误“nnet中的错误。默认值(X,Y,w,mask=mask,size=0,skip=TRUE,softmax=TRUE,:权重过多(6513)”。如果我使用MissForest,我不会有任何问题。@Laterow.Roland。是的,我认为它应该可以处理任意数量的变量。您共享的输出有点混乱。您显示了一些数据集Raw
,在Raw
上进行插补,并且似乎没有查看插补数据的输出这只是一个输入错误。我在这里发布时有点更改了变量名。我编辑以显示输入的数据。“我需要为每个变量分别运行鼠标吗?”没有意义,因为算法应该如何插补值?插补中应该包括所有变量。但是,您可以尝试不同的插补方法。您可以提供一些复制此问题的样本数据吗?此外,您可能需要查看用于插补的预测矩阵,因为可能会有我回答了一个类似的问题,尽管这个问题似乎与你的问题略有不同。(另外,为什么要指定method=pmm
?函数会自动确定要使用的最佳方法,通常不是pmm。)