Scipy自带了多种常见的分布,如正态分布、均匀分布、二项分布、多项分布、伽马分布等等1,还可以自定义任意的概率分布。本文将介绍如何利用Scipy自定义任意的概率分布。
连续变量分布
考虑连续变量x满足如下概率密度分布函数:
其在实数域积分为1。我们可以通过scipy.stats中的rv_continuous类去实现这个分布,代码如下:
from scipy.stats import rv_continuous
import matplotlib.pyplot as plt
import numpy as np
class MyDistribution(rv_continuous):
def _pdf(self, x):#概率密度分布函数
return 2*sqrt(0.1)*exp(-0.1*x**2)*cos(x)**2/(sqrt(pi)*(exp(-10) + 1))
distribution = MyDistribution()
xlist=np.linspace