标签: r-mice

如何仅用鼠标 R 估算一列或某些列

我正在用 R 中的 mouse 包进行试验,并且很好奇如何将列排除在插补之外。

  1. 如果我只想对一列进行平均插补,则该 mice.impute.mean(y, ry, x = NULL, ...)函数似乎就是我要使用的。我正在努力理解我需要包含什么作为第三个参数才能使其工作。
  2. 如果我有一个包含姓名、ID、出生日期等分类数据的数据集,这些数据不应该影响其他列的计算,并且在缺失时不应填写,我如何告诉小鼠在其中排除这些列计算?

我一直在使用小鼠数据集 nhanes进行探索。

谢谢

r dataframe r-mice imputation

2
推荐指数
1
解决办法
1854
查看次数

'R','鼠标',缺少变量插补-如何仅在稀疏矩阵中执行一列

我有一个半稀疏的矩阵。所有单元格中有一半是空白(na),所以当我尝试运行“鼠标”时,它将尝试对所有单元格起作用。我只对一个子集感兴趣。

问题:在下面的代码中,如何使“小鼠”仅在前两列上运行?有没有一种干净的方法使用行滞后或行前导来做到这一点,以便上一行的内容可以帮助修补当前行中的孔?

set.seed(1)

#domain
x <- seq(from=0,to=10,length.out=1000)

#ranges
y <- sin(x) +sin(x/2) + rnorm(n = length(x))
y2 <- sin(x) +sin(x/2) + rnorm(n = length(x))

#kill 50% of cells
idx_na1 <- sample(x=1:length(x),size = length(x)/2)
y[idx_na1] <- NA

#kill more cells
idx_na2 <- sample(x=1:length(x),size = length(x)/2)
y2[idx_na2] <- NA

#assemble base data
my_data <- data.frame(x,y,y2)

#make the rest of the data
for (i in 3:50){


     my_data[,i] <- rnorm(n = length(x))
     idx_na2 <- sample(x=1:length(x),size = length(x)/2)
     my_data[idx_na2,i] <- NA

}

#imputation
est <- …
Run Code Online (Sandbox Code Playgroud)

r r-mice imputation

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

当鼠标返回“系统在计算上是单一的”错误时,在 R 中进行插补

我正在尝试对中等大小的数据框(~100,000 行)进行插补,其中 30 列中有 5 列具有 NA(很大比例,大约 60%)。

我用以下代码尝试了鼠标:

library(mice)    
data_3 = complete(mice(data_2))
Run Code Online (Sandbox Code Playgroud)

第一次迭代后,我得到以下异常:

iter imp variable
  1   1  Existing_EMI  Loan_Amount  Loan_Period

Error in solve.default(xtx + diag(pen)): system is computationally singular: reciprocal condition number = 1.08007e-16
Run Code Online (Sandbox Code Playgroud)

是否有其他一些更适合这种情况的软件包?我该如何处理这个问题?

r r-mice imputation

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

R中MI数据的描述性统计:取3

作为R初学者,我发现很难弄清楚如何计算多重估算数据的描述性统计数据(比运行一些其他基本分析更重要,例如关联和回归).

