![MATLAB GUI设计入门与实战](https://wfqqreader-1252317822.image.myqcloud.com/cover/397/27110397/b_27110397.jpg)
1.9 概率统计
概率统计属于数学上的一个大的分支,用于统计自然界随机现象发生的规律,概率统计应用较广泛,例如股票的预测、列车客流及其他信息统计等。本节着重讲述概率密度函数、随机变量特征分析、随机数概率密度函数绘图以及蒙特卡诺方法等。
1.9.1 概率密度函数
MATLAB统计工具箱是一套完备的统计分析软件,表1-13给出了MATLAB概率分布工具箱函数,读者可以根据表1-13所示的分布函数,借助MATLAB函数帮助功能进行相应问题的求解。
表1-13 MATLAB概率分布工具箱函数
![](https://epubservercos.yuewen.com/3D1BDF/15477637404521206/epubprivate/OEBPS/Images/figure_0072_0001.jpg?sign=1739678272-jo7Tfo2Xt6IqJVsYrSErq0pMPN9qiV4X-0-85e5b9aa1df8ac24ccaedc6ab6b91587)
通过相应的MATLAB中的求概率密度函数,也可以求表1-13中所示的23种输入分布的概率密度函数,此函数的调用格式如下:
Y Y pdf('name', X, A1, A2, A3)
其中,name为表1-13中分布的字母缩写,X为样本矩阵,A1、A2和A3是分布参数矩阵,Y为概率密度矩阵。对于某些分布,有些参数可以不必输入。X、A1、A2和A3必须是具有同样大小的矩阵,当其中之一输入为标量时,程序会将其调整为与其他输入同维的矩阵。
具体如表1-14所示。
表1-14 概率密度函数使用格式
![](https://epubservercos.yuewen.com/3D1BDF/15477637404521206/epubprivate/OEBPS/Images/figure_0073_0001.jpg?sign=1739678272-7j1z6kiuWo5FdK62w6XOwQPBhmA3f3a2-0-306725a88d3194976d2ebe8e1697a30e)
1.9.2 随机变量特征分析
1.期望
设离散性随机变量的分布律为:
![](https://epubservercos.yuewen.com/3D1BDF/15477637404521206/epubprivate/OEBPS/Images/00144.jpg?sign=1739678272-2Ho6nRg5QWE0KhtkZohzPI9RElnWocNW-0-65911f0682bf43fa668084177c728dda)
则相应X的期望如下:
![](https://epubservercos.yuewen.com/3D1BDF/15477637404521206/epubprivate/OEBPS/Images/00145.jpg?sign=1739678272-Wlgipmw3e2uaEBy8T6qbUjgWJ32JWxuk-0-f3ce25d5cab8b811d79b390e79a11e20)
而对于来自总体X的一个样本,设其样本值为,则定义样本均值为:
![](https://epubservercos.yuewen.com/3D1BDF/15477637404521206/epubprivate/OEBPS/Images/00147.jpg?sign=1739678272-rlr3wF1pkjAnCTcjC02ONdNLt4ntfMDE-0-a7435c52ff4bb843c269062c5896027f)
则依概率收敛于X的均值。
在MATLAB统计工具箱中,提供了求解随机变量均值的函数mean(),具体如下:
>> mean(rand(5,1)) ans = 0.5440
2.方差、标准差、矩
方差是用来刻画随机变量X取值分散程度的一个量,其一般用下式表达:
![](https://epubservercos.yuewen.com/3D1BDF/15477637404521206/epubprivate/OEBPS/Images/00149.jpg?sign=1739678272-sCLkHkcsl0Itpy1N6h33wPy9BKTShgJI-0-70fd7ea662920e0efeba152caf2f72d7)
在应用上还引入与随机变量X具有相同量纲的量,记为σ(X),称为标准差或均方差。
X的k阶中心矩应为:
![](https://epubservercos.yuewen.com/3D1BDF/15477637404521206/epubprivate/OEBPS/Images/00151.jpg?sign=1739678272-NcuqxTD4L6K68av2ZPw8XgWlH1nAjAt8-0-9ed32cc786c0f730bd28078367ebf7a6)
可知方差即为二阶中心矩。
对于一个样本来说,样本方差通常分为无偏估计和有偏估计,具体如下。
无偏估计式:
![](https://epubservercos.yuewen.com/3D1BDF/15477637404521206/epubprivate/OEBPS/Images/00152.jpg?sign=1739678272-W5f5cE5CCWuVrW82Jupj3EKkRLTlQJFD-0-d5cad40afd6dff4d02f3189200e7d028)
有偏估计式:
![](https://epubservercos.yuewen.com/3D1BDF/15477637404521206/epubprivate/OEBPS/Images/00153.jpg?sign=1739678272-4YsZHirbOgIg6O9tFQGgHTvoitE7Wemn-0-d087a948781bad93ea47340723cc822d)
样本标准差也对应有如下两种形式:
![](https://epubservercos.yuewen.com/3D1BDF/15477637404521206/epubprivate/OEBPS/Images/00154.jpg?sign=1739678272-E4RN0ZZ4nQALtpttENoFEokkZqHvgYgG-0-6c824c1d18144289c3fb9687afd73049)
或
![](https://epubservercos.yuewen.com/3D1BDF/15477637404521206/epubprivate/OEBPS/Images/00155.jpg?sign=1739678272-mzEcCHe5WYSvY9z3c1yE28VAOnP0vgub-0-0836b7427f1e9ac5860167d62d454359)
样本的k阶中心矩为:
![](https://epubservercos.yuewen.com/3D1BDF/15477637404521206/epubprivate/OEBPS/Images/00156.jpg?sign=1739678272-Ycl7bvEktLrT1Koc5FE9wLZ993GkfOj3-0-15fa72361e30e891db787baca6ae1069)
MATLAB工具箱中提供了可供用户求解的方差函数var()、标准差函数std()和矩函数moment(),具体如下:
>> var(rand(5,1)) ans = 0.0799 >> std(rand(5,1)) ans = 0.3791 >> moment(rand(5,1),1) ans = 0
3.协方差、相关系数
随机变量X、Y的协方差和相关系数的定义式如下:
![](https://epubservercos.yuewen.com/3D1BDF/15477637404521206/epubprivate/OEBPS/Images/00157.jpg?sign=1739678272-7L1Rede2fblKPldMykTYVc3Ah0VASVPR-0-cffa2057231d55e2b3be50088f777505)
对于n维随机变量,通常用协方差矩阵描述它的二阶中心矩。如对于二维随机变量(X,Y),定义协方差矩阵形式为:
![](https://epubservercos.yuewen.com/3D1BDF/15477637404521206/epubprivate/OEBPS/Images/00158.jpg?sign=1739678272-Mr7jxuPYpO3f5YhJDxrIdgJyntd6GTIy-0-923d3f852812730ce96449423086c04c)
其中:
![](https://epubservercos.yuewen.com/3D1BDF/15477637404521206/epubprivate/OEBPS/Images/00159.jpg?sign=1739678272-KuldI7UVV0p113YIaZIZLZaaf1q0N9H4-0-4aa65c318b8ccb706f23465641fba59f)
MATLAB提供了求解协方差和相关系数的函数:cov()函数和corrcoef()函数,具体如下:
>> cov(rand(5,2)) ans = 0.1607 -0.0266 -0.0266 0.0536 >> corrcoef(rand(5,2)) ans = 1.0000 0.1471 0.1471 1.0000
1.9.3 随机数概率密度函数绘图
MATLAB统计学工具箱,自带很多产生服从某个函数分布的随机数的函数,用户可以很方便地调用和使用,具体的介绍如下。
(1)均匀分布
生成(0,1)区间上均匀分布的随机变量,MATLAB编程如下:
clc,clear,close all % 清理命令区、清理工作区、关闭显示图形 warning off % 消除警告 feature jit off % 加速代码运行 x=rand(100000,1); % 100000行1列 hist(x,50);
运行程序可得到图形如图1-44所示。
![](https://epubservercos.yuewen.com/3D1BDF/15477637404521206/epubprivate/OEBPS/Images/00160.jpg?sign=1739678272-sSKnqumMs36vth6ckvY6zkjvQE26cshR-0-43e06723c6fd2bf69859fe8b7a870629)
图1-44 均匀分布
(2)正态分布
生成服从标准正态分布(均值为0,方差为1)的随机数,MATLAB编程如下:
x=randn(10000,1); % 100000行1列 hist(x,50);
运行程序可得到图形如图1-45所示。
![](https://epubservercos.yuewen.com/3D1BDF/15477637404521206/epubprivate/OEBPS/Images/00161.jpg?sign=1739678272-h6bm7FXK1eU4ACf4TVkpUPloLbKn0Nos-0-6b33650bddfb8ecd1a886f6a778241e1)
图1-45 正态分布
(3)卡方(Chi-square)分布
卡方分布只有一个参数:自由度v,MATLAB编程如下:
x=chi2rnd(5,100000,1); %卡方分布的自由度是5,100000行1列 hist(x,50);
运行程序可得到图形如图1-46所示。
![](https://epubservercos.yuewen.com/3D1BDF/15477637404521206/epubprivate/OEBPS/Images/00162.jpg?sign=1739678272-SiafxsRED8LS6p14IItzHfRGOYYj3yXZ-0-8d19205b0c357e8c30a266d71470f498)
图1-46 卡方分布
(4)F分布
F分布有两个参数:v1和v2,MATLAB编程如下:
x=frnd(3,5,1000,1); % (v1=3,v2=5)的F分布 hist(x,50);
运行程序可得图形如图1-47所示。
![](https://epubservercos.yuewen.com/3D1BDF/15477637404521206/epubprivate/OEBPS/Images/00163.jpg?sign=1739678272-45jTn6VgOnkwmR0frNIGO4zkheIwgJCt-0-3a7d2cfac79aa35ac6709eabff1f01f2)
图1-47 F分布
(5)t分布
t分布有1个参数:自由度v。MATLAB函数调用如下:
x=trnd(7,100000,1); % 参数为(v=7)的t分布 hist(x,50);
运行程序可得到图形如图1-48所示。
![](https://epubservercos.yuewen.com/3D1BDF/15477637404521206/epubprivate/OEBPS/Images/00164.jpg?sign=1739678272-bNmWUXZoIxddvWre1ThtZaEPoGXBYe82-0-023d97ce6014c83f114c35ba611ef89a)
图1-48 t分布
(6)Beta分布
Beta分布有两个参数,分别是A和B,MATLAB函数调用如下:
x=betarnd(2,5,100000,1); % 产生A=2,B=5的Beta分布 hist(x,50);
运行程序可得到图形如图1-49所示。
![](https://epubservercos.yuewen.com/3D1BDF/15477637404521206/epubprivate/OEBPS/Images/00165.jpg?sign=1739678272-mqmGg7mZTOQkCpvEkiPHi01UJeLXbMag-0-26ba235c71472c098098fd559df174c3)
图1-49 beta分布
(7)指数分布
指数分布只有一个参数:mu,生成指数分布随机数的MATLAB函数调用如下:
x=exprnd(3,100000,1); % 产生mu=3的指数分布 hist(x,50);
运行程序可得到图形如图1-50所示。
![](https://epubservercos.yuewen.com/3D1BDF/15477637404521206/epubprivate/OEBPS/Images/00166.jpg?sign=1739678272-zjLY2RhqB9jbJ5dACPYCo9LOdP50x3vE-0-72cafda73e5a2ee133491a2d256a2458)
图1-50 指数分布
(8)Gamma分布
Gamma分布有两个参数:A和B,生成Gamma分布随机数的MATLAB函数调用如下:
x=gamrnd(2,5,100000,1); % 产生A=2,B=5的Gamma分布 hist(x,50);
运行程序可得到图形如图1-51所示。
![](https://epubservercos.yuewen.com/3D1BDF/15477637404521206/epubprivate/OEBPS/Images/00167.jpg?sign=1739678272-wPTY8BB1hha5gOnDkAFjUBaJ3ippFaKB-0-df7518713633dd15bd854b8c21e44570)
图1-51 Gamma分布
(9)对数正态分布
对数正态分布有两个参数:mu和sigma,生成对数正态分布随机数的MATLAB函数调用如下:
x=lognrnd(-1,0.5,1000,1); % 产生mu=-1,sigma=0.5的对数正态分布 hist(x,50);
运行程序可得到图形如图1-52所示。
![](https://epubservercos.yuewen.com/3D1BDF/15477637404521206/epubprivate/OEBPS/Images/00168.jpg?sign=1739678272-1aYJf620yStOk5dnRBeihmaipxL7nxzx-0-af6be20483524197676f67b6cc101c13)
图1-52 对数正态分布
(10)瑞利(Rayleigh)分布
瑞利(Rayleigh)分布有1个参数:B。生成瑞利分布随机数的MATLAB函数调用如下:
x=lognrnd(-1,0.5,1000,1); % 产生B=2的瑞利(Rayleigh)分布 hist(x,50); % 直方图
运行程序可得到图形如图1-53所示。
![](https://epubservercos.yuewen.com/3D1BDF/15477637404521206/epubprivate/OEBPS/Images/00169.jpg?sign=1739678272-vHfSHsJavVok0ieb3bfJ4bQ9pWIEiVhw-0-eca518978603a0f43ed370334b9c7e99)
图1-53 瑞利分布
(11)威布尔(Weibull)分布
威布尔(Weibull)分布有两个参数:scale参数A和shape参数B。生成Weibull分布随机数的MATLAB函数调用如下:
x=lognrnd(-1,0.5,1000,1); % 产生A=3,B=2的威布尔分布 hist(x,50); % 直方图
运行程序可得到图形如图1-54所示。
![](https://epubservercos.yuewen.com/3D1BDF/15477637404521206/epubprivate/OEBPS/Images/00170.jpg?sign=1739678272-y5n06zdrajPj4KYoxgJ0AcdaKZw3o6Px-0-193250eb59985afe34b4a8b193be6bd1)
图1-54 威布尔分布
(12)二项分布
二项分布有两个参数:n和p。MATLAB编程如下:
x=binornd(10,0.45,100000,1); % n=10,p=0.45 hist(x,11); % 直方图
运行程序可得到图形如图1-55所示。
![](https://epubservercos.yuewen.com/3D1BDF/15477637404521206/epubprivate/OEBPS/Images/00171.jpg?sign=1739678272-ajM0ChluNs59vnPg4sm3vyqfMKHtD5nY-0-f6491e6ae0ac242b4af605f9d530720b)
图1-55 二项分布
(13)几何分布
几何分布的参数只有1个:p,MATLAB编程如下:
x=geornd(0.4,100000,1); % p=0.4 hist(x,50); % 直方图
运行程序可得到图形如图1-56所示。
![](https://epubservercos.yuewen.com/3D1BDF/15477637404521206/epubprivate/OEBPS/Images/00172.jpg?sign=1739678272-CX1zXX2tHEFKzWjirzR0Jywe9fCHbMBs-0-3547907ad024a29d8b343aaf8983c0b6)
图1-56 几何分布
(14)泊松(Poisson)分布
泊松(Poisson)分布的参数只有1个:lambda,此参数要大于零。MATLAB函数调用如下:
x=poissrnd(10,100000,1); % lambda = 10 hist(x,50); % 直方图
运行程序可得到图形如图1-57所示。
![](https://epubservercos.yuewen.com/3D1BDF/15477637404521206/epubprivate/OEBPS/Images/00173.jpg?sign=1739678272-K2itkTLYoMVKEkQCgZbpYQtqFRjgdjUu-0-55716e6fc68fcab963c08a099b8735a8)
图1-57 泊松分布
1.9.4 蒙特卡洛Monte Carlo算法
Monte Carlo算法计算的结果收敛的理论依据来自于大数定律,Monte Carlo算法计算要进行很多次抽样,才会比较好地显示出来。如果Monte Carlo计算结果的某些高阶距存在,即使抽样数量不太多,这些渐进属性也可以很快地达到。
在金融产品定价中,大多数问题求解基于某个随机变量的函数的期望值。考虑一个欧式期权,假定已知在期权行权日的股票服从某种分布(理论模型中一般是正态分布),那么用期权收益在这种分布上做积分求期望值即可。
给定曲线和曲线
,曲线的交点为:
、
。曲线围成平面有限区域,用蒙特卡洛方法计算区域面积,编程如下:
% Designed by Yu Shengwei From SWJTU University % 2014年12月29日 clc,clear,close all % 清理命令区、清理工作区、关闭显示图形 warning off % 消除警告 feature jit off % 加速代码运行 format short tic % 运算计时 P=rand(10000,2); x=2*P(:,1)-1; y=2*P(:,2); points=find(y<=2-x.^2&y.^3>=x.^2); M=length(points); S=4*M/10000 figure('color',[1,1,1]) plot(x(points),y(points),'bs') toc % 计时结束
运行程序输出结果如下:
S = 2.1168 时间已过 0.085066 秒。
得到相应的图形如图1-58所示。
![](https://epubservercos.yuewen.com/3D1BDF/15477637404521206/epubprivate/OEBPS/Images/00178.jpg?sign=1739678272-9r2t97uSLIO4TzJORLxtdBw5Z4GaCcG8-0-6e9eeb545358cee3c2924b161fa846c1)
图1-58 面积求解
蒙特卡洛方法计算冰淇淋锥体积,
,又冰淇淋锥含于体积为8的六面体
;N个点均匀分布于六面体中,锥体中占有m个,则锥体与六面体体积之比近似为m∶N,即
。
绘制该冰淇淋锥体,编程如下:
% Designed by Yu Shengwei From SWJTU University % 2014年12月29日 clc,clear,close all % 清理命令区、清理工作区、关闭显示图形 warning off % 消除警告 feature jit off % 加速代码运行 format short tic % 运算计时 m=20; % 六面体中点数 n=100; % 锥体中点数 t=linspace(0,2*pi,n); % 点 r=linspace(0,1,m); % 半径 x=r'*cos(t); % x y=r'*sin(t); % y z1=sqrt(x.^2+y.^2); % 半径 z2=1+sqrt(1+eps-x.^2-y.^2); % 体积2 X=[x;x];Y=[y;y]; % 矩阵扩充 Z=[z1;z2]; % 矩阵扩充 figure('color',[1,1,1]) mesh(X,Y,Z) % 3D曲面 view(0,-18) % 视角 colormap([0 0 1]),axis off % 取消轴显示 toc % 计时结束
运行程序输出结果如图1-59所示。
![](https://epubservercos.yuewen.com/3D1BDF/15477637404521206/epubprivate/OEBPS/Images/00183.jpg?sign=1739678272-uEc5qZ0YZBoNOYJVRq5dBCWdYtVA53GM-0-9f5a5c650d889a5ba8437516ca829125)
图1-59 冰淇淋模型
如图1-59所示冰淇淋模型,该冰淇淋模型体积求解如下:
![](https://epubservercos.yuewen.com/3D1BDF/15477637404521206/epubprivate/OEBPS/Images/00184.jpg?sign=1739678272-RQPWpX2xJVX3Zx5VJ7V4fvyQALd7MKHN-0-2fa5c50a12d3f9e8f891b87e6c61a1fe)
设,
,
,则该体积转化为一个定积分表达式如下:
![](https://epubservercos.yuewen.com/3D1BDF/15477637404521206/epubprivate/OEBPS/Images/00188.jpg?sign=1739678272-pdfczAofYgEjAEcewjjRMPeybr7R6OpU-0-c1d5a7da60a7943ec1a2e24517b6179e)
MATLAB编程如下:
clc,clear,close all % 清理命令区、清理工作区、关闭显示图形 warning off % 消除警告 feature jit off % 加速代码运行 format short tic % 运算计时 L=7; % 重复计算次数 N=10000; % 点数 for k=1:L P=rand(N,3); % 随机数 x=2*P(:,1)-1; % x y=2*P(:,2)-1; % y z=2*P(:,3); % z R2=x.^2+y.^2; % 半径平方 R=sqrt(R2); % 半径 II=find(z>=R&z<=1+sqrt(1-R2)); % 满足不等式 m=length(II); q(k)=8*m/N; % 体积 end error=q-pi % 误差 figure('color',[1,1,1]) plot(x(II),y(II),'bp') % 画出x,y视图 toc % 计时结束
运行程序输出结果如下:
error = Columns 1 through 5 0.0096 -0.0336 -0.0600 0.0008 0.0488 Columns 6 through 7 -0.0344 0.0080
输出图形如图1-60所示。
![](https://epubservercos.yuewen.com/3D1BDF/15477637404521206/epubprivate/OEBPS/Images/00189.jpg?sign=1739678272-PtozUhRmYANkymlb6EzcxKEPVHndbU8z-0-60645c14d6e546c10d50a91e3afe93d4)
图1-60 xy平面映射