计算数据的经验分布函数与MATLAB作图

写在前面

因为某些原因,需要处理某些数据,比如说某项测量数据与理论值的误差,我们就需要检验误差是否符合正态分布。最直观的方法就是直接做出经验分布函数的图来进行观察。所以这里简单的写一下如何做出经验分布图。

第一步,做经验分布图

对数据按升序排列

首先我们将所有一共n个数据按照升序排列。之所以升序,是因为这样方便我们后续计算。

将区间[a, b]分成小段

a是所有数据的最小值,b是所有数据的最大值,我们将所有数据分成小区间,比如说将[a,b]分为

  1. [a,a+(b-a)/100]
  2. [a, a+2*(b-a)/100]
  3. [a, b]

注意,区间左值永远是a,然后计算每个区间内落入数据点的个数,这样就得到了一个类似于频数分布直方图的东西。我们记第i个区间内数据点的个数为f_i,令所有f_i除以n得到数据落入第i个区间的频率p_n,也就是

p_i = f_i/n

当n无穷大的时候,就可以认为p_i是数据在这个区间内的概率,并且有p_n=1,也就是具有归一性。

那么我们就直接做出区间右值与p_i的函数图象,就是这个数据的经验分布函数了。

写程序

假设我们现在的数据都在data里,是1xn大小的向量。

[~, n] = size(data);
%最大值与最小值
d_max = max(data);
d_min = min(data);
%划区间,step是小的区间长度
x = d_min:step:d_max;
len = length(x);
%提前给区间的频数f预留空间
func = zeros(1, len)
for i = 1:len%sum内的data<=(d_min+i*step)是逻辑判断语句%整个语句意思是找出data内小于等于d_min+i*step的总个数func(i) = sum(data<=(d_min+i*step))
end
plot(x, func/n, 'b-', 'LineWidth', 1)
title('经验分布函数')

第二步,做正态分布的图

要知道我们的经验函数虽然假设服从正态分布,所以我们要知道服从的是均值为多少,标准差为多少的正态分布,在这里我们就需要计算我们原始数据的均值mu与标准差sigma。

计算出mu和sigma后做出对应的正态分布图即可。

下面是程序

%均值
mu = sum(data)/n;
%标准差
sigma = sqrt(1/(n-1)*sum((data-mu).^2));
%正太分布数据点
func_norm = normcdf(x, mu, sigma);
plot(x, func_norm, 'k-', 'LineWidth', 1)

第三步,做置信带

实际上我也不是很清楚置信带具体的含义是什么,因为对于标准正态分布的95%置信带,意思就是样本点落在置信带内的概率为95%,但是如果是经验分布函数的话,画上一个置信带的意义就不是很明确了。

不过即便如此,这里还是画上比较好。

%f实际上就是经验分布函数,与上文中计算出来的func一模一样,x是横轴
%flo是置信下区间,fup是置信上区间
[f, x, flow, fup] = ecdf(data);
stairs(x, flow, 'r:', 'LineWidth', 1)
stairs(x, fup, 'r:', 'LineWidth', 1)%写一下图例等
legend('经验分布函数', '正态分布函数', '置信下限', '置信上限')
xlabel('x')
ylabel('F(x)')

最后得出图像

如下图所示

可以看出来我们的经验分布函数和正态分布吻合的比较好。

感想

实际上我感觉置信带应该画正态分布的,而不是如果我们的经验分布函数所有点都在正态分布的置信带里面,则说明我们的数据服从正态分布,置信程度为95%。这样子还比较能够说得过去。

