R中的插补MICE仍在NA中留在数据集中

时间:2014-01-06 04:26:26

标签: r

在运行MICE包之后,在5个完整插补集中的每一个中,缺失值的数量从147428缩小到46093。但它不应该是0 NAs而不是???

谢谢!

这是我的MICE代码:

imp = mice(newdata)

imputationSet1 = complete(imp)
imputationSet2 = complete(imp,2)
imputationSet3 = complete(imp,3)
imputationSet4 = complete(imp,4)
imputationSet5 = complete(imp,5)

4 个答案:

答案 0 :(得分:4)

Ben,mice()函数检测多重共线性,并通过删除矩阵的一个或多个预测变量来解决问题。每个删除都记录在mids对象的loggedEvents元素中。例如,

  

imp< - mice(cbind(nhanes,chl2 = 2 * nhanes $ chl),            print = FALSE)

     

小鬼$ loggedEvents

通知我们在迭代之前删除了重复变量chl2。该算法还在迭代期间检测多重共线性。

控制算法的另一个措施是脊参数。 ridge参数被指定为mice()的参数。设置脊= 0.001或脊= 0.01使得算法在偏置的代价下更加稳健。

在终端节点,我们可以应用一个简单的方法,比如mice.impute.sample(),它不需要任何预测器。

此信息摘自Stef van Buuren的书“弹性数据缺失”一书,p。 129

答案 1 :(得分:1)

尝试切换名为this.kick++;的其他参数,其默认值为 <script> (function() { var instances = []; var translationDb = {}; var language = ''; window.behavior = { properties: { l10n: { value: 0 } }, attached: function() { instances.push(this); }, detached: function() { this.arrayDelete(instances, this); }, _broadcast: function() { instances.forEach(function(i) { i.l10n++; }); }, localize: function(key, i) { if (translationDb[language] && translationDb[language][key]) { return translationDb[language][key]; } return key; }, registerTranslation: function(translationKey, translationSet) { translationDb[translationKey] = translationSet; }, selectLanguage: function(newLanguage) { language = newLanguage; this._broadcast(); } }; })(); </script> <dom-module id="my-element"> <template> <p>{{localize(label, l10n)}}</p> </template> <script> Polymer({ behaviors: [ behavior ], properties: { label: { type: String, value: 'original' } } }); </script> </dom-module> <dom-module id="another-element"> <template> <button on-tap="buttonClicked">load</button> </template> <script> Polymer({ behaviors: [ behavior ], buttonClicked: function() { this.registerTranslation('en', { original: 'changed' }); this.selectLanguage('en'); } }); </script> </dom-module> 。如果将其设置为接近threshold或更大的值,则问题应该消失。

请注意,只有当数据中的共线性很高时才会出现此问题。

答案 2 :(得分:1)

帮助我的是将as-character变量转换为as-factor变量,而NA已从插补数据集中消失。

答案 3 :(得分:-1)

是的,应该没有遗漏的值。

我敢打赌,你的数据集中有些行严重缺失,导致鼠标的插补模型崩溃。您的数据集中是否有可能缺少每个值的行?那样做。

尝试突发奇想的另一件事 - 将迭代次数增加到15:imp = mice(newdata, maxit = 15)。这有什么改变吗?