问题标签 [r-mice]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
280 浏览

r - R:从 with.mids() 中的字符串构建公式

我希望能够基于从字符串构造的公式对mids返回的对象运行回归。mice()对于普通回归(没有插补),这很容易:

我认为在估算数据集上做同样的事情应该是这样的:

然而,R 告诉我,object 'bmi' was not found.

工作得很好,但需要我硬编码列名而不是提供字符串变量。

有没有办法做到这一点?

0 投票
1 回答
929 浏览

r - 如何在 R 中使用循环找到 RMSE

如果我有一个数据框包含 3 个变量:

我创建了 MCAR(随机缺失完整)数据:

之后,我使用mice包来估算缺失值,如下所示:

我的问题是:我想通过使用循环分别找到所有 10 个数据集的 RMSE。这是我的 RMSE 方程:

我的意思是做一个循环来分别找到每个估算数据集的 RMSE:
RMSE1(对于数据集 #1)
RMSE2(对于数据集 #2)
...
RMSE10(对于数据集 #10)

而且我还想知道哪个数据集最适合 impute NA

0 投票
2 回答
1532 浏览

r - 如果列名相同,则替换列 R

我在 R 中使用了 mouse 包来估算我的数据中的一些缺失值,但不是针对所有变量。现在,如果它们的列名相同,我想用估算数据中的列替换原始数据中的列。这是我的功能:

但它似乎不起作用,有什么帮助吗?

0 投票
1 回答
1547 浏览

r - 重新编码鼠标 mids 对象

我有一个midsmice. 我想重新编码一些估算变量并保留mids对象。我知道我可以使用 将mids对象转换为“long” complete(),但我想保留该mids对象,因为它有一些额外的用途。

这是使用数据集的示例nhanes。运行mice()为 中的变量创建 5 个插补数据集nhanes。我专注于hyp

我如何重新编码对象hyp内的估算值(例如,1 变为 5)。midsimp

到目前为止,我唯一的想法涉及转换imp为 long,将感兴趣的变量提取到新的数据帧中,重新编码,转换新的数据帧 via as.mids,然后放回impvia cbind.mids()

它有效,但我认为我应该能够直接hypimpmids 对象中进行修改。

0 投票
0 回答
570 浏览

r - 如何在小鼠 polyreg 实现中添加噪声

在 MICE R mice.impute.polyreg.r(通过贝叶斯多变量回归模型对分类响应变量进行插补)中,提到该方法包括以下步骤:

  1. 将分类响应拟合为多项模型
  2. 计算预测类别
  3. 为预测添加适当的噪声。

在实施中:

链接到 github 代码

我能够弄清楚前两个步骤,但是我似乎无法找到在实现中将“噪声”添加到预测中的位置。似乎预测的类别是直接返回的。

我错过了什么吗?

0 投票
1 回答
1239 浏览

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

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

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

0 投票
0 回答
363 浏览

r - R中MICE包中限制的语法问题

我最近在 R 中发现了用于多重插补的 MICE 包,我目前正在学习如何使用该包。我想尝试对我估算的一些变量设置限制。虽然“缺失数据的灵活插补”一书提供了一些简单的示例,但我想了解一些更复杂的限制。但是,我在弄清楚如何正确指定限制时遇到了一些麻烦。

例如,考虑以下数据集:

我想将 MaininterestVar 设置为给定 Var1 和 Varlo2 的特定值(无论被观察或估算)。我认为最直接的方法是通过后期处理。如果 Var1 高于 8,我可以管理简单的限制,例如将 MaininterestVar 设置为 1:

但是,我遇到了以下问题:

1) 我怎样才能确保 MaininterestVar 设置为 0 对于 Var1<8?虽然在这个例子中这似乎是正确的,但这不是一个特定的限制,我想确保这种情况发生。

2) 假设我想将 MaininterestVar 设置为与估算的 MaininterestVar 在同一行中的 TestVar1 中列出的值,而不是 0?例如,第 2 行中 MaininterestValue 的估算值将显示为 6000,具体取决于 Var 1 的观察值或估算值是否小于 8。我认为这应该可以通过指定正在估算的变量的行索引来实现,但我无法正确指定它。

以下代码:

给我错误:

这表明需要一些额外的行索引规范,尽管我不太确定如何这样做。

3) 最后,假设我想将 MaininterestVar 设置为 0,如果 Var1<5(这违背了一般数据模式,我用它来检查限制是否有效)并且 Var2>28。我尝试过以下规格:

