我有以下数据矩阵叫做 joint 。值(o,1)是3个伯努埃尔试验的结果。每个试验的概率都存储在" prob"。
栏中 > joint
z1 z2 z3 prob
[1,] 0 0 0 0.09375
[2,] 1 0 0 0.03125
[3,] 0 1 0 0.09375
[4,] 0 0 1 0.28125
[5,] 1 1 0 0.03125
[6,] 0 1 1 0.28125
[7,] 1 0 1 0.09375
[8,] 1 1 1 0.09375
我需要的是计算每个值的概率密度(PDF)(这是:0,1,2和3)并将它们存储在以下矩阵中的pdf列中,该矩阵称为 sumpdf :
> sumpdf
sum pdf cdf
[1,] 0 0 0
[2,] 1 0 0
[3,] 2 0 0
[4,] 3 0 0
实际上我可以总结每个值的概率,但我正在寻找一种优雅的方法来解决问题(例如使用for-或apply-function) - 到目前为止没有成功; - (
答案 0 :(得分:1)
尝试
d$sum <- d$z1 + d$z2 + d$z3
sumpdf <- aggregate(d$prob, by = list(sum = d$sum), FUN = sum)
names(sumpdf)[2] <- "pdf"
sumpdf$cdf <- cumsum(sumpdf$pdf)
sumpdf
# sum pdf cdf
#1 0 0.09375 0.09375
#2 1 0.40625 0.50000
#3 2 0.40625 0.90625
#4 3 0.09375 1.00000