![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=1739608961-oyPAaOM8DZbxE0zJVpY4WjmhbXB4jLsv-0-a63c2fe5376251eaa53a4cb0f0a5fcfb)
通过相应的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=1739608961-wFOgQXJPIMx54QeThbJzgOP1VSHlRKge-0-acafb15d756efb6b5e17250125c99925)
1.9.2 随机变量特征分析
1.期望
设离散性随机变量的分布律为:
![](https://epubservercos.yuewen.com/3D1BDF/15477637404521206/epubprivate/OEBPS/Images/00144.jpg?sign=1739608961-pDbKI3h7OejXJm97ec4SueFE3DEJMxhV-0-a62bd550fc6f34a59a44647f0638a760)
则相应X的期望如下:
![](https://epubservercos.yuewen.com/3D1BDF/15477637404521206/epubprivate/OEBPS/Images/00145.jpg?sign=1739608961-qd6YBGlJYvQfmlDxJuZPqPZM1IzKZKca-0-c3cbccb19d2a5a30e6932c8e91147f06)
而对于来自总体X的一个样本,设其样本值为,则定义样本均值为:
![](https://epubservercos.yuewen.com/3D1BDF/15477637404521206/epubprivate/OEBPS/Images/00147.jpg?sign=1739608961-YHYgQGN1JDB2FPwZW4Y9oZEtb2zBaxcz-0-75da7c2ffb9b78c655717afa8e47939e)
则依概率收敛于X的均值。
在MATLAB统计工具箱中,提供了求解随机变量均值的函数mean(),具体如下:
>> mean(rand(5,1)) ans = 0.5440
2.方差、标准差、矩
方差是用来刻画随机变量X取值分散程度的一个量,其一般用下式表达:
![](https://epubservercos.yuewen.com/3D1BDF/15477637404521206/epubprivate/OEBPS/Images/00149.jpg?sign=1739608961-z4i3ndWrou6qh40CwB7kF3nIWYGhgPI9-0-3587c5dadad4310cd1ceb01a82a79d5e)
在应用上还引入与随机变量X具有相同量纲的量,记为σ(X),称为标准差或均方差。
X的k阶中心矩应为:
![](https://epubservercos.yuewen.com/3D1BDF/15477637404521206/epubprivate/OEBPS/Images/00151.jpg?sign=1739608961-2PdAIBsKmeK92ve9nGAHas2vrbMd9gqI-0-c8f8cae5ea45495fee6ff6bedde52d84)
可知方差即为二阶中心矩。
对于一个样本来说,样本方差通常分为无偏估计和有偏估计,具体如下。
无偏估计式:
![](https://epubservercos.yuewen.com/3D1BDF/15477637404521206/epubprivate/OEBPS/Images/00152.jpg?sign=1739608961-t6xBVF7v3QTc19BJbuTQKqXngT44EBwV-0-9a161912fc38a37bedb1c4544ac065c1)
有偏估计式:
![](https://epubservercos.yuewen.com/3D1BDF/15477637404521206/epubprivate/OEBPS/Images/00153.jpg?sign=1739608961-0sqiG4iuHeSZkcKXQaRdz69hUCnra9l7-0-1435518b0a11a7127099ffc1f50ec566)
样本标准差也对应有如下两种形式:
![](https://epubservercos.yuewen.com/3D1BDF/15477637404521206/epubprivate/OEBPS/Images/00154.jpg?sign=1739608961-fhPTtWRhXRvmnbdujLheAj1QLtx3zQ6p-0-bae3c4d101b32fd99b29629782b72fa9)
或
![](https://epubservercos.yuewen.com/3D1BDF/15477637404521206/epubprivate/OEBPS/Images/00155.jpg?sign=1739608961-QxkimhcouTd3506KevBBBc2JmfSnD66e-0-5a89e6007de8d63e8c5f08cef9e67263)
样本的k阶中心矩为:
![](https://epubservercos.yuewen.com/3D1BDF/15477637404521206/epubprivate/OEBPS/Images/00156.jpg?sign=1739608961-w1KdEaa23YSJlWTKuSnOxEUy6jZcpJ8i-0-e36ba9cc6a1a13710360e978e226fbcc)
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=1739608961-FICCYCVVOsFNMpzFugbmSL1eYBvydZMb-0-a6c950db5b209a0c77751bb1a192bbf9)
对于n维随机变量,通常用协方差矩阵描述它的二阶中心矩。如对于二维随机变量(X,Y),定义协方差矩阵形式为:
![](https://epubservercos.yuewen.com/3D1BDF/15477637404521206/epubprivate/OEBPS/Images/00158.jpg?sign=1739608961-ZsaLWnvfZpqNZFTQq3qFa9F1njPBd42y-0-940a7c7f1cda670ccddfd03215a0682c)
其中:
![](https://epubservercos.yuewen.com/3D1BDF/15477637404521206/epubprivate/OEBPS/Images/00159.jpg?sign=1739608961-RWjDRxGknObXwLDbPPQR8fwE2d2vfatb-0-977d1c0d38a461d1512e05032ac6d67a)
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=1739608961-tCYGno5ylFNpT1FDwL6qnQxcBPfBtXoa-0-92d3e281ac305e3f5b2aee0c618bc289)
图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=1739608961-F5S7MAigfH71MJ96sX4RORPlljimycRA-0-577319b12389527d0f1dfbdbc3694143)
图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=1739608961-uAd3UPZWWvmSJwpgMomJktGwkyKtPL5C-0-35cbc403c1114b4bca6a9959b25d145f)
图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=1739608961-HX4YflpefQVUMSRwT2FCozBZOCZXUovN-0-60d96a9be9c2a20550779cfb5430e32a)
图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=1739608961-2loxs4q7sLc1BdD2G4QorgthuUc5cX3j-0-0bb70cbcef3c1bdff1cd24d8d9e2ab7c)
图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=1739608961-kgTDOCiJP05xPZ8wdujibGkVFMne6HCR-0-d6e7fdac1c1b400a1c396e781cb7a0da)
图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=1739608961-fl0oulQuIIWjrA4h9RvGh4VFdeaNQTzb-0-be24a94181af5fc67f78b0ef0f7876d7)
图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=1739608961-MW1lRnl8ra0yGkNNjZUdGwqUVyvQZDGJ-0-a840ebc76218a852140f9d623a906360)
图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=1739608961-GRsAIdewsh1yYNEVC3D1Ng20QfOy6UV3-0-371b69971b789f8361ce22b0fba0c7a3)
图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=1739608961-ZveawMHWUiQ5EFWpeCwGUhCGXtUcyOgJ-0-55d62ed91e797f5f99edbdafe3bcaaf7)
图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=1739608961-NHkEpMxdYDUaxZt95BjAw4uJmUvH1bh6-0-9dd192271e23f2cb114f0fa985877417)
图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=1739608961-ZBVtmvhO9enF5yqGtS7mHMsam3ok5ETz-0-699ac3c9f440a328863a80ac9878ad14)
图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=1739608961-7ZuZ8HLrsuKdfncnLxX0Hya8PCnWGfvO-0-b9170e1acceb3dd69aa4201b416ef600)
图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=1739608961-RCc1r3qpToUjDtRV3vkUuWXMhqnK0wnX-0-0200eeeffdff28f822efa27958035a5d)
图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=1739608961-7NqdwOyqbLBNglbslgC68FJ1ZMunlXVo-0-24308fcdb26a444632c2743fcada5288)
图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=1739608961-9mzywtzANQAehdpK6Gevwo7FQqWAmpcX-0-74d314b2b066f842dc6ab08cfd87ecba)
图1-59 冰淇淋模型
如图1-59所示冰淇淋模型,该冰淇淋模型体积求解如下:
![](https://epubservercos.yuewen.com/3D1BDF/15477637404521206/epubprivate/OEBPS/Images/00184.jpg?sign=1739608961-l7MuLJMwWlv4yKk6drq2IJrxTbKgW1X0-0-15df8bf1d8579922cceb78f77af6e0bc)
设,
,
,则该体积转化为一个定积分表达式如下:
![](https://epubservercos.yuewen.com/3D1BDF/15477637404521206/epubprivate/OEBPS/Images/00188.jpg?sign=1739608961-1JPrTuWwVXLnrsaGYwmu59cAfzuJdMYV-0-108fee2a741b8b79021afa4099eeae49)
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=1739608961-r4zNUtGNMcFnQoCUFP8CvIZxrWqlpviw-0-d873e3fcad1359c6ffe6217c695c2a3d)
图1-60 xy平面映射