r中MICE包的被动imputation语法



假设我们有一个数字变量age,它有时会丢失。在使用它来预测其他变量时,我们希望允许非线性,因此我们创建age_factor。被动归罪于age_factor:https://www.gerkovink.com/miceVignettes/Passive_Post_processing/Passive_imputation_post_processing.html

但是语法是如何工作的呢?比如:

method["age_factor"] <- "~ 18_34 if age <= 34,
35_49 if age <= 49... "

谢谢你!

使用的语法与你写的很接近:

method["age_factor"] <- "~ ifelse(is.na(age), NA,  
ifelse(age < 20, 'under 20', 
ifelse(age < 25, '20 to 24', 
ifelse(age < 35, '25 to 34',
'35 and over'))))"
我将NA包含在可能的结果中,因为估算有时会返回NA。(另外,您需要将因子级别名称括在单引号中,因为表达式作为一个整体被括在双引号中,否则R会认为您的age_factor代码过早结束。)

然而——在这种情况下,我会避免ifelse(),更喜欢cutr::smart_cut(),因为它的简单性和抵抗难以发现的语义错误:

require(cutr)
cuts <- c(-Inf, 20, 25, 35, Inf)
imp$age_factor <- with(imp, smart_cut(age, cuts, 
labels = c('under 20', '20 to 24', '25 to 34', '35 and over'), output = "factor"))

注意参数输出= "factor"会给你一个无序因素;您可以将其设置为其他值,例如有序因子,整数等。

冠之快乐!: -)

为什么你不能那样做呢:

age_factor <- function(x){
if (x <= 34) {
y <- "18_34"
} else {
y <- "35_49"
}
return(y)    
}
age_factor(32)
[1] "18_34"

相关内容

  • 没有找到相关文章

最新更新