当前位置:   article > 正文

matlab计算概率密度函数pdf,使用ksdensity histcounts区别_matlab概率密度hist

matlab概率密度hist

刚好最近做了部分概率密度分布的工作,概率的知识早就还给了高数老师,只好一边复习(约等于学习)概率部分知识,一边扒matlab document。

万物从买买买开始,先推个书。这本数学指南简直太好用了,强烈推荐。手头也有其他版本的,天书一样看不懂。

我假设看到本文的人都跟我一样把知识换给老师,所以我们从头开始吧。

对于一个随机量  X = x1, x2,... xn

经验均值      u = mean(X) = (x1+x2+...xn)/n

经验标准差    (Δx)**2 = std(X) = [(x1-u)**2+(x2-u)**2+...+(xn-u)**2]/(n-1)

以下不好打字,就用百度百科的截图替代了

正态分布 (normal distribution) 

 Matlab中,用于计算概率和概率密度的相关函数有histcounts(histogram直方图),ksdensity

其中,histcounts与histogram是一类,可以计数,计算概率密度,概率密度函数,累积概率密度函数等,通过‘normalization'来选择。hist系列需要给出直方图的根数(nbin),或者直方图的宽度设置(edge,即每根的左右边界),得到的值与nbin一致,比edge少一个。

ksdensity只用于计算概率密度函数,默认nbin=100,也可给定所需的具体点位pts

为了对比,我把ksdensity给定的点位设置为hist每根的正中心。

hist 还可以给出类似discretize的功能,把一列数分类,并给出bin,其中bin的尺寸与x一致,对应位置是x值在哪一类,可以用ismember把属于同一类的数据挑出来。还可以把bin归类,用summary展示,

  1. clear;clc;close all
  2. x = randn(100000,1);
  3. width = 0.2;
  4. xi = -4:width:4;
  5. edge = [xi-0.5*width,xi(end)+0.5*width];% -4-0.5*width:width:4+0.5*width;
  6. [dens,edge,bin] = histcounts(x,edge,'normalization','pdf');
  7. [yi,xi]=ksdensity(x,xi);
  8. figure
  9. hold on
  10. histogram(x,edge,'normalization','pdf')
  11. plot(xi,dens,'o-')
  12. plot(xi,yi,'*-')
  13. legend('histogram','histcounts','ksdensity')
  14. id = ismember(bin,1);
  15. x(id);
  16. id = ismember(bin,20);
  17. a = categorical(bin);
  18. summary(a)

     0          4 
     1          3 
     2          7 
     3         13 
     4         16 
     5         50 
     6         92 
     7        152 
     8        262 
     9        488 
     10       719 
     11      1145 
     12      1562 
     13      2191 
     14      3038 
     15      3831 
     16      5018 
     17      5920 
     18      6372 
     19      7280 
     20      7712 
     21      7932 
     22      7975 
     23      7457 
     24      6532 
     25      5747 
     26      4847 
     27      3884 
     28      3022 
     29      2211 
     30      1634 
     31      1104 
     32       729 
     33       444 
     34       268 
     35       162 
     36        88 
     37        50 
     38        19 
     39        14 
     40         5 
     41         1 

 

 histcounts 根据设置的区间,根据概念来计算pdf,受数据影响,而ksdensity是给出类似理论概率函数,不太受区间设置影响,并给出对应点的pdf。hist获得的pdf图可能会根据直方图每根条带的宽度设置不同而出现较大的差异,但ksdensity不会,他的pdf是基本一致的。

我用另外一组实际数据,分别用0.05 0.1 0.2的bar宽度,就可以看到非常明显的区别。

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/67150
推荐阅读
相关标签
  

闽ICP备14008679号