概率统计Python计算:连续型随机变量函数分布

在这里插入图片描述
我们知道,对 X X X已知的分布函数 F X ( x ) F_X(x) FX(x),若函数 Y = g ( X ) Y=g(X) Y=g(X)具有单调增加的反函数 X = g − 1 ( Y ) X=g^{-1}(Y) X=g1(Y),则 Y Y Y的分布函数 F Y ( y ) = F X ( g − 1 ( y ) F_Y(y)=F_X(g^{-1}(y) FY(y)=FX(g1(y)。在Python中,我们也可以通过这样的函数复合方式计算连续型随机变量函数的分布:构造 y = g ( x ) y=g(x) y=g(x)的反函数 h ( y ) = g − 1 ( y ) h(y)=g^{-1}(y) h(y)=g1(y),然后将其作为参数传递给 X X X的累积概率函数的自变量。
例1 X X X~ U ( a , b ) U(a, b) U(a,b) 0 ≤ a < b 0\leq a<b 0a<b), Y = π 4 X 2 Y=\frac{\pi}{4}X^2 Y=4πX2,当 y ≥ 0 y\geq0 y0时, g − 1 ( y ) = h ( y ) = 2 y π g^{-1}(y)=h(y)=2\sqrt{\frac{y}{\pi}} g1(y)=h(y)=2πy 单调增加,所以 F Y ( y ) = F X ( h ( y ) ) = F X ( 2 y π ) F_Y(y)=F_X(h(y))=F_X(2\sqrt{\frac{y}{\pi}}) FY(y)=FX(h(y))=FX(2πy )。由于scipy.stats中的uniform就表示均匀分布,所以只需要定义好函数 g − 1 ( y ) = h ( y ) g^{-1}(y)=h(y) g1(y)=h(y)
传递给uniform的cdf函数的自变量参数就可以定义 Y Y Y的分布了。由于 a ≥ 0 a\geq0 a0,故可将 h ( y ) h(y) h(y)定义为
h ( y ) = { 0 y < 0 2 y π y ≥ 0 . h(y)=\begin{cases}0&y<0\\2\sqrt{\frac{y}{\pi}}&y\geq0\end{cases}. h(y)={02πy y<0y0.
下列代码实现 h ( y ) h(y) h(y)的定义

def h(y):
    x=np.zeros(y.size)              #返回值初始化为0
    d=np.where(y>=0)                #y>=0的下标序列
    x[d]=2*np.sqrt(y[d]/np.pi)      #y>=0时对应的函数值
    return x

利用上列程序定义好的函数h(y),我们定义如下的ydist分布

from scipy.stats import uniform, rv_continuous
class ydist(rv_continuous):
    def _cdf(self, y, a, b):
        return uniform.cdf(x=h(y), loc=a, scale=b-a)

ydist类中定义的累积概率函数cdf除了self以外的3个参数y表示自变量,a,b分别表示 X X X作为均匀分布的参数 a a a b b b。第4行调用uniform(均匀分布)的cdf函数,传递h(y)给参数x,a给参数loc,b-a给参数scale。计算的结果作为返回值返回。利用ydist分布,我们可以模拟 Y Y Y所描述的随机试验。

import numpy as np
from matplotlib import pyplot as plt
dist=ydist()
x=np.linspace(-2, 25, 256)
a, b=2, 5
y=dist.pdf(x,a,b)
plt.plot(x,y)
v=dist.rvs(a, b, size=200)
plt.hist(v, density=True)
plt.show()

程序的第3行用程序2.17定义的分布ydist类创建对象dist。第6行调用dist的概率密度函数pdf,传递参数a和b(第5行创建并初始化)计算横轴范围x=(-2, 25)(第4行创建)对应的函数值。第7行绘制概率密度函数的图像。第8行调用dist的rvs函数产生200个服从dist分布的随机数构成的序列v。第9行用v的数据绘制直方图。运行程序,展示下图。可见数据v很好地模拟了dist分布描述的试验。
在这里插入图片描述
写博不易,敬请支持:
如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!
代码诚可贵,原理价更高。若为AI学,读正版书好
返回《导引》

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Python中,可以使用概率论中的随机变量分布来进行统计计算。常见的离散型分布包括二项分布和泊松分布,连续性分布包括正态分布、均匀分布和指数分布等。这些分布可以用来计算概率、期望和方差等统计量。 对于正态分布,可以使用scipy.stats库中的norm模块进行计算。例如,可以使用norm.cdf函数计算小于某个值的概率,使用norm.ppf函数计算给定累积概率时的反函数值。代码示例如下: ``` from scipy.stats import norm # 计算小于40的概率 p1 = norm.cdf(40, loc=50, scale=10) # 计算30到40之间的概率 p2 = norm.cdf(40, loc=50, scale=10) - norm.cdf(30, loc=50, scale=10) # 计算小于2.5的概率 p3 = norm.cdf(2.5, 0, 1) # 计算-1.5到2之间的概率 p4 = norm.cdf(2) - norm.cdf(-1.5) # 计算累计概率为0.025时的反函数值 q1 = norm.ppf(0.025, loc=0, scale=1) # 计算累计概率为0.975时的反函数值 q2 = norm.ppf(0.975, 0, 1) print(p1, p2, p3, p4, q1, q2) ``` 对于计算随机变量概率分布的均值和方差,可以使用numpy库进行计算。代码示例如下: ``` import numpy as np # 假设有一个数据框df,其中包含了不合格品数和概率 mymean = sum(df['不合格品数'] * df['概率']) # 计算均值 myvar = sum((df['不合格品数'] - mymean) ** 2 * df['概率']) # 计算方差 mystd = np.sqrt(myvar) # 计算标准差 print(mymean, myvar, mystd) ``` 以上是关于Python统计学中随机变量概率分布的一些基本操作和计算方法。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Python统计学03——随机变量概率分布](https://blog.csdn.net/weixin_46277779/article/details/126673517)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值