gpt4 book ai didi

r - 多组密度图

转载 作者:行者123 更新时间:2023-12-04 11:31:24 25 4
gpt4 key购买 nike

我正在尝试从 densityplot() 生成类似于 lattice package 的东西,在对 ggplot2 包使用多重插补后使用 mice 。这是一个可重现的示例:

require(mice)
dt <- nhanes
impute <- mice(dt, seed = 23109)
x11()
densityplot(impute)

其中产生:

我想对输出有更多的控制(我也将其用作 ggplot 的学习练习)。所以,对于 bmi 变量,我试过这个:
bar <- NULL
for (i in 1:impute$m) {
foo <- complete(impute,i)
foo$imp <- rep(i,nrow(foo))
foo$col <- rep("#000000",nrow(foo))
bar <- rbind(bar,foo)
}

imp <-rep(0,nrow(impute$data))
col <- rep("#D55E00", nrow(impute$data))
bar <- rbind(bar,cbind(impute$data,imp,col))
bar$imp <- as.factor(bar$imp)

x11()
ggplot(bar, aes(x=bmi, group=imp, colour=col)) + geom_density()
+ scale_fill_manual(labels=c("Observed", "Imputed"))

产生这个:

所以它有几个问题:
  • 颜色不对。看来我控制颜色的尝试是完全错误的/被忽略了
  • 有不需要的水平线和垂直线
  • 我希望图例显示估算和观察,但我的代码给出了错误 invalid argument to unary operator

  • 此外,使用 densityplot(impute) 在一行中完成的工作似乎需要做很多工作 - 所以我想知道我是否可能完全以错误的方式进行?

    编辑 :我应该添加第四个问题,正如@ROLO 所指出的:

    .4.图的范围似乎不正确。

    最佳答案

    使用 ggplot2 更复杂的原因是您使用的是 mouse 包中的 densityplot (准确地说是 mice::densityplot.mids - 查看它的代码),而不是来自lattice 本身。此函数具有从内置的 mids 绘制 mice 结果类的所有功能。如果您尝试使用 lattice::densityplot 进行相同的操作,您会发现它的工作量至少与使用 ggplot2 一样多。

    但不用多说,这里是如何使用 ggplot2 做到这一点:

    require(reshape2)
    # Obtain the imputed data, together with the original data
    imp <- complete(impute,"long", include=TRUE)
    # Melt into long format
    imp <- melt(imp, c(".imp",".id","age"))
    # Add a variable for the plot legend
    imp$Imputed<-ifelse(imp$".imp"==0,"Observed","Imputed")

    # Plot. Be sure to use stat_density instead of geom_density in order
    # to prevent what you call "unwanted horizontal and vertical lines"
    ggplot(imp, aes(x=value, group=.imp, colour=Imputed)) +
    stat_density(geom = "path",position = "identity") +
    facet_wrap(~variable, ncol=2, scales="free")

    但是正如您所看到的,这些图的范围小于 densityplot 的范围。这种行为应该由 trim 的参数 stat_density 控制,但这似乎不起作用。修复 stat_density 的代码后,我得到了以下图:

    仍然与 densityplot 原版不完全相同,但更接近。

    编辑:对于真正的修复,我们需要等待 ggplot2 的下一个主要版本,请参阅 github

    关于r - 多组密度图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12056989/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com