8.5 统计作图
8.5.1 正整数频率表
使用tabulate函数可以得到正整数频率表。
例8-11:向量的正整数统计频率示例。
在命令行窗口中输入:
T = ceil(5 * rand(1, 10)) table = tabulate(T)
输出结果:
T = 1 2 3 5 5 1 5 5 3 5 table = 1 2 20 2 1 10 3 2 20 4 0 0 5 5 50
8.5.2 累积分布函数图形
使用cdfplot函数可以绘制累积分布函数的图形。该函数的调用格式如下:
● cdfplot(x)。
● h=cdfplot(x)。
● [h,stats]=cdfplot(x)。
其中x为向量;h为表示曲线的句柄;stats表示样本的一些特征。
例8-12:绘制一个极值分布向量的实际概率分布图形和理论概率分布图形。
在命令行窗口中输入如下程序:
y = evrnd(0, 3, 100, 1); cdfplot(y) hold on x = -20 : 0.1 : 10; f = evcdf(x, 0, 3); plot(x, f, 'm') legend('Empirical', 'Theoretical', 'Location', 'NW')
程序运行结果如图8-3所示。
图8-3 累积分布函数图形
8.5.3 最小二乘拟合直线
使用lsline函数可以实现离散数据的最小二乘拟合。该函数的调用格式如下:
● lsline。
● h=lsline。
其中,h为拟合曲线的句柄。
例8-13:使用lsline函数实现离散数据的最小二乘拟合示例。
在命令行窗口中输入以下命令:
x = 1 : 10; y1 = x + randn(1, 10); scatter(x, y1, 25, 'b', '*') hold on y2 = 2 * x + randn(1, 10); plot(x, y2, 'mo') y3 = 3 * x + randn(1, 10); plot(x, y3, 'rx:') y4 = 4 * x + randn(1, 10); plot(x, y4, 'g+--') lsline
程序运行结果如图8-4所示。从图中可以看到,对添加了随机数据的曲线数据,lsline函数很好地实现了拟合。
图8-4 最小二乘拟合直线
8.5.4 绘制正态分布概率图形
使用normplot函数可以绘制正态分布概率图形。该函数的调用格式如下:
● h=normplot(X)。
其中,若X为向量,则显示正态分布概率图形;若X为矩阵,则显示每一列的正态分布概率图形。
例8-14:绘制正态分布概率图形示例。
在命令行窗口中输入下列命令:
x = normrnd(10, 1, 25, 1); normplot(x) figure; normplot([x, 1.5 * x])
程序运行结果如图8-5所示。
(a)绘制向量对象
(b)绘制矩阵对象
图8-5 绘制正态分布概率图形示意图
8.5.5 样本数据的盒图
使用boxplot函数可以绘制样本数据的盒图。该函数的调用格式如下:
● boxplot(X)。
● boxplot(X,G)。
● boxplot(axes,X,...)。
● boxplot(...,'Name',value)。
其中,X为待绘制的变量;G为附加群变量;axes为坐标轴句柄;Name、value为可设置属性的属性名和属性值。
例8-15:样本数据的盒图绘制示例。
在命令行窗口中输入:
X = randn(100, 25); subplot(3, 1, 1) boxplot(X) subplot(3, 1, 2) boxplot(X, 'plotstyle', 'compact') subplot(3, 1, 3) boxplot(X, 'notch', 'on')
程序运行结果如图8-6所示。
图8-6 样本数据的盒图绘制示例
8.5.6 参考线绘制
在MATLAB中可以使用refline和refcurve函数分别绘制一条参考直线与一条参考曲线。refline函数的调用格式如下:
● refline(m,b)。
● refline(coeffs)。
● refline。
● hline=refline(...)。
其中,m为斜率、b为截距;coeffs为前面两个参数构成的向量;hline为参考线句柄。
例8-16:绘制参考直线示例。
在命令行窗口中输入以下命令:
x = 1 : 10; y = x + randn(1, 10); scatter(x, y, 25, 'b', '*') lsline mu = mean(y); hline = refline([0 mu]); set(hline, 'Color', 'r')
程序运行结果如图8-7所示。
图8-7 绘制参考直线示例
reflcurve函数的调用格式如下:
● refcurve(p)。
● refcurve。
● hcurve=refcurve(...)。
其中,p为多项式系数向量。
例8-17:绘制参考曲线示例。
在命令行窗口中输入以下命令:
p = [1 -2 -1 0]; t = 0 : 0.1 : 3; y = polyval(p, t) + 0.5 * randn(size(t)); plot(t, y, 'ro') h = refcurve(p); set(h, 'color', 'r') q = polyfit(t, y, 3); refcurve(q) legend('Data', 'Population Mean', 'Fitted Mean', 'Location', 'NW')
程序运行结果如图8-8所示。
图8-8 绘制参考曲线示例
8.5.7 样本概率图形
使用capaplot函数可以绘制样本的概率图形。该函数的调用格式如下:
● p=capaplot(data,specs)。
● [p,h]=capaplot(data,specs)。
其中,data为所给样本数据,specs用于指定范围,p表示在指定范围内的概率。该函数返回来自估计分布的随机变量落在指定范围内的概率。
例8-18:样本概率图形绘制示例。
在命令行窗口中输入以下命令:
data = normrnd(3, 0.005, 100, 1); p1 = capaplot(data, [2.99 3.01]) % 参考图8-9(a) grid on; axis tight figure p2 = capaplot(data, [2.995 3.015]) % 参考图8-9(b) grid on; axis tight
输出结果:
p1 = 0.9375 p2 = 0.8012
输出图形如图8-9所示。
(a)区间1概率
(b)区间2概率
图8-9 样本概率图形绘制示例
8.5.8 正态拟合直方图
使用histfit函数可以绘制含有正态拟合曲线的直方图。该函数的调用格式如下:
● histfit(data)。
● histfit(data,nbins)。
● histfit(data,nbins,dist)。
● h=histfit(...)。
其中,data为向量;nbins指定bar的个数;dist为分布类型。
例8-19:绘制含有正态拟合曲线的直方图示例。
在命令行窗口中输入以下命令:
r = normrnd(10, 1, 200, 1); histfit(r) h = get(gca, 'Children'); set(h(2), 'FaceColor', [.8 .8 1]) figure histfit(r, 20) h = get(gca, 'Children'); set(h(2), 'FaceColor', [.8 .8 1])
程序运行结果如图8-10所示。
(a)柱条数由程序设置
(b)柱条数设置为20
图8-10 正态拟合直方图绘制示例
本章小结
本章主要介绍了使用MATLAB实现概率统计的基本数据处理方法,包括产生随机变量、计算概率密度、计算累积概率分布、挖掘统计特征与统计作图等。
在实际的概率统计应用中,MATLAB还可以进行更多的数据处理,例如参数估计、假设检验等。因其他内容涉及较深的概率统计知识,故本书略去这些内容,如有需要,可以参考MATLAB帮助中的相关内容。