这些类型的问题以道歉(Descriptive statistics(Means,StdDevs)使用多重推算数据:R)开头,但尚未得到解答(https://stats.stackexchange.com/questions/296193/pooling-basic-descriptives-从几个乘法推算数据集 - 使用 - 鼠标)或迅速投下一票.

以下是对mouseadds函数的描述(https://www.rdocumentation.org/packages/miceadds/versions/2.10-14/topics/stats0),我发现很难跟踪以mids格式存储的数据.

我已经使用摘要(完整(imp))得到了一些输出,如均值,中位数,最小值,最大值,但是我想知道如何获得额外的汇总输出(例如,偏斜/峰度,标准偏差,方差).

从上面的上一张海报中借来的插图:

  > imp <- mice(nhanes, seed = 23109)

    iter imp variable
    1   1  bmi  hyp  chl
    1   2  bmi  hyp  chl
    1   3  bmi  hyp  chl
    1   4  bmi  hyp  chl
    1   5  bmi  hyp  chl
    2   1  bmi  hyp  chl
    2   2  bmi  hyp  chl
    2   3  bmi  hyp  chl

  > summary(complete(imp))
   age         bmi        hyp         chl     
   1:12   Min.   :20.40   1:18   Min.   :113  
   2: 7 …
Run Code Online (Sandbox Code Playgroud)

r summary r-mice imputation

1
推荐指数
2
解决办法
487
查看次数

R - 如何将公式传递给 with(data, lm(y ~ x)) 结构

这个问题与R - 如何将公式传递给函数内的 with(df, glm(y ~ x)) 构造高度相关,但提出了更广泛的问题。

为什么这些表达式有效?

text_obj <- "mpg ~ cyl"
form_obj <- as.formula(text_obj)

with(mtcars, lm(mpg ~ cyl)) 
with(mtcars, lm(as.formula(text_obj))) 
lm(form_obj, data = mtcars)
Run Code Online (Sandbox Code Playgroud)

但不是这个吗?

with(mtcars, lm(form_obj))
Error in eval(predvars, data, env) : object 'mpg' not found
Run Code Online (Sandbox Code Playgroud)

我通常会使用该data参数,但这在mice包中是不可能的。IE。

library(mice)
mtcars[5, 5] <- NA # introduce a missing value to be imputed
mtcars.imp = mice(mtcars, m = 5)
Run Code Online (Sandbox Code Playgroud)

这些不起作用

lm(form_obj, data = mtcars.imp)
with(mtcars.imp, lm(form.obj))
Run Code Online (Sandbox Code Playgroud)

但这确实

with(mtcars.imp, lm(as.formula(text_obj)))
Run Code Online (Sandbox Code Playgroud)

因此,是否总是as.formula在函数内部使用参数,而不是先构造它然后将其传入?

r lm r-mice

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

错误:在 R 中尝试 MICE 包时不支持 `t.haven_labelled()`

这是我的示例代码:

图书馆(避风港)community_surveys <- read_sav(“community_surveys.sav”)

diss_data <- as.data.frame(community_surveys)

diss_data$FOC_1 <- as.factor(diss_data$FOC_1)
diss_data$DR_1 <- as.factor(diss_data$DR_1)
diss_data$IR_1 <- as.factor(diss_data$IR_1)
diss_data$HAITI <- as.factor(diss_data$HAITI)
diss_data$TREATMENT <- as.factor(diss_data$TREATMENT)

library(mice)

mice(diss_data, maxit = 10, m = 10)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Error: `t.haven_labelled()` not supported
Run Code Online (Sandbox Code Playgroud)

就理解水平而言,我是一名 R 用户新手,有一些入门课程和一些阅读资料。非常感谢任何帮助。

r r-mice r-haven

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

“mice”R 包没有输入数据

我已经运行回归来替换数据集中缺失的数据,并希望将其与使用 Stef va Buuren 的“mice”包的结果进行比较

\n\n

我在交叉验证的帖子链接上引用此链接

\n\n

我也在阅读 This ,它的语法和用法类似。

\n\n

我的代码是:

\n\n
imp <- mice(without_response, method = "norm.predict", m = 1) \n#Impute data\nimp_with_mice <- complete(imp) # Store data\n
Run Code Online (Sandbox Code Playgroud)\n\n

当我输出:

\n\n
imp_with_mice[impute_here,]\n
Run Code Online (Sandbox Code Playgroud)\n\n

为了获取需要输入的行,不会替换任何值。我最初在丢失数据的地方有“?”。我现在已经尝试将 \'NA\' 作为字符串,然后尝试使用不带引号的 NA 来类似于简历帖子。

\n\n

在任何情况下,我都无法让老鼠用任何东西替换我的 16 个第 7 列值。

\n\n

请帮助我使用。

\n\n

这些是我希望替换变量的行的示例:

\n\n
      V1  V2 V3 V4 V5 V6 V7 V8 V9 V10 \n24 1057013 8  4 5   1  2 NA  7  3  1 \n41 1096800 6  6 6   9  6 NA …
Run Code Online (Sandbox Code Playgroud)

r na r-mice

0
推荐指数
1
解决办法
1万
查看次数

Rpy2:调用包含点的函数

我试图通过 Jupyter Notebook 在 Pyton 中运行 R 函数。问题是,我的函数名称(来自 mouse lib) - 包含点。函数的名称是md.pattern,这是我要运行的代码:

from rpy2.robjects.packages import importr
mice = importr('mice')
mice.md.pattern(train)
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

AttributeError: module 'mice' has no attribute 'md'
Run Code Online (Sandbox Code Playgroud)

我也尝试运行:

from rpy2.robjects.packages import importr
mice = importr('mice')

pattern = robjects.r("md.pattern")
mice.pattern(train)
Run Code Online (Sandbox Code Playgroud)

并得到相同的错误。

python r rpy2 r-mice jupyter-notebook

0
推荐指数
1
解决办法
238
查看次数

标签 统计

r ×8

r-mice ×8

imputation ×4

dataframe ×1

jupyter-notebook ×1

lm ×1

na ×1

python ×1

r-haven ×1

rpy2 ×1

summary ×1