【问题标题】:3d histogram of coin flips results in R硬币翻转的 3d 直方图导致 R
【发布时间】:2018-12-06 15:20:27
【问题描述】:

我的目标是生成一个 3d 直方图,表示在第一个和第二个掷硬币序列中获得一定数量正面的概率。

我的想法很简单:

  • expand.grid取第一、二序列中一定数量正面概率的笛卡尔积

  • 对笛卡尔积中的每个项目应用乘积运算,以获得第一个中有那么多正面和第二个中有那么多正面的概率。我认为问题出在这一步。

  • 在 3d 直方图中显示它们。

但是我得到了一个非常混乱的输出,我无法理解:

我预计并在极端情况下输出条形较低(第一个 AND 在第二个中很难获得 0 个正面)而在中间较高(在第一个 AND 在第二个中更容易获得 2 个正面)。

require("plot3D")

x <- c(1, 4, 6, 4, 1)/8
y <- c(1, 4, 6, 4, 1)/8

prod <- function( arr ) { return (arr[1]*arr[1])}

z <- as.matrix(apply(expand.grid(x,y), c(1,2), prod))

print(z)
##  Plot as a 3D histogram:
hist3D(z=z, border="black")

此外,expand.grid 的输出看起来过于线性,而不是作为笛卡尔积的表格应该:

    Var1  Var2
1  0.125 0.125
2  0.375 0.125
3  0.375 0.125
4  0.125 0.125
5  0.125 0.375
6  0.375 0.375
7  0.375 0.375
8  0.125 0.375
9  0.125 0.375
10 0.375 0.375
11 0.375 0.375
12 0.125 0.375
13 0.125 0.125
14 0.375 0.125
15 0.375 0.125
16 0.125 0.125

【问题讨论】:

  • @Caridorc 刚刚意识到概率密度函数应该加到 1 才有效。你的 prob_x 和 prob_y 都应该是:c(1, 4, 6, 4, 1)/16 并且类似地它会产生一个等于 1 的 z 的总和。为了清晰起见,也为代码添加了更多细节。
  • @Mankind_008 谢谢,我之前少了一枚硬币,忘记了 *2 乘数

标签: r plot graph 3d histogram


【解决方案1】:

给定 xy第 1 和第 2 次掷硬币序列中正面的数量,分别来自 独立的二项分布.

您需要z 评估为在xy 的网格上的联合概率分布,其中x, y € {0,1, 2,3,4}

require("plot3D")

x_val <- 0:4                    # No of heads in 1st sequence of flips
y_val <- 0:4                    # No of heads in 2nd sequence of flips

px <- c(1, 4, 6, 4, 1)/16       # probability vector for no of flips 
py <- c(1, 4, 6, 4, 1)/16       # in 1st and 2nd sequence of flips

grid_prob <- mesh(px, py)
z  <- with(grid_prob, x*y)      # sum(z) should equal 1 to be a pdf

# Plot as a 3D histogram:
hist3D(z=z, border="black", x = x_val , y = y_val)

【讨论】:

    猜你喜欢
    • 2016-12-27
    • 1970-01-01
    • 1970-01-01
    • 2018-12-30
    • 2018-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-14
    相关资源
    最近更新 更多