但是 MICE 似乎并没有同时处理这两个限制(并且没有提供它没有的错误消息),或者问题 1)在这里发生。

提前致谢!

0 投票
1 回答
1448 浏览

r - 多重插补数据集中列子集的相关矩阵

我正在使用该miceR对具有大量缺失的数据集进行多次插补。原始数据集中的一些变量对于插补过程和以后的分析很重要。cor()但是,我想使用不包括某些变量来创建相关矩阵。通常,对于一个简单的数据集xcor(x[,3:7])将产生第 3 列到第 7 列的相关矩阵。如果xmidsmice函数创建的对象,通常会使用with执行重复分析来创建mira对象,然后用于pool创建mipo池化结果对象. 然而,第二个元素with应该是引用数据集列的公式,而不是进入cor(). Ifx是一个mids对象,cor(x[,3:7])它不起作用,with(x, cor(x[,3:7])).

如何为多重插补数据集中的变量子集创建汇总相关矩阵?

0 投票
1 回答
238 浏览

r - 使用 R (MICE) 对多级逻辑模型的 Multiply Imuputed 数据集进行池化的问题 - 缺少系数

我在使用 R 中的 MICE 包时遇到问题,特别是在汇集估算数据集方面。

我正在运行多级二项式逻辑回归,其中 Level1 - 主题(参与者对不同主题的 10 个问题的回答,例如黑暗、白天)嵌套在 Level2 - 个人中。

该模型是使用 R2MLwiN 创建的,公式为 > fit1 <-runMLwiN( c(probit(T_Darkness, cons), probit(T_Day, cons), probit(T_Light, cons), probit(T_Night, cons), probit(T_Rain, cons), probit(T_Rainbows, cons), probit(T_Snow, cons), probit(T_Storms, cons), probit(T_Waterfalls, cons), probit(T_Waves, cons)) ~ 1, D=c("Mixed", "Binomial", "Binomial","Binomial","Binomial", "Binomial", "Binomial", "Binomial", "Binomial", "Binomial" ,"Binomial"), estoptions = list(EstM = 0), data=data)

不幸的是,所有 Level1(主题)响应中都缺少数据。我一直在使用mice包 ([CRAN][1]) 来乘以估算缺失值。

我可以使用公式将模型拟合到估算的数据集> fitMI <- (with(MI.Data, runMLwiN( c(probit(T_Darkness, cons), probit(T_Day, cons), probit(T_Light, cons), probit(T_Night, cons), probit(T_Rain, cons), probit(T_Rainbows, cons), probit(T_Snow, cons), probit(T_Storms, cons), probit(T_Waterfalls, cons), probit(T_Waves, cons)) ~ 1, D=c("Mixed", "Binomial", "Binomial","Binomial","Binomial", "Binomial", "Binomial", "Binomial", "Binomial", "Binomial" ,"Binomial"), estoptions = list(EstM = 0), data=data)))

但是,当我将分析与调用代码合并时,> pool(fitMI)它失败了,并出现错误:

