【问题标题】:Probability distribution values plot概率分布值图
【发布时间】:2011-09-29 19:04:58
【问题描述】:

我有

概率值:0.06,0.06,0.1,0.08,0.12,0.16,0.14,0.14,0.08,0.02,0.04,总和为 1

随机变量可以从上面列表中以相应概率取其值的相应区间:

126,162,233,304,375,446,517,588,659,730,801,839

如何绘制概率分布?

在x轴上,区间值,区间直方图与概率值之间?

谢谢。

【问题讨论】:

    标签: r plot probability histogram


    【解决方案1】:

    怎么样

    x <- c(126,162,233,304,375,446,517,588,659,730,801,839)
    p <- c(0.06,0.06,0.1,0.08,0.12,0.16,0.14,0.14,0.08,0.02,0.04)
    plot(x,c(p,0),type="s")
    lines(x,c(0,p),type="S")
    rect(x[-1],0,x[-length(x)],p,col="lightblue")
    

    想要快速回答? (包含rect 后,您可能不需要lines 调用,并且可以将其更改为plot(x,p,type="n")。像往常一样,我会推荐par(bty="l",lty=1) 作为我首选的图形默认值...)

    (解释:“s”和“S”是两种不同的阶梯类型(参见?plot中的详细信息):我同时使用它们来获取分布的左右边界。)

    编辑:在您的 cmets 中,您说“(它)看起来不像直方图”。目前还不太清楚你想要什么。我在上面的例子中添加了矩形——也许是这样?或者你可以这样做

    b <- barplot(p,width=diff(x),space=0)
    

    但是正确设置 x 轴标签是一件很痛苦的事情。

    【讨论】:

    • x = c(126,162,233,304,375,446,517,588,659,730,801,839), p = c(0.06,0.06,0.1,0.08,0.12,0.16,0.14,0.14,0.08,0.02,00.04) 图),type="s") lines(x,c(0,p),type="S") 显示图形,但看起来不像直方图。你能试试看我的意思。谢谢
    • 好的。说我放弃了右边的 x 轴标签。我只想以原始方式获得概率分布。 (它应该看起来像直方图)我们如何实现它?谢谢你的回答
    • 你看过我修改后的答案第一部分的代码吗(rect)?对我来说,它看起来很像 hist() 的标准结果(如果你愿意,你显然可以设置 x 和 y 标签)。如果它在您看来不像直方图,您能否更具体地说明问题所在?
    • 将参数 xlim = range(x) - x[1] 添加到 barplot 命令,然后这将给出 X 轴标签:axis(1, x - x[1], x)
    • @G.Grothendieck:我不清楚他是否想要断点处的轴标签(我认为您的解决方案会这样做?)或均匀间隔......但仍然有用。
    猜你喜欢
    • 1970-01-01
    • 2012-05-03
    • 1970-01-01
    • 2023-02-07
    • 2018-10-11
    • 2011-09-30
    • 1970-01-01
    • 2022-06-27
    • 1970-01-01
    相关资源
    最近更新 更多