CDF(cumulative distribution function)叫做累积分布函数
描述一个实数随机变量X的概率分布,是概率密度函数的积分。
我觉得它的最主要作用就是观测某些数值也就是随机变量的取值在那个附近出现的概率比较大,它是一个增函数. 可以有效的处理一些异常值.
随机变量小于或者等于某个数值的概率P(X<=x),即:F(x) = P(X<=x)
累积分布函数(cumulative distribution function):对连续函数,所有小于等于a的值,其出现概率的和。F(a)=P(x<=a)
根据这张累积分布函数图,可以很方便地回答之前的两个问题:
1)CDF中横轴上的2对应的Y值约为0.98,因此所有大于2的数据点所占比例约为2%。
2)CDF中横轴上的1.3对应的Y值约为0.75,因此所有介于1.3和2之间的数据点所占比例约为23% (0.98-0.75)。
与直方图、核密度估计相比,累积分布函数存在以下几个特点:
累积分布函数是X轴单调递增函数。
累积分布函数更加平滑,图像中噪音更小。
累积分布函数没有引入带宽等外部概念,因此不会丢失任何数据信息。对于给定的数据集,累积分布函数是唯一的。
累积分布函数一般都经过归一化处理,单调递增且趋近于1。
下面我们来讲一下怎么用matlab来画我们的累计分布图.
比如我们有一组CSV的数据,我们把这个存储这个数据的文件取名叫做test.csv
116,218,119
123,219,106
113,219,119
117,232,105
118,208,117
116,222,106
117,221,119
129,232,108
124,234,118
124,234,107
132,234,117
125,226,106
135,225,112
126,231,107
134,250,113
141,223,107
118,260,113
117,249,107
112,261,118
118,234,107
118,257,119
119,256,105
117,281,118
129,266,107
131,260,119
143,239,105
128,263,120
135,267,107
127,259,118
119,285,103
159,269,119
138,264,106
142,259,122
128,285,111
158,269,133
129,264,106
130,259,124
137,228,105
139,262,126
130,249,111
114,275,117
126,227,107
119,230,118
118,224,107
130,226,118
126,227,106
129,264,114
125,254,106
132,252,114
130,229,106
135,229,117
121,251,108
129,243,119
125,226,105
113,275,114
120,255,104
111,274,119
118,255,107
115,274,120
129,260,107
126,249,119
135,235,109
136,281,125
132,266,106
134,263,122
123,255,108
129,258,116
127,264,105
113,257,122
115,264,102
129,257,133
126,275,104
126,272,123
122,260,108
128,256,120
117,265,105
117,254,122
117,263,109
123,238,125
130,285,106
130,282,121
152,251,106
131,233,111
现在我们就是要用这个数据画一组CDF图像.
%read data into matirx
%http function
fid = fopen('./test.csv','rt'); %首先打开文件把数据读取出来
C = textscan(fid, '%f %f %f', 'Delimiter',',');
fcolse(fid); %之后把数据扫描进C这个变量中,我们是按照浮点类型的形式来处理我们的数据的
%由于我们的数据有三列,所有我们这里取了三个%f出来,根据不同的数据我们取不同的格式说明符号.可以用类似C语言.每个数据之间是按照","来做分割.
%Delimiter表示的是取某些分割符来切分数据,再后面我们写逗号,表示按照逗号来分割数据
data1 = deal(C{1});
% 每一列数据表示的一次随机实验中取到的随机变量,所以我们分别处理
%这三组数据,以此类推.
data2 = deal(C{2});
data3 = deal(C{3});
cdfplot(data1);% 在matlab中画图我们使用cdfplot,这个命令
set(h1,'color','b','LineWith',3);
xlabel('NUmbers of Http Pings','FontSize',30);
ylabel('CDF','FontSize',30);
title('')
每天做点顶级研究人员该做的事情,每天做点顶级程序员会做的事情.每天都要保持进步!
你必须非常努力,才可以看起来毫不费力.