计算数据的经验分布函数与MATLAB作图相关推荐

  1. 样本均值,顺序统计量,样本中位数, 样本方差,样本标准差,直方图,核密度估计曲线,经验分布函数图,箱形图;matlab实现

    1.数据一:1988年至2018年中国粮食产量(万吨),具体数据见表格1,数据来源: http://data.stats.gov.cn/easyquery.htm?cn=C01&zb=A0D0 ...

  2. 数理统计之参数估计与假设检验(二)——经验分布函数与QQ图

    参数估计与假设检验 经验分布函数 定义 具体应用 Q-Q图 例题 参考文献 经验分布函数 定义 设 X 1 , X 2 , . . . , X n X_1,X_2,...,X_n X1​,X2​,.. ...

  3. 克劳特法matlab,经验模式分解matlab

    EMD分解的matlab程序 %此版本为 ALAN 版本的整合注释版 function imf = emd(x...(x1) %当标准偏差系数 sd 大于 0.1 或 x1 不是固有模态函数时,分量终 ...

  4. matlab在曲线给命名,matlab 利用xlsread画图,怎么将一组excel数据导入,通过matlab作图...

    Matlab 循环 for 语句 xlsread EXCEL表格数据导入 画图 Matlab的 xlsread() 函数可以将Excel数据到matlab工作空间,然后就可以根据读入据作图.下面给出操 ...

  5. matlab 三维饼图,重新学习MATLAB——作图技法及3D可视化

    了解点儿MATLAB,知道它非常有用,但一直不太会用,如何快速掌握并运用它呢? 本专栏力争用最简洁的语言和逻辑,让您在最短时间内,学到教材课程中罕见的MATLAB运用技法,从新手迈向成手. 超强的MA ...

  6. MATLAB作图方法与技巧(二)

    作为MATLAB作图方法与技巧(一)的补充 1.绘制二维散点图 ① scatter函数 scatter(x,y,s,c)函数绘制向量x和y的散点图,其中s代表点的大小,c代表点的形状,s和c缺省时为默 ...

  7. Matlab作图后的各种调整方法——线条、坐标、标题、图例

    Matlab作图后的各种调整方法--线条.坐标.标题.图例 文章目录 Matlab作图后的各种调整方法--线条.坐标.标题.图例 一 , 写在前面 1.整个图窗 Figure(gcf) 2.我们使用命 ...

  8. matlab留白,matlab作图导出为PDF去除留白插入latex

    latex写论文时,一般为了图片不失真,引用的图片需要转为pdf格式.matlab作图,直接导出为pdf经常遇到有灰色底色,有大片留白等不符合要求的情况,此博介绍一种简单的方法,轻松导出图片. 此外, ...

  9. 概率统计Python计算:样本数据的经验分布函数

    设 ( x 1 , x 2 , ⋯ , x n ) (x_1,x_2,\cdots,x_n) (x1​,x2​,⋯,xn​)是总体 X X X的一个样本观测值.与绘制直方图相仿,记 a = m i n ...

最新文章

  1. MySQL编程(0) - Mysql中文乱码问题解决方案
  2. HTML地址栏传数据和json区别,前端利用formData格式进行数据上传,前端formData 传值 和 json传值的区别?...
  3. 背水一战 Windows 10 (41) - 控件(导航类): Frame
  4. [转载] 大型网站的 HTTPS 实践(一)—— HTTPS 协议和原理
  5. ASP.NET 常用的33种代码(转,收藏一下,以备后查)
  6. 加密芯片——摘要算法特点与应用注意事项
  7. 一口气发布11项新升级,免费送出1亿元算力:国产深度学习平台PaddlePaddle大更新...
  8. ToString截取字符串的用法
  9. 2018年度报告单_2018年度最佳在线IT课程
  10. autohotkey -- AHK 替换 4 为 $ 方便脚本编写
  11. Emacs快捷键的总结
  12. svn 回滚文件修改
  13. QT 菜单栏、工具栏和状态栏
  14. mac linux网卡驱动下载官网下载,linux | 网卡驱动
  15. 一文搞懂 Flink 网络流控与反压机制
  16. appollo消息服务器,Springboot 集成 MQTT —— web 服务端实现(apollo 客户端)-Go语言中文社区...
  17. 【小5聊】小程序之体验版本wx.chooseImage选择图片上传可以,而线上正式版本选择图片一闪而过的原因
  18. dz每个php模板页文件,dz模板引擎分析
  19. 英特尔中国研究院深度学习领域最新成果——“动态外科手术”算法
  20. 【20210728】【信号处理】Alpha-Beta滤波——一种状态估计的方法

热门文章

  1. 解决Chrome和Chrome内核edge浏览器在启用硬件加速后颜色异常的问题
  2. jupyter安装使用
  3. 设备驱动中的并发控制
  4. matlab函数 bsxfun浅谈
  5. 技术专题:为什么宽带可以双拨号?双拨以后一定有两倍的流量吗?
  6. 字符串逆序输出c语言,5、输入一个字符串,对该字符串进行逆序,输出逆序后的字符串。...
  7. c语言浮点数乘法算法,单精度浮点数乘法的实现
  8. ssh登录windows
  9. 2021极客大挑战WP集合
  10. C/C++语言二维数组的传参方法总结