【问题标题】:Probability function in RR中的概率函数
【发布时间】:2020-04-30 14:46:04
【问题描述】:

我正在尝试在 R 中编写函数 s_i = P(X+X+Y=i)。我有以下分布:

我写了这段代码

a_i <- function(k){
  if (k == 0) return (3/4)
  if (k == 1) return (1/8)
  if (k == 2) return (1/8)
  else return(0)
}

b_i <- function(k){
  if (k == 0) return (1/10)
  if (k == 1) return (8/10)
  if (k == 2) return (1/10)
  else return(0)
}

s_i<-function(i){
  sas<-0
  for (x1 in 0:2){
    for(x2 in 0:2){ 
      for(y in 0:2){
        if(x1+x2+y==i){
        sum=a_i(x1)*a_i(x2)*b_i(y)
        sas=sas+sum
        }
      }
    }
  }
  return(sas)
}

我不确定我是否正确理解了这个功能。有什么想法吗?

【问题讨论】:

  • 作为一般反馈,我首先要更改的代码是名称。我会将a_i 重命名为p_x,并将b_i 重命名为p_y。从概念上讲,将代码与问题陈述联系起来会更容易。

标签: r function probability distribution


【解决方案1】:

首先,你的函数是正确的。


你的方法

应用你的函数,你可以看到data.frame格式的分布,如下所示

v <- 0:6
res1 <- data.frame(s = v, prob = sapply(0:6, s_i))

这样

> res1
  s      prob
1 0 0.0562500
2 1 0.4687500
3 2 0.2265625
4 3 0.1843750
5 4 0.0468750
6 5 0.0156250
7 6 0.0015625

交叉检查

接下来,我生成整个样本空间来验证你得到的分布

space <- setNames(expand.grid(replicate(3,0:2,simplify = F)),c("X1","X2","Y"))
space$s <- rowSums(space)
space <- within(space, prob <- Vectorize(a_i)(X1)*Vectorize(a_i)(X2)*Vectorize(b_i)(Y))

你可以在数据框中看到整个空间的地方是

> space
   X1 X2 Y s      prob
1   0  0 0 0 0.0562500
2   1  0 0 1 0.0093750
3   2  0 0 2 0.0093750
4   0  1 0 1 0.0093750
5   1  1 0 2 0.0015625
6   2  1 0 3 0.0015625
7   0  2 0 2 0.0093750
8   1  2 0 3 0.0015625
9   2  2 0 4 0.0015625
10  0  0 1 1 0.4500000
11  1  0 1 2 0.0750000
12  2  0 1 3 0.0750000
13  0  1 1 2 0.0750000
14  1  1 1 3 0.0125000
15  2  1 1 4 0.0125000
16  0  2 1 3 0.0750000
17  1  2 1 4 0.0125000
18  2  2 1 5 0.0125000
19  0  0 2 2 0.0562500
20  1  0 2 3 0.0093750
21  2  0 2 4 0.0093750
22  0  1 2 3 0.0093750
23  1  1 2 4 0.0015625
24  2  1 2 5 0.0015625
25  0  2 2 4 0.0093750
26  1  2 2 5 0.0015625
27  2  2 2 6 0.0015625

那么分布可以概括为

res2 <- aggregate(prob ~ s, space,sum)

这样

> res2
  s      prob
1 0 0.0562500
2 1 0.4687500
3 2 0.2265625
4 3 0.1843750
5 4 0.0468750
6 5 0.0156250
7 6 0.0015625

res1相同

【讨论】:

    猜你喜欢
    • 2016-06-07
    • 1970-01-01
    • 1970-01-01
    • 2018-01-18
    • 1970-01-01
    • 1970-01-01
    • 2014-08-03
    • 1970-01-01
    • 2020-03-09
    相关资源
    最近更新 更多