# PyMC与MCMC

## PyMC使用MCMC解决问题的原理

根据贝叶斯公式有:

$$P(\theta|X)\propto{P(\theta)P(X|\theta)}$$

在这里, $$\theta$$是我们想要求的随机变量, $$X$$是随机变量$$\theta$$的**观测值集合**. 我们并不知道$$\theta$$的真实分布是怎么样的, 因此我们先假设出$$\theta$$的**先验分布**$$P(\theta)$$, 在**观测点集合**$$X$$的纠正下, 得到**后验分布**$$P(\theta|X)$$, 就是我们认为的随机变量$$\theta$$的真实分布, 即我们的目标就是求解**后验分布**$$P(\theta|X)$$.

而对于贝叶斯公式中的$$P(X|\theta)$$项, 表示的是在$$\theta$$当前分布的条件下, 观测集$$X$$的发生概率, 因此$$P(X|\theta)$$是一个关于$$\theta$$的函数, 其实就是**似然函数**:

$$f_{\theta}(X)=L(\theta|X)=P(X|\theta)$$

**似然函数**与**条件概率**都是指事件发生的可能性, 但是关注点不同, 似然函数关注的是**当前模型参数**的下, 观测结果(已知)发生的概率. 可以参考[这篇文章](https://blog.csdn.net/junmuzi/article/details/51192283).

因此有如下的公式:

$$P(\theta|X)\propto{P(\theta)f_{\theta}(X)}$$

即**后验概率正比于先验分布以及似然函数**.

因此, 对于复杂的**后验分布**, 可以通过假设的**先验分布**以及以及求得的**似然函数**来表示(正比关系, 只是相差一个系数), 通过**MCMC**采样去**逼近**后验分布, 即随机变量$$\theta$$的真实分布. 在收敛之后的采样就是对后验分布的采样, 也就能代表随机变量$$\theta$$的真实分布情况. 然后再用这些样本去代替分布概率, 计算我们关心的变量, 如积分, 关于$$\theta$$的函数$$f(\theta)$$的期望等等.
