样本概率密度(pdf)估计的Matlab实现%用来画网络延时数据

我们在统计数据处理时,经常计算一个样本的概率密度估计,也就是说给出一组统计数据,要求你绘制出它的概率分布曲线

这个当然我们可以自己处理 但是相当麻烦

很幸运 matlab的统计工具箱中有直接的函数  就是:

ksdensity
核心平滑密度估计

[f,xi] = ksdensity(x)
计算样本向量x的概率密度估计,返回在xi点的概率密度f,此时我们使用plot(xi,f)就可以绘制出概率密度曲线。该函数,首先统计样本x在各个区间的概率(与hist有些相似),再自动选择xi,计算对应的xi点的概率密度

f = ksdensity(x,xi)
与上面的相似,只是这时xi我们帮Matlab选定了,ksdesity直接计算对应点的概率密度

当然ksdedity还有其他参数选项,这里不具体介绍,感兴趣的网友可以自己查看帮助,或者与我交流 [email protected]
  1. %by dynamic
  2. %see also http://www.matlabsky.com
  3. %contact me [email protected]
  4. %2009.2.21
  5. %
  6. %给一个随机样本
  7. x=[randn(30,1); 5+randn(30,1)];
  8. %计算出各点的概率密度
  9. [f,xi]=ksdensity(x);
  10. %绘制图形
  11. subplot(211)
  12. plot(x)
  13. title('样本数据(Sample Data)')
  14. subplot(212)
  15. plot(xi,f)
  16. title('概率密度分布(PDF)')
复制代码
样本概率密度(pdf)估计的Matlab实现%用来画网络延时数据_第1张图片
2009-2-21 10:51:08 上传
下载附件 (22.99 KB)



从图形中我们可以看出,样本中数据0出现的概率为0.1036,2出现的概率为0.093

 

 

 

%用来画网络延时数据
clc%clear windows
clear all%clear variable
close all %close plot
%给一个随机样本
data=load('delaydata.txt');
%x,y 要维数一样,y is colum vector,
data=data/1000;%us要除以1000,ms
[row,colum]=size(data);
x=[1:1:row];%per 2s plot point
%plot(x,y,'.');
%hold on
%%%%%%%%%%%
mean=mean(data)%求平均值
var=var(data)%求方差
%plot概率密度分布
%[MUHAT,SIGMAHAT] = NORMFIT(y);
%pdf = PDF('norm',y,MUHAT,SIGMAHAT);
%plot(y,pdf,'.');%is equal to plot(x,y,'.');X坐标,Y坐标
%%%%%%%%%%%%
%计算出各点的概率密度
%ymin=min(data);
%ymax=max(data);
%x=linspace(ymin,ymax,20);  %将最大最小区间分成20个等分点(19等分),然后分别计算各个区间的个数
%yy=hist(data,x);  %计算各个区间的个数
%yy=yy/length(data); %计算各个区间的个数
%bar(x,yy) %画出概率密度分布图
[f,xi]=ksdensity(data);
%绘制图形
subplot(211)
plot(data)
title('样本数据(Sample Data)')
subplot(212)
%plot(xi,f)
[f, xc] = ecdf(data); % 调用ecdf函数计算xc处的经验分布函数值f
ecdfhist(f, xc); % 绘制频率直方图

%bar(x,yy) %画出概率密度分布图
title('网络延时概率密度分布(PDF)')
xlabel('时间/ms');
ylabel('概率');


 

 

你可能感兴趣的:(样本概率密度(pdf)估计的Matlab实现%用来画网络延时数据)