设 ( x 1 , x 2 , ⋯ , x n ) (x_1,x_2,\cdots,x_n) (x1​,x2​,⋯,xn​)是总体 X X X的一个样本观测值。与绘制直方图相仿,记 a = m i n { x 1 , x 2 , ⋯ , x n } a=min\{x_1,x_2,\cdots,x_n\} a=min{x1​,x2​,⋯,xn​}, b = m a x { x 1 , x 2 , ⋯ , x n } b=max\{x_1,x_2,\cdots,x_n\} b=max{x1​,x2​,⋯,xn​}。将区间 [ a , b ] [a, b] [a,b]等分成 m ( ≤ n ) m(\leq n) m(≤n)个小区间,约定除最后一个小区间为闭区间外,其余均为半闭半开区间。统计第 k k k个小区间中所含个体观测值 x i x_i xi​的个数,即个体观测值落在该区间内的频数,记为 f k f_k fk​, k = 1 , 2 , ⋯ , m k=1,2,\cdots,m k=1,2,⋯,m。函数
F n ( x ) = { 0 x < a f 1 n x ∈ Δ 1 f 1 + f 2 n x ∈ Δ 2 ⋮ f 1 + ⋯ + f m − 1 n x ∈ Δ m 1 x ≥ b F_n(x)=\begin{cases}0&x<a\\\frac{f_1}{n}&x\in\Delta_1\\\frac{f_1+f_2}{n}& x\in\Delta_2\\\vdots\\\frac{f_1+\cdots+f_{m-1}}{n}&x\in\Delta_m\\1&x\geq b\end{cases} Fn​(x)=⎩ ⎨ ⎧​0nf1​​nf1​+f2​​⋮nf1​+⋯+fm−1​​1​x<ax∈Δ1​x∈Δ2​x∈Δm​x≥b​
称为 ( x 1 , x 2 , ⋯ , x n ) (x_1,x_2,\cdots,x_n) (x1​,x2​,⋯,xn​)的经验分布函数 F n ( x ) F_n(x) Fn​(x)。
除了matplotlib包中的pyplot对象提供的绘制数据数组的直方图的函数hist(详见博文《样本数据直方图绘制》),numpy包也提供了一个histogram的函数,该函数的调用接口为:
histogram(x, bins) \text{histogram(x, bins)} histogram(x, bins)
参数x的意义是接受数据数组,bins也是确定分组个数。假定传递给bins的置为 m m m,该函数返回一个二元组(f, b),其中f为含有 m m m个整数的数组,每个元素表示对应小区间所含个体观测值个数。b也是一个数组其中含有 m + 1 m+1 m+1个元素 { b 0 , b 1 , ⋯ , b m } \{b_0, b_1, \cdots, b_m\} {b0​,b1​,⋯,bm​}, [ b k − 1 , b k ) [b_{k-1},b_{k}) [bk−1​,bk​)为第 k k k个小区间, k = 1 , 2 , ⋯ , m k=1, 2,\cdots,m k=1,2,⋯,m。下列代码就是利用numpy的这一函数,计算样本观测值的经验分布函数 F n ( x ) F_n(x) Fn​(x)。

import numpy as np                          #导入numpy
def Fn(x, sample, m):                       #定义函数Fnn=sample.size                           #样本容量nf, b=np.histogram(sample, bins=m)       #计算样本分组及频数f=f/n                                   #计算各组频率for k in range(m-1):                    #计算累积频率f[k+1]+=f[k]y=np.zeros(x.size)                      #函数值初始化为0for i in range(1, m):                   #计算每个分组区间内的函数值d=np.where((x>b[i-1])&(x<=b[i]))y[d]=f[i-1]d=np.where(x>b[m-1])                    #计算最后小区间及其以后的函数值y[d]=1return y                                #返回y

程序中第2~14行定义计算由参数sample传递的样本数据,分成m组的经验分布函数,其中参数x表示自变量,这是一个数组类对象。第3行计算样本容量n。第4行调用numpy的histogram函数,计算样本sanple分成m组的频数数据f和分组数据b。第5行计算各组频率(频数/样本容量)。第6~7行计算各分组的累积频率。第8行将函数值y初始化为0。第9~11行的for循环用存储在f中的累积频率数据计算x中所含前m个小区间的函数值。第12行计算x中包含的最后一个区间及其以右部分设置为d,第13行将d对应的函数值1。
例1 下面列出84个伊特拉斯坎(Etruscan)人男子的头颅的最大宽度(mm)。

141 148 132 138 154 142 150 146 155 158 150 140 147 148
144 150 149 145 149 158 143 141 144 144 126 140 144 142
141 140 145 135 147 146 141 136 140 146 142 137 148 154
137 139 143 140 131 143 141 149 148 135 148 152 143 144
141 143 147 146 150 132 142 142 143 153 149 146 149 138
142 149 142 137 134 144 146 147 140 142 140 137 152 145

计算其经验分布函数,并绘制函数图像。
解: 下列代码利用上列程序定义的函数Fn完成本例的计算。

import numpy as np                                          #导入numpy
from matplotlib import pyplot as plt                        #导入绘图对象plt
sample=np.array([141,148,132,138,154,142,150,146,155,158,   #设置样本数据数组150,140,147,148,144,150,149,145,149,158,143,141,144,144,126,140,144,142,141,140,145,135,147,146,141,136,140,146,142,137,148,154,137,139,143,140,131,143,141,149,148,135,148,152,143,144,141,143,147,146,150,132,142,142,143,153,149,146,149,138,142,149,142,137,134,144,146,147,140,142,140,137,152,145])
x=np.linspace(120, 160, 256)                                #设置绘图横轴
plt.plot(x,Fn(x, sample, 8))                                #绘制Fn(x)图形
plt.show()

程序的第3~11行设置样本观测值数据sample。的第12行设置绘图的横坐标区间 x = ( 120 , 160 ) x=(120,160) x=(120,160),第13行调用pyplot的plot函数,利用上列程序定义的函数Fn,绘制由数据数组sample算得的经验分布函数的图形,运行此程序展示下图中的折线部分。

由上图可见,沿 F n ( x ) F_n(x) Fn​(x)的边缘描绘一条光滑曲线可得总体 X X X的分布函数的近似图像。
写博不易,敬请支持:
如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!
返回《导引》

概率统计Python计算:样本数据的经验分布函数相关推荐

  1. 概率统计Python计算:随机变量的分布函数

    任何随机变量XXX都有其分布函数(或称为累积分布函数) F(x)=P(X≤x),x∈(−∞,+∞).F(x)=P(X\leq x), x\in (-\infty,+\infty).F(x)=P(X≤x ...

  2. 概率统计Python计算:条件概率和概率乘法公式

    1. 古典概型中条件概率的计算 条件概率 P ( B ∣ A ) P(B|A) P(B∣A)是将样本空间限制在 A A A上, A ∩ B A\cap B A∩B的概率.因此,我们可以利用博文< ...

  3. 概率统计Python计算:离散型随机变量分布(bernoulli geom)

    Python的scipy.stats包中提供了各种随机变量的分布.每一种分布,其累积分布函数(分布函数)记为cdf.离散型变量分布的概率质量函数(分布律),记为pmf.除此之外,每个分布都有一个服从该 ...

  4. 概率统计Python计算:单个正态总体均值双侧假设的Z检验

    用p值法计算假设H0H_0H0​的双侧检验,设aaa,bbb分别是检验统计量分布对应显著水平α\alphaα的左.右分位点,F(x)F(x)F(x)和S(x)S(x)S(x)分别为检验统计量的分布函数 ...

  5. 概率统计Python计算:全概率公式

    1. numpy数组的按元素计算 设完备事件组A1,A2,⋯,AnA_1,A_2,\cdots,A_nA1​,A2​,⋯,An​作为引发事件BBB的nnn个因素.诸因素的先验概率构成的序列为P(A1) ...

  6. 概率统计Python计算:贝叶斯公式

    根据完备事件组A1,A2,-,AnA_1, A_2,\dots , A_nA1​,A2​,-,An​的先验概率序列P(A1),P(A2),-,P(An)P(A_1), P(A_2), \dots, P ...

  7. 概率统计Python计算:F分布分位点计算

    设XXX,YYY相互独立,且分别服从χ2(m)\chi^2(m)χ2(m)和χ2(n)\chi^2(n)χ2(n),则XY\frac{X}{Y}YX​~F(m−1,n−1)F(m-1, n-1)F(m ...

  8. 概率统计Python计算:标准正态分布分位点计算

    标准正态分布对给定显著水平的分位点.设XXX~N(0,1)N(0,1)N(0,1),显著水平为α\alphaα.为计算右侧分位点zαz_{\alpha}zα​(见下图),使得 P(X≤zα)=1−αP ...

  9. 概率统计Python计算:用样本均值和方差计算总体参数的点估计

    设来自总体XXX的简单样本为(X1,X2,⋯,Xn)(X_1, X_2,\cdots,X_n)(X1​,X2​,⋯,Xn​).样本均值为X‾=1n∑i=1nXi\overline{X}=\frac{1 ...

最新文章

  1. 沫沫金:Java快速合并两个数组【绝技】
  2. C语言 读取字符串数组中的字符串并获取字符串的长度
  3. Leetcode51 n皇后 DFS+回溯(模板题)
  4. gorm增删查改json_gorm 关联查询请教
  5. Android SQLite Database的使用模板
  6. vhd 镜像 备份Linux,差分VHD 系统秒备份、秒还原教程 完胜GHOST
  7. centos 6.2 升级后无法启动图形界面
  8. undefined reference to `clock_gettime'
  9. bootstrap 2021-04-20
  10. 我爱Java系列---【EL和JSTL】
  11. DatabaseDesign数据库设计
  12. ndows 内存诊断工具,win10内存诊断工具 win10自带内存诊断工具的使用
  13. spss多元线性回归散点图_如何通过残差散点图检验SPSS线性回归是否存在异方差等问题?...
  14. php分页设计美化,国产PHP框架之ThinkPHP各模块开发系列十七,美化分页显示
  15. html div虚线背景,聊聊css绘制虚线
  16. [小物分享] “Cap-less”——烂笔头3088
  17. 英雄联盟祖安服务器要维护多久,英雄联盟祖安大区到底有多凶残?手速慢了必然赢不了对面!...
  18. 在Visual Basic6.0中,如何实现简单加减乘除的程序编写?
  19. 2019年6月20日工作总结---CSS篇
  20. C语言——分支语句和循环语句(分支语句)

热门文章

  1. VMware虚拟机配置虚拟网卡导致浏览器DNS解析慢
  2. 解决Chrome和Chrome内核edge浏览器在启用硬件加速后颜色异常的问题
  3. 2.2 Collections类 (Collections源码解析)
  4. matlab在axis,matlab中axis的用法
  5. ES中如何实现in和not in查询
  6. java js方法_java如何调用js方法
  7. expdp与impdp导出导入特定表
  8. 网络协议分析(第二版)期末复习资料一
  9. Java基础 IP地址
  10. Escape HTML