R语言mice包stripplot无法显示分类变量的解决方法求助
我明白你遇到的问题了——当同时插补数值和分类变量时,stripplot()默认只展示数值变量,而且你尝试强制绘制分类变量时踩了语法的坑。别急,我来给你讲两种正确的做法:
方法1:用公式明确指定要绘制的变量
stripplot.mids支持通过公式语法,直接列出所有你想展示的变量(不管是数值还是分类类型)。比如你有数值变量age、income,分类变量edu,可以这么写:
stripplot(imp, ~ age + income + edu)
这样会把所有指定变量的观测值(实心点)和各插补数据集的插补值(空心点,不同颜色对应不同插补集)都展示出来。对于二分类的edu,它会在对应的分类水平上排列点位,你能清晰对比观测值和插补值的分布差异。
方法2:传递变量名字符向量
如果你不想写公式,也可以直接把目标变量名放进一个字符向量,传给函数的第二个参数:
stripplot(imp, c("age", "income", "edu"))
这个写法的效果和公式形式完全一致,选哪种全看你个人习惯。
为什么你的代码会报错?
你之前用stripplot(imp, imp$edu)时,其实是把imp$edu(这是包含原始数据和插补值的特殊数据结构)直接传给了函数,但这个参数只接受变量名字符串或者公式对象,不支持直接传入数据列。函数无法识别这种格式,所以抛出了“Cannot pad extended formula”的错误。
额外小技巧:优化分类变量的显示效果
如果分类变量的水平名称过长,或者点位重叠严重,可以开启抖动效果让分布更清晰:
stripplot(imp, ~ age + income + edu, jitter = TRUE)
也可以自定义观测值和插补值的符号、颜色,提升辨识度:
stripplot(imp, ~ age + income + edu, pch = c(19, 1), col = c("black", "steelblue"))
这里pch=19是实心圆(代表观测值),pch=1是空心圆(代表插补值),搭配不同颜色后,两类数据的区分度会更高。
内容的提问来源于stack exchange,提问作者Synnøve Eikefet
相关产品推荐
相关产品推荐

