【问题标题】:How to plot Bayesian prior and posterior distributions in one panel using R?如何使用 R 在一个面板中绘制贝叶斯先验和后验分布?
【发布时间】:2013-10-20 11:19:43
【问题描述】:

我尝试了几种方法,包括qqmathlatticedensityplot() 和一些面板功能,如panel.mathdensitypanel.densityplot。但是,我无法让他们做我想让他们做的事情。

对此主题的互联网搜索产生的结果要么集中在 R 中的基图上,要么不在一个面板中绘制两个分布。我可以使用 R 基础图形,但是,我还想绘制几个分布对和一个面板。

“RGraphics”和“Lattice: Multivariate Data Visualization with R”这两本书在这方面也无法启发我。

数据通常看起来像这样:

data <- dgamma(seq(from=0.00001,to=0.01,by=0.00001),shape = .1, scale = .01)

我对@9​​87654327@ 或ggplot 软件包持开放态度,尽管我有更多使用lattice 的经验。

如果您需要更多信息来帮助我,请告诉我。

【问题讨论】:

  • 使用 par(mfrow) 的基本图形?

标签: r plot lattice bayesian


【解决方案1】:

您只给出了一个数据对象,但要求构建两个,所以我将尝试使用不同参数的相同分布的两个项目。使用 lattice 或 ggplot2 时,需要构建一个适当排列的数据框,这通常是数据的“长”格式。 “组”参数指定在同一面板中以不同的颜色进行绘图。

require(lattice)
?lattice  # essential reading
dfrm <- data.frame(dgam = data, param="s.1.01")
dfrm <- rbind(dfrm, data.frame(dgam =
                                 dgamma( seq(from=0.00001,to=0.01,by=0.00001), 
                                 shape = .2, scale = .01), 
                               param="s.2.01") )
dfrm <- cbind( dfrm, X.val=seq(from=0.00001,to=0.01,by=0.00001) )
str(dfrm)
#'data.frame':  2000 obs. of  3 variables:
# $ dgam : num  5263 2817 1954 1507 1231 ...
# $ param: Factor w/ 2 levels "s.1.01","s.2.01": 1 1 1 1 1 1 1 1 1 1 ...
# $ X.val: num  1e-05 2e-05 3e-05 4e-05 5e-05 6e-05 7e-05 8e-05 9e-05 1e-04 ...
xyplot( dgam ~ X.val , 
        group=param, 
        data=dfrm, type="l")

【讨论】:

  • 我没有在我的问题中明确说明这一点,但我想要一个密度图。但是,如果您通过densityplot( ~dgam,group=param,data=dfrm) 交换“xyplot(...)”,这种方法对于密度图非常有效。
猜你喜欢
  • 2019-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-17
  • 1970-01-01
  • 1970-01-01
  • 2015-05-03
  • 1970-01-01
相关资源
最近更新 更多