r - R中的概率函数
问题描述
我正在尝试s_i = P(X+X+Y=i)
在 R 中编写函数。我有以下分布:
我写这段代码
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)
}
我不确定我是否正确理解了这个功能。有任何想法吗?
解决方案
首先,你的功能是正确的。
你的方法
应用你的函数,你可以看到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
推荐阅读
- javascript - 如何在另一个对象数组中初始化一个对象数组?
- python - 通过视图提交表单时获取“NOT NULL 约束”。通过 /admin 添加时工作正常
- c# - 为什么这个功能和一个完全相同的格式不起作用是有原因的吗?
- google-sheets - 在 Google 表格中错开重复日期?
- oracle - 我刚刚在 plsql 中创建了这个触发器
- cordova - 离子科尔多瓦资源--splash和--icon错误
- c# - 我应该使用哪个 MySql InnoDB 事务隔离级别?
- python-3.x - Python3 多态性:John Guttag 的《使用 Python 2ed 计算和编程简介》第 14 章中是否有其他人得到 NameError?
- excel - 需要根据这些行中的数据合并行
- xcode - 链接器命令失败,退出代码为 1(使用 -v 查看调用)Xcode 错误