标签: r-mice

R MICE插补失败

我真的很困惑为什么我的估算在R's Mice 2.22包中失败了.我正在尝试使用以下数据框进行非常简单的操作:

> dfn
   a b c  d
1  0 1 0  1
2  1 0 0  0
3  0 0 0  0
4 NA 0 0  0
5  0 0 0 NA
Run Code Online (Sandbox Code Playgroud)

然后,我以下列方式使用鼠标来执行简单的平均估算:

imp <- mice(dfn, method = "mean", m = 1, maxit =1)
filled <- complete(imp)
Run Code Online (Sandbox Code Playgroud)

但是,我完成的数据如下所示:

> fill
 a b c  d
1 0.00 1 0  1
2 1.00 0 0  0
3 0.00 0 0  0
4 0.25 0 0  0
5 0.00 0 0 …
Run Code Online (Sandbox Code Playgroud)

statistics r r-mice

5
推荐指数
1
解决办法
704
查看次数

绘制多个插补结果

我已经使用R中的MICE包成功完成了对我的问卷调查缺失数据的多重估算,并对汇总的推算变量进行了线性回归.我似乎无法弄清楚如何提取单个池化变量并在图形中绘图.有任何想法吗?

例如

>imp <- mice(questionnaire) 
>fit <- with(imp, lm(APE~TMAS+APB+APA+FOAP))  
>summary(pool(fit))  
Run Code Online (Sandbox Code Playgroud)

我想通过TMAS绘制汇集的APE.

使用nhanes的可重现示例:

> library(mice)
> nhanes
> imp <-mice(nhanes)
> fit <-with(imp, lm(bmi~chl+hyp))
> fit
> summary(pool(fit))
Run Code Online (Sandbox Code Playgroud)

我想将汇集的chl与汇集的bmi(例如)联系起来.

我能够实现的最好的是

> mat <-complete(imp, "long")
> plot(mat$chl~mat$bmi)
Run Code Online (Sandbox Code Playgroud)

我相信这给出了所有5个插补的综合情节,并不是我想要的(我认为).

plot r missing-data r-mice imputation

4
推荐指数
1
解决办法
2670
查看次数

R(鼠标包)出错,重量太多

