R中对的联合概率

Posted

技术标签:

【中文标题】R中对的联合概率【英文标题】:Joint probability of pairs in R 【发布时间】:2022-01-10 23:17:00 【问题描述】:

我有一个矩阵,其中包含来自序列的连续值对。

例如,在像[1,1,3,3,3,4,4,2,4,2,2] 这样的序列中,我会将以下对存储在一个矩阵中。

1, 1
1, 3
3, 3
3, 3
3, 4
4, 4
4, 2
2, 4
4, 2
2, 2

而且,我想获取每个唯一对的出现概率。

例如,对于像(a,b) 这样的一对,joint_prob(a,b) = cond_prob(b|a)/prob(a)

(1,1) 0.5
(1,3) 0.5
(3,3) 0.6
and so on..

有没有我可以在 R 中做到这一点而不必使用许多循环?通过使用内置库?有人可以帮助我以有效的方式做到这一点吗?

【问题讨论】:

我并不完全清楚第二列是如何从序列中生成的。似乎第一列是减去最后一个元素的序列,第二列是减去第一个元素的序列。对吗? 是的。没错 【参考方案1】:

这个怎么样?

d <- c(1,1,3,3,3,4,4,2,4,2,2)
tr <- NULL
for (i in 1:(length(d)-1))   # all bigrams
  tr <- rbind(tr, data.frame(x=d[i], y=d[i+1]))

tbl <- table(tr)
joint_prob <- tbl / rowSums(tbl) # joint probability table
joint_prob[1,1]
# 0.5
joint_prob[1,3]
# 0.5
joint_prob[3,3]
# 0.6666667

【讨论】:

以上是关于R中对的联合概率的主要内容,如果未能解决你的问题,请参考以下文章

朴素贝叶斯分类垃圾短信和R实现

联合概率分布怎么做?

Inversions After Shuffle CodeForces - 749E (概率,期望)

联合概率

求联合概率数据关联(JPDA)的Matlab仿真源代码

如何运用matlab做联合概率分布图?