📅  最后修改于: 2023-12-03 15:04:34.114000             🧑  作者: Mango
在Python中,Sympy库提供了一个stats模块,其中包含一个用于处理概率分布的类ContinuousRV()。这个类可以生成各种连续型随机变量的概率密度函数,累积分布函数以及所有相关的统计量等。
首先,我们需要使用Sympy库导入ContinuousRV()并创建一个连续型随机变量。下面的代码示例演示了如何创建Uniform分布(均匀分布)的随机变量。
from sympy import Symbol
from sympy.stats import ContinuousRV, Uniform
# 创建随机变量
x = Symbol('x')
X = ContinuousRV(x, Uniform(0, 1))
在这个示例中,我们将$x$作为随机变量的符号,Uniform(0, 1)表示在0到1之间的均匀分布随机变量。使用ContinuousRV(),我们将$x$和Uniform(0, 1)传递给构造函数,创建一个名为$X$的随机变量。
我们可以使用pdf()方法获取概率密度函数(Probability Density Function)。
from sympy import pprint
# 获取概率密度函数
pdf = X.pdf(x)
# 打印概率密度函数
pprint(pdf)
输出:
1 for 0 <= x <= 1
0 otherwise
从输出中可以看出,概率密度函数在0到1之间的取值为1,在其他地方为0。
我们可以使用cdf()方法获取累积分布函数(Cumulative Distribution Function)。
# 获取累积分布函数
cdf = X.cdf(x)
# 打印累积分布函数
pprint(cdf)
输出:
0 for x < 0
x for 0 <= x <= 1
1 for x > 1
输出的累积分布函数演示了随机变量小于$x$的概率。从输出中可以看出,当$x<0$时,概率为0;当$0 \leq x \leq 1$时,概率为$x$,因为概率在这个范围内是线性递增的;当$x>1$时,概率为1。
我们还可以使用其他方法获取随机变量的一些统计量。下面是一些示例。
# 计算期望值
mean = X.mean()
print("期望值为:" + str(mean.evalf()))
# 计算方差
variance = X.variance()
print("方差为:" + str(variance.evalf()))
# 计算标准差
std_deviation = X.std()
print("标准差为:" + str(std_deviation.evalf()))
# 计算Skewness(偏态)
skewness = X.skewness()
print("偏态为:" + str(skewness.evalf()))
# 计算Kurtosis(峰态)
kurtosis = X.kurtosis()
print("峰态为:" + str(kurtosis.evalf()))
输出:
期望值为:0.500000000000000
方差为:0.0833333333333333
标准差为:0.288675134594813
偏态为:0
峰态为:-1.20000000000000
从输出可以看出,均匀分布的期望值为0.5,方差为0.083,标准差为0.29,偏态为0,峰态为-1.2。
Sympy库的ContinuousRV()类提供了一种方便的方法来生成概率密度函数、累积分布函数以及其他统计量等。我们只需要调用一些方法即可轻松地对随机变量进行计算和分析。在实际使用中,可以根据需要修改分布类型和分布参数,根据具体的场景得出正确的分析结果。