CDF(cumulative distribution function)叫做累积分布函数

描述一个实数随机变量X的概率分布,是概率密度函数的积分。

我觉得它的最主要作用就是观测某些数值也就是随机变量的取值在那个附近出现的概率比较大,它是一个增函数. 可以有效的处理一些异常值.

随机变量小于或者等于某个数值的概率P(X<=x),即:F(x) = P(X<=x)

累积分布函数(cumulative distribution function):对连续函数,所有小于等于a的值,其出现概率的和。F(a)=P(x<=a)

c31522d99cac52aca09e389a83d89c0f.png

根据这张累积分布函数图,可以很方便地回答之前的两个问题:

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('')

写在后面的话

每天做点顶级研究人员该做的事情,每天做点顶级程序员会做的事情.每天都要保持进步! 你必须非常努力,才可以看起来毫不费力.

更多推荐