我正在用 R 中的 mouse 包进行试验,并且很好奇如何将列排除在插补之外。
mice.impute.mean(y, ry, x = NULL, ...)函数似乎就是我要使用的。我正在努力理解我需要包含什么作为第三个参数才能使其工作。 我一直在使用小鼠数据集
nhanes进行探索。
谢谢
我有一个半稀疏的矩阵。所有单元格中有一半是空白(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) 我正在尝试对中等大小的数据框(~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初学者,我发现很难弄清楚如何计算多重估算数据的描述性统计数据(比运行一些其他基本分析更重要,例如关联和回归).
这些类型的问题以道歉(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 - 如何将公式传递给函数内的 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在函数内部使用参数,而不是先构造它然后将其传入?
这是我的示例代码:
图书馆(避风港)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 用户新手,有一些入门课程和一些阅读资料。非常感谢任何帮助。
我已经运行回归来替换数据集中缺失的数据,并希望将其与使用 Stef va Buuren 的“mice”包的结果进行比较
\n\n我在交叉验证的帖子链接上引用此链接
\n\n我也在阅读 This ,它的语法和用法类似。
\n\n我的代码是:
\n\nimp <- mice(without_response, method = "norm.predict", m = 1) \n#Impute data\nimp_with_mice <- complete(imp) # Store data\nRun Code Online (Sandbox Code Playgroud)\n\n当我输出:
\n\nimp_with_mice[impute_here,]\nRun 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) 我试图通过 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)
并得到相同的错误。