R中的联合概率

Posted

技术标签:

【中文标题】R中的联合概率【英文标题】:Joint probability in R 【发布时间】:2022-01-05 16:48:47 【问题描述】:

我有一个离散值 X = x1, x2, x3...xn 的有限序列,我想计算序列中每对元素的联合概率。即 P(x1, x2), P(x2, x3) 等。我应该如何在 R 中实现它?我没有太多在 R 中进行此类分析的经验。是否有任何内置函数可以做同样的事情?

【问题讨论】:

【参考方案1】:

如果你假设独立,那么联合概率是微不足道的,你有 $P(a,b)=P(a)P(b)$。否则,您需要单独估计每一对的概率。

为此,您可以使用mapply 获取相同形式的对的列表,然后您可以使用每对的相对丰度来估计概率。这里我只是说明一点,我没有运行这段代码。

L <- length(X)
X.pairs <- mapply(
    function(x1, x2) paste(x1, x2, sep=','),
    X[1:(L-1)],
    X[2:L]
)
table(X.pairs)

编辑:这是离散值。

【讨论】:

【参考方案2】:

你需要使用

library(MASS)
den2d <- kde2d(x,y)
image(den2d)
persp(den2d,phi=30,theta=20)

这在 MASS 书籍第 5.6 节密度估计的二维数据小节中有描述。有例子和进一步的参考。由于版权原因,我无法在此处发布他们的示例。

【讨论】:

谢谢。但是,这不只适用于连续有价值的数据吗?那么离散呢? 它会正常工作。当您提供实际数字的有限向量时,它们始终是离散的。如果你想让它变得不那么平滑,那么就使用内核参数。专家写了密度估计方面的书,所以如果你读了这些书,你会比我知道的更多。

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

朴素贝叶斯

自然语言处理中的概率基础

机器学习 | Sklearn中的朴素贝叶斯全解

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

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

人工智能数学基础--概率与统计4:联合分布与边缘分布