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中对的联合概率的主要内容,如果未能解决你的问题,请参考以下文章