Error in pool(with(tempData, runMLwiN(c(probit(T_Darkness, cons), probit(T_Day, : Object has no coef() method.

我不确定为什么说没有系数,因为对单个 MI 数据集的分析提供了固定部分(系数)和随机部分(协方差)

任何有关出现问题的帮助将不胜感激。

我应该警告您,这是我第一次尝试使用 R 和多级建模。另外我知道有一个 MlwiN 软件包 ([REALCOM][2]) 可以做到这一点,但我没有使用 MLwiN 软件的背景。

谢谢约翰尼

更新 - R 可重现的例子

使用的库

库(R2MLwin)

图书馆(小鼠)

数据子集`

T_Darkness <- c(0, 1, 0, 0, 0, 0, 0, 1, 0, 0, NA, 0, 0, 0, NA, 1, 0, NA,NA, 1, 0, 0, 0 , 1, 0, 0, 0, 不适用, 0, 0, 0, 不适用, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 , 0, 0, 0, 1, NA, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, NA, 1, 0)

T_Day <- c(0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, NA, 0 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 不适用, 0, 0, 0, 0, 不适用, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, NA, NA, 0)

T_Light <- c(0, 0, NA, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0 , 1, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 0, 0, 1, NA, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0)

T_Night <- c(0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, NA , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 ,NA, 0, NA, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, NA, 0, 0)

T_Rain <- c(1, 0, 0, 1, 1, 0, 0, NA, 0, 1, 0, 0, 1, 0, 0, 0, 0, NA, 0, 0, 1, 0, 0 , 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 不适用, 0, 0, 0, 0, 1, 0, 0, 0 , 不适用, 1, 不适用, 0, 0, 0, 0, 1, 不适用, 1, 0, 0, 0, 0, 1, 不适用, 0, 0)

T_Rainbows <- c(1, 1, 1, 1, 0, 1, 0, 1, 0, 1, NA, 1, 1, 0, 0, 1, 0, NA, 0, 1, 0, NA, 0 , 1, 0, 0, 0, 0, 0, NA, 0, 0, 0, NA, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0 , 1, 1, 1, 1, NA, 1, 0, 1, NA, 0, 0, 1, 0, 1, 1, 1, 0, 1)

T_Snow <- c(0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, NA, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 , 1, 1, 0, 0, 0, NA, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 , 不适用, 0, 0, 1, 不适用, 1, 0, 1, 1, 0, 0, 0, 0, 0, 不适用, 0, 0, 0)

T_Storms <- c(0, 0, 0, 1, 1, 1, 0, 1, 0, 1, NA, 0, 0, 0, 0, 1, 0, NA, 0, 0, 1, 0, 0 , 不适用, 1, 1, 不适用, 0, 0, 不适用, 0, 1, 0, 不适用, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0 , 0, 0, 1, 0, 不适用, 1, 0, 不适用, 0, 0, 0, 1, 1, 0, 1, 不适用, 不适用, 1)

T_Waterfalls <- c(0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 1, 0, 0 , 0, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, NA, 0, 0, 0, 0, 0 , 不适用, 0, 1, 0, 不适用, 1, 0, 1, 0, 0, 0, 不适用, 0, 0, 0, 不适用, 不适用, 0)

T_Waves <- c(0, 1, 0, 1, 1, 0, 1, NA, 0, 0, NA, 0, 0, 0, NA, 1, 0, 0, 0, 0, 1, 0, NA , 0, 不适用, 0, 0, 不适用, 0, 0, 0, 0, 0, 0, 不适用, 1, 0, 0, 0, 1, 0, 0, 不适用, 0, 1, 0, 0, 0 , 0, 0, 1, 1, 不适用, 1, 1, 不适用, 0, 0, 0, 不适用, 0, 0, 0, 不适用, 0, 0)

数据 <- 数据帧(T_Darkness、T_Day、T_Light、T_Night、T_Rain、T_Rainbows、T_Snow、T_Storms、T_Waterfalls、T_Waves)

数据$cons <- 1

`

使用小鼠估算的数据

MI.Data <- 老鼠(数据,m=5,maxit=50,meth='pmm',seed=500)

0 投票
1 回答
5747 浏览

r - MICE 不会对某些列进行插补,但也不会给出错误

我知道之前已经提出过类似的问题(例如123),但我仍然不明白为什么mice即使我尝试像示例1中那样的无条件均值也无法预测缺失值的原因。

我拥有的稀疏矩阵是:

我应用以下标准鼠标功能

我得到的预测矩阵是:

也许有人可以阐明这个问题?