前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【MATLAB 从零到进阶】day10 概率密度、分布和逆概率分布函数值的计算(上)

【MATLAB 从零到进阶】day10 概率密度、分布和逆概率分布函数值的计算(上)

作者头像
统计学家
发布2019-04-10 10:57:51
2.1K0
发布2019-04-10 10:57:51
举报

概率密度、分布和逆概率分布函数值的计算

MATLAB统计工具箱中有这样一系列函数,函数名以pdf三个字符结尾的函数用来计算常见连续分布的密度函数值或离散分布的概率函数值,函数名以cdf三个字符结尾的函数用来计算常见分布的分布函数值,函数名以inv三个字符结尾的函数用来计算常见分布的逆概率分布函数值,函数名以rnd三个字符结尾的函数用来生成常见分布的随机数,函数名以fit三个字符结尾的函数用来求常见分布的参数的最大似然估计和置信区间,函数名以stat四个字符结尾的函数用来计算常见分布的期望和方差,函数名以like四个字符结尾的函数用来计算常见分布的负对数似然函数值。

【例】求均值为1.2345,标准差(方差的算术平方根)为6的正态分布在处的密度函数值与分布函数值。

>> x = 0:10; %产生一个向量 >> Y = normpdf(x, 1.2345, 6) %求密度函数值 >> P = normcdf(x, 1.2345, 6) %求分布函数值 >> x=0:10; >> Y=normpdf(x,1.2345,6) Y = Columns 1 through 7 0.0651 0.0664 0.0660 0.0637 0.0598 0.0546 0.0485 Columns 8 through 11 0.0419 0.0352 0.0288 0.0229 >> P=normcdf(x,1.234,6) P = Columns 1 through 7 0.4185 0.4844 0.5508 0.6157 0.6776 0.7349 0.7865 Columns 8 through 11 0.8317 0.8703 0.9022 0.9280

【例】

(1) 标准正态分布的上侧0.05分位数u0.05;

(2) 自由度为50的t分布的上侧0.05分位数t0.05(50);

(3) 自由度为8的2χ分布的上侧0.025分位数χ方0.025(8); (4) 第一自由度为7,第二自由度为13的F分布的上侧0.01分位数F0.01(7, 13);

(5) 第一自由度为13,第二自由度为7的F分布的上侧0.99分位数F0.99(13, 7).

>> u=norminv(1-0.005,0,1) u = 2.5758 >> t=tinv(1-0.05,50) t = 1.6759 >> chi2=chi2inv(1-0.025,8) chi2 = 17.5345 >> f1=finv(1-0.01,7,13) f1 = 4.4410 >> f2=finv(1-0.99,13,7) f2 = 0.2252

生成一元分布随机数

一、均匀分布随机数和标准正态分布随机数

1. rand函数

调用格式:

Y = rand

Y = rand(n)

Y = rand(m,n)

Y = rand([m n])

Y = rand(m,n,p, …)

Y = rand([m n p …])

Y = rand(size(A))

2. randn函数

【例】调用rand函数生成10×10的随机数矩阵,并将矩阵按列拉长,然后调用hist函数画出频数直方图。

>> x = rand(10) >> y = x(:); >> hist(y) >> xlabel('[0,1]上均匀分布随机数'); >> ylabel('频数');

常见一元分布随机数

MATLAB统计工具箱中函数名以rnd三个字符结尾的函数用来生成常见分布的随机数。例如:

betarnd Beta分布

exprnd 指数分布

gamrnd Gamma分布

lognrnd 对数正态分布

normrnd 正态分布

poissrnd 泊松分布

randsample 从有限总体中随机抽样

random 指定分布

【例】调用normrnd函数生成1000×3的正态分布随机数矩阵,其中均值为75,标准差为8 ,并作出各列的频数直方图

% 调用normrnd函数生成1000行3列的随机数矩阵x,其元素服从均值为75,标准差为8的正态分布 >> x = normrnd(75, 8, 1000, 3); >> hist(x) % 绘制矩阵x每列的频数直方图 >> xlabel('正态分布随机数(\mu = 75, \sigma = 8)'); % 为X轴加标签 >> ylabel('频数'); % 为Y轴加标签 >> legend('第一列', '第二列', '第三列') % 为图形加标注框

【例】调用normrnd函数生成1000×3的正态分布随机数矩阵,其中第各列均值分别为0,15,40,标准差分别为1,2,3,并作出各列的频数直方图

>> x = normrnd(repmat([0 15 40], 1000, 1), repmat([1 2 3], 1000, 1), 1000, 3); >> hist(x, 50) % 绘制矩阵x每列的频数直方图 >> xlabel('正态分布随机数'); % 为X轴加标签 >> ylabel('频数'); % 为Y轴加标签 % 为图形加标注框 >> legend('\mu = 0, \sigma = 1','\mu = 15, \sigma = 2','\mu = 40, \sigma = 3')

【例】调用random函数生成10000×1的二项分布随机数向量,然后作出频率直方图。其中二项分布的参数为n=10,p=0.3

% 调用random函数生成10000行1列的随机数向量x,其元素服从二项分布B(10,0.3)

>> x = random('bino', 10, 0.3, 10000, 1);

>> [fp, xp] = ecdf(x); % 计算经验累积概率分布函数值

>> ecdfhist(fp, xp, 50); % 绘制频率直方图

>> xlabel('二项分布(n = 10, p = 0.3)随机数'); % 为X轴加标签

>> ylabel('f(x)'); % 为Y轴加标签

【例】调用random函数生成10000×1的卡方分布随机数向量,然后作出频率直方图,并与自由度为10的卡方分布的密度函数曲线作比较。其中卡方分布的参数(自由度)为10

>> x = random('chi2', 10, 10000, 1); >> [fp, xp] = ecdf(x); % 计算经验累积概率分布函数值 >> ecdfhist(fp, xp, 50); % 绘制频率直方图 >> hold on >> t = linspace(0, max(x), 100); >> y = chi2pdf(t, 10); >> plot(t, y, 'r', 'linewidth', 3) >> xlabel('x ( \chi^2(10) )'); % 为X轴加标签 >> ylabel('f(x)'); % 为Y轴加标签 >> legend('频率直方图', '密度函数曲线') % 为图形加标注框

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-06-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器学习与统计学 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档