python做分布函数 python weibull分布( 四 )


假设在该试验中正面朝上的概率为0.3,这意味着平均来说,我们可以期待有3次是硬币正面朝上的 。我定义掷硬币的所有可能结果为k = np.arange(0,11):你可能观测到0次正面朝上、1次正面朝上,一直到10次正面朝上 。我使用stats.binom.pmf计算每次观测的概率质量函数 。它返回一个含有11个元素的列表(list),这些元素表示与每个观测相关联的概率值 。
您可以使用.rvs函数模拟一个二项随机变量 , 其中参数size指定你要进行模拟的次数 。我让Python返回10000个参数为n和p的二项式随机变量 。我将输出这些随机变量的平均值和标准差,然后画出所有的随机变量的直方图 。
泊松分布(Poisson Distribution)
一个服从泊松分布的随机变量X,表示在具有比率参数(rate parameter)λ的一段固定时间间隔内,事件发生的次数 。参数λ告诉你该事件发生的比率 。随机变量X的平均值和方差都是λ 。
E(X) = λ, Var(X) = λ
泊松分布的例子:已知某路口发生事故的比率是每天2次 , 那么在此处一天内发生4次事故的概率是多少?
让我们考虑这个平均每天发生2起事故的例子 。泊松分布的实现和二项分布有些类似,在泊松分布中我们需要指定比率参数 。泊松分布的输出是一个数列,包含了发生0次、1次、2次,直到10次事故的概率 。我用结果生成了以下图片 。
你可以看到,事故次数的峰值在均值附近 。平均来说,你可以预计事件发生的次数为λ 。尝试不同的λ和n的值,然后看看分布的形状是怎么变化的 。
现在我来模拟1000个服从泊松分布的随机变量 。
正态分布(Normal Distribution)
正态分布是一种连续分布,其函数可以在实线上的任何地方取值 。正态分布由两个参数描述:分布的平均值μ和方差σ2。
E(X) = μ, Var(X) = σ2
正态分布的取值可以从负无穷到正无穷 。你可以注意到 , 我用stats.norm.pdf得到正态分布的概率密度函数 。
β分布(Beta Distribution)
β分布是一个取值在 [0, 1] 之间的连续分布,它由两个形态参数α和β的取值所刻画 。
β分布的形状取决于α和β的值 。贝叶斯分析中大量使用了β分布 。
当你将参数α和β都设置为1时,该分布又被称为均匀分布(uniform distribution) 。尝试不同的α和β取值 , 看看分布的形状是如何变化的 。
指数分布(Exponential Distribution)
指数分布是一种连续概率分布,用于表示独立随机事件发生的时间间隔 。比如旅客进入机场的时间间隔、打进客服中心电话的时间间隔、中文维基百科新条目出现的时间间隔等等 。
我将参数λ设置为0.5,并将x的取值范围设置为 $[0, 15]$。
接着,我在指数分布下模拟1000个随机变量 。scale参数表示λ的倒数 。函数np.std中,参数ddof等于标准偏差除以 $n-1$ 的值 。
结语(Conclusion)
概率分布就像盖房子的蓝图,而随机变量是对试验事件的总结 。我建议你去看看哈佛大学数据科学课程的讲座,Joe Blitzstein教授给了一份摘要 , 包含了你所需要了解的关于统计模型和分布的全部 。
python制作分布图制作分布图类似密度图,在python中利用pandas来提取分布数据是比较方便的 。主要用到pandas的cut和groupby等函数 。
官方文档链接
主要参数为x和bins 。
x为数据源,数组格式的都支持,list,numpy.narray, pandas.Series 。
bins可以为int,也可以为序列 。
我们定义bins为一个序列,默认为左开右闭的区间:
对言值列按cats做groupby,然后调用get_stats统计函数,再用unstack函数将层次化的行索引“展开”为列 。

推荐阅读