Matlab依据样本随机数求概率曲线
2017-05-20 10:37
253 查看
相关Matlab函数:hist, bar, cdfplot, ksdensity
(1) hist函数
n = hist(Y, x)
假设x是一个向量,返回x的长度个以x为中心的,Y的分布情况。
比如:假设x是一个5元素的向量,返回Y在以x为中心的,x长度个范围内数据直方分布。
演示样例2: 使用hist函数和导数定义预计pdf
随机数据给定的情况下,ksdensity 能够获得对 pdf 的较好的预计,它的算法是基于高斯核函数。预计较为准确。
求导公式为:
<img src="http://latex.codecogs.com/gif.latex?f(x)=\dfrac{dF(x)}{dx}=\lim_{\Delta x\rightarrow 0}\dfrac{F(x+\Delta x)-F(x)}{\Delta x}"/>
演示样例3:使用hist函数和求导函数gradient预计pdf
參考文献
『http://www.ilovematlab.cn/thread-272344-1-1.html』
『http://www.ilovematlab.cn/thread-272251-1-1.html』
(1) hist函数
n = hist(Y, x)
假设x是一个向量,返回x的长度个以x为中心的,Y的分布情况。
比如:假设x是一个5元素的向量,返回Y在以x为中心的,x长度个范围内数据直方分布。
[n,xout] = hist(...)
返回n和xout。包括有数目频率和间隔位置。能够使用bar(xout, n)来绘制直方图。
(2) bar函数
绘制条形图。bar(X,Y) 将Y矩阵的每一行化成一组条形图。条形图组数为行数;每组条形图数目为X矩阵的列数。
X指定条形图的中心位置,不能有反复的数。
(3) cdfplot函数
格式 cdfplot(X) %作样本X(向量)的累积分布函数图形
[h,stats] = cdfplot(X) %stats表示样本的一些特征
(4) ksdensity函数
假设你得到一堆数。你想知道它们的大致分布,能够使用kedensity函数解决问题。
命令例如以下:
[f,xi]=ksdensity(x)
plot(xi,f)
当中,f是预计的密度值,而xi是一个辅助參数。用来决定画出图形的取值区间,简言之,xi大致涵盖了x的取值区间。
看过图形之后,開始对分布有大概的直观印象,然后能够用比方normfit命令来获得相关的參数估值。
演示样例1: 使用hist预计cdf
hist 是统计数据在指定的区间内分布的个数。这个分布的个数体现的是随机变量的分布状况,假设你的数据量足够多的话,hist 的结果能够用于估算随机变量的 cdf。
dx = 0.001; Num = 100000; x = -4:dx:4; y = randn(Num,1); [n,xout] = hist(y,x); cdf = cumsum(n)/Num; plot(x,cdf,'b-','LineWidth',6); hold on plot(x,normcdf(x,0,1),'r-','LineWidth',2) legend('Empirical CDF via hist', 'Analytical CDF via normpdf',4); axis tight
演示样例2: 使用hist函数和导数定义预计pdf
随机数据给定的情况下,ksdensity 能够获得对 pdf 的较好的预计,它的算法是基于高斯核函数。预计较为准确。
hist 仅仅能粗略的预计 pdf (虽然 hist 预计cdf比較精确)。这是由于 hist 预计pdf的办法是先预计 cdf。cdf再求导得到 pdf,数值求导的过程easy引入较大的误差。比方。以下的办法是利用导数的定义来求导。
求导公式为:
<img src="http://latex.codecogs.com/gif.latex?f(x)=\dfrac{dF(x)}{dx}=\lim_{\Delta x\rightarrow 0}\dfrac{F(x+\Delta x)-F(x)}{\Delta x}"/>
dx = 0.001; Num = 100000; x = -4:dx:4; y = randn(Num,1); [n,xout] = hist(y,x); pdf = n/Num/dx; % 导数定义 bar(xout,pdf);hold on [f,xi] = ksdensity(y); plot(xi,f,'ro','MarkerSize',8,'LineWidth',2); plot(x, normpdf(x,0,1),'r-','LineWidth',2);hold off legend('Empirical PDF via hist','Empirical PDF via ksdensity', 'Analytical PDF via normpdf'); axis tight
演示样例3:使用hist函数和求导函数gradient预计pdf
dx = 0.001; Num = 100000; x = -4:dx:4; y = randn(Num,1); [f,xi] = ksdensity(y); [n,xout] = hist(y,x); cdf = cumsum(n)/Num; pdf = gradient(cdf,dx); bar(xout(1:50:end),pdf(1:50:end));hold on % 每隔50点抽样,为了更清楚显示pdf plot(xi,f,'ro','MarkerSize',8,'LineWidth',2); plot(x, normpdf(x,0,1),'r-','LineWidth',2);hold off legend('Empirical PDF via hist + gradient', 'Empirical PDF via ksdensity','Analytical PDF via normpdf'); axis tight
參考文献
『http://www.ilovematlab.cn/thread-272344-1-1.html』
『http://www.ilovematlab.cn/thread-272251-1-1.html』
相关文章推荐
- Matlab根据样本随机数求概率曲线
- 【matlab】以一定的概率生成随机数
- 如何用matlab以一定概率生成随机数
- 样本概率密度(pdf)估计的Matlab实现%用来画网络延时数据
- 给定一个函数rand()能产生0到n-1之间的等概率随机数,问如何产生0到m-1之间等概率的随机数?
- 等概率随机数问题
- 实用小程序--matlab+画多条曲线+x/y轴label为latex公式
- 使用matlab对训练样本图像降维,并对测试图像使用变换矩阵降维并重构
- MATLAB多项式函数拟合和曲线拟合
- 1-3、常用概率分布与随机数生成
- PHP笔试——指定概率随机数
- 最小二乘曲线拟合matlab实现
- 概率、随机数、随机数生成函数
- 关于matlab生成随机数
- matlab如何控制坐标轴显示内容,而不改变曲线形状
- Java生成有概率随机数(可自定义随机数长度及概率)
- 高斯混合概率假设密度滤波器 matlab代码实现
- matlab画圆并生成随机数
- matlab画概率密度图
- Matlab 曲线绘制之线型和颜色 示例