我从文库"老鼠"中使用鼠标功能输入缺失的病例时出现以下错误

 Error in nnet.default(X, Y, w, mask = mask, size = 0, skip = TRUE, softmax = TRUE,  :
too many (1104) weights
Run Code Online (Sandbox Code Playgroud)

该问题由函数生成,mice.impute.polr并且mice.impute.polyreg由于默认的最大权重数.我无法通过使用命令解决它substitute既不通过复制功能的代码,并写入新的功能mice.impute.polrmice.impute.polyreg(因为功能我找不到调用augment).我告诉过我应该去源代码修改它.

我该怎么做?还有其他解决方案吗?

r r-mice

4
推荐指数
2
解决办法
5854
查看次数

重新编码鼠标 mids 对象

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

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

library(mice)
names(nhanes)
nhanes$hyp
#[1] NA  1  1 NA  1 NA  1  1  1 NA NA NA  1  2  1 NA  2  2 1  2 NA  1  1  1  
imp <- mice(nhanes, print = FALSE)
imp$imp$hyp
# 1 2 3 4 5
# 1  1 1 1 1 1
# 4  2 1 1 2 …
Run Code Online (Sandbox Code Playgroud)

r r-mice

4
推荐指数
1
解决办法
1968
查看次数

MICE不会归咎于某些列,但也不会产生错误

我知道,类似的问题之前已经被要求(例如,1,2,3),但我还是不明白为什么MICE失败甚至当我试图像在例1无条件平均预测缺失值的原因.

我有的稀疏矩阵是:

            k1    k3       k5       k6       k7       k8      k11      k12      k13      k14      k15
 [1,]       NA    NA       NA       NA       NA       NA       NA       NA       NA       NA 0.066667
 [2,] 0.909091    NA       NA       NA       NA 0.944723       NA       NA 0.545455       NA       NA
 [3,] 0.545455    NA       NA       NA       NA       NA       NA       NA 0.818182 0.800000 0.466667
 [4,] 0.545455    NA 0.642857       NA       NA 0.260954       NA       NA       NA       NA       NA
 [5,]       NA 0.750 0.500000       NA 0.869845       NA 0.595013       NA       NA       NA       NA
 [6,] …
Run Code Online (Sandbox Code Playgroud)

r r-mice

4
推荐指数
1
解决办法
2749
查看次数

我可以使用 mi 包汇集估算的随机效应模型估计值吗?

看来该mi软件包在过去几年的某个时候进行了相当大的重写。

以下教程详细概述了“旧”的做事方式:http://thomasleeper.com/Rcourse/Tutorials/mi.html

“新”的做事方式(坚持 Leeper 的模拟演示)看起来像这样:

#load mi
library(mi)
#set seed
set.seed(10)
#simulate some data (with some observations missing)
x1 <- runif(100, 0, 5)
x2 <- rnorm(100)
y <- 2*x1 + 20*x2 + rnorm(100)
mydf <- cbind.data.frame(x1, x2, y)
mydf$x1[sample(1:nrow(mydf), 20, FALSE)] <- NA
mydf$x2[sample(1:nrow(mydf), 10, FALSE)] <- NA

# Convert to a missing_data.frame
mydf_mdf <- missing_data.frame(mydf)

# impute
mydf_imp <- mi(mydf_mdf)
Run Code Online (Sandbox Code Playgroud)

尽管函数名称已更改,但这实际上与“旧”的处理方式非常相似。

最大的变化(从我的角度来看)是替换了以下“旧”功能

lm.mi(formula, mi.object, ...)

glm.mi(formula, mi.object, family = gaussian, ...)

bayesglm.mi(formula, mi.object, family = gaussian, …

r lme4 bayesglm r-mice

4
推荐指数
1
解决办法
3199
查看次数

使用具有聚类数据的小鼠进行插补

因此,我正在使用该mice软件包估算缺少的数据。我是归因于算术的新手,所以我已经讲了一点,但是却遇到了陡峭的学习曲线。举一个玩具的例子:

library(mice)
# Using nhanes dataset as example
df1 <- mice(nhanes, m=10)
Run Code Online (Sandbox Code Playgroud)

因此,如您所见,我使用默认设置大多数情况下估算了df1 10次-我很乐意将此结果用于回归模型,合并结果等。但是在我的实际数据中,我有来自不同国家/地区的调查数据。因此,失踪的程度因国家/地区而异,具体变量的值(即年龄,受教育程度等)的值也不同。因此,我想归纳失踪者,以便按国家进行聚类。因此,我将创建一个没有缺失的分组变量(当然,在此玩具示例中,与其他变量的相关性缺失,但是在我的真实数据中它们存在)

# Create a grouping variable
nhanes$country <- sample(c("A", "B"), size=nrow(nhanes), replace=TRUE)
Run Code Online (Sandbox Code Playgroud)

因此,如何分辨mice()此变量与其他变量不同-即它是多级数据集中的一个级?

r multi-level r-mice imputation

4
推荐指数
1
解决办法
1332
查看次数

小鼠:glm.fit:算法未收敛

我有一个数据集,其中包含大约 12 个级别范围为 2 - 10 的分类变量以及其他数值变量。约280条记录。我正在使用mice中的包r通过所有默认设置对丢失的数据进行插补。但是,当我尝试像这样进行插补时:

imp <- mice(df)
Run Code Online (Sandbox Code Playgroud)

我继续收到此警告:

glm.fit: algorithm did not converge
Run Code Online (Sandbox Code Playgroud)

我在此处此处在线找到的解决方案仅专注于glm直接使用该函数,但就我而言,它是从内部调用的函数mice。我试过maxit = 50这样设置

imp <- mice(df, maxit = 50)
Run Code Online (Sandbox Code Playgroud)

但最终却收到了更多相同警告的实例。知道是什么原因造成的吗?

r missing-data r-mice

4
推荐指数
1
解决办法
4141
查看次数

小鼠的插补方法 - 数据集中的相关性。电阻

我正在努力使用小鼠进行插补。主要目标是估算 NA(如果可能,按组)。由于示例有点大,可以在此处简单发布,因此可以下载:https : //drive.google.com/open?id=1InGJ_M7r5jwQZZRdXBO1MEbKB48gafbP

我的问题是:

  1. 一般来说,相关数据有多大的问题?我该怎么做才能仍然估算数据?数据是实证研究问题的一部分,我还不知道要包含哪些变量,因此最好暂时保留尽可能多的变量。

  2. 什么方法比 "cart" 和 "pmm" 更合适?我不想简单地估算平均值/中位数....

  3. 我可以通过“ID”以某种方式估算数据吗

  4. 调试技巧?

这是我的代码

#Start
require(mice)
require(Hmisc)
'setwd(...)
'test.df<-read.csv(...)
str(test.df)
Run Code Online (Sandbox Code Playgroud)

检查相关性:前 2 列包含标识符和年份,因此无需查看。

test.df.rcorr<-rcorr(as.matrix(test.df[,-c(1:2)]))
test.df.coeff<-test.df.rcorr$r
test.df.coeff<-corrplot(test.df.coeff)
Run Code Online (Sandbox Code Playgroud)

可以看出,数据中有一些很强的相关性。对于一个简单的任务,省略所有具有强相关性的列。

#Simple example

test.df2<-test.df[,-c(4,7,10,11)]
test.df2
sum(is.na(test.df2))
Run Code Online (Sandbox Code Playgroud)

现在,让我们在不指定方法的情况下估算 test.df2:

imputation.df2<-mice(test.df2, m=1, seed=123456)
imputation.df2$method
test.df2.imp<-mice::complete(imputation.df2)

Warning message:
Number of logged events: 1 


sum(is.na(test.df2.imp))

Run Code Online (Sandbox Code Playgroud)

可以看出,所有的 NA 都被估算了。并且使用的方法只是“pmm”。

使用完整数据集,我几乎立即收到以下错误消息:

imputation.df<-mice(test.df,m=1,seed = 66666)

 iter imp variable
  1   1  x1Error in solve.default(xtx + diag(pen)) : 
  system is computationally singular: reciprocal condition number = 1.49712e-16
Run Code Online (Sandbox Code Playgroud)

这仅仅是由于数据中的相关性吗?

最后,我的 ID 插补代码,在显示此错误之前运行了更长的时间:

test123<- …
Run Code Online (Sandbox Code Playgroud)

debugging r missing-data r-mice imputation

4
推荐指数
1
解决办法
1250
查看次数

如何将预测函数与我的来自 mouse() 的汇总结果一起使用?

嗨,我刚刚开始使用 R 作为学校模块的一部分。我有一个包含缺失数据的数据集,并且我使用了 mouse() 来估算缺失的数据。我现在正在尝试将 predict 函数与我的合并结果一起使用。但是,我观察到以下错误:

UseMethod("predict") 中的错误:没有适用于应用于类“c('mipo','data.frame')”的对象的“预测”方法

我在下面包含了我的整个代码,如果你们都能帮助新手,我会非常感谢它。谢谢!

```{r}
library(magrittr)
library(dplyr)
train = read.csv("Train_Data.csv", na.strings=c("","NA"))
test = read.csv("Test_Data.csv", na.strings=c("","NA"))
cols <- c("naCardiac", "naFoodNutrition", "naGenitourinary", "naGastrointestinal", "naMusculoskeletal", "naNeurological", "naPeripheralVascular", "naPain", "naRespiratory", "naSkin")
train %<>%
       mutate_each_(funs(factor(.)),cols)
test %<>%
       mutate_each_(funs(factor(.)),cols)
str(train)
str(test)
```

```{r}
library(mice)
md.pattern(train)
```

```{r}
miTrain = mice(train, m = 5, maxit = 50, meth = "pmm")
```

```{r}
model = with(miTrain, lm(LOS ~ Age + Gender + Race + Temperature + RespirationRate + HeartRate + SystolicBP + …
Run Code Online (Sandbox Code Playgroud)

r predict r-mice

3
推荐指数
1
解决办法
1846
查看次数