当前位置:   article > 正文

matlab在概率统计中的应用_matlab算概率

matlab算概率

1.产生随机变量

binornd(n,p) 生成服从二项分布的随机数

二项分布有2个参数:n,p。考虑一个打靶的例子,每枪命中率为p,共射击N枪,那么一共击中的次数就服从参数为(N,p)的二项分布。注意p要小于等于1且非负,N要为整数。基本语法:
binornd(n,p,[M,N,P,…])

生成的随机数服从参数为(N,p)的二项分布,这些随机数排列成MNP… 多维向量。如果只写M,则生成M*M矩阵;如果参数为[M,N],就是对于维度的变量。一些例子:

binornd(10,0.3,5,1) %生成5个随机数排列的列向量,一般用这种格式
binornd(10,0.3,5) %生成55列的随机数矩阵
binornd(10,0.3,[5,4]) %生成一个54列的随机数矩阵
%注:上述语句生成的随机数所服从的参数为(10,0.3)的二项分布

  • 1
  • 2
  • 3
  • 4
  • 5

同样,我们可以从下面的代码和图像中理解这个函数,当生成的随机数足够多,就会看出二项分布的规律。

%生成的随机数大致的分布。
x=binornd(10,0.45,10000,1);
hist(x,10);  %绘图
  • 1
  • 2
  • 3

在这里插入图片描述

normrnd(mu,sigma)

标准形式如下
R=normrnd(mu,sigma,[m,n,……])

其中,mu代表均值,sigma代表标准差(方差取根号) m指定随机数的个数,n代表返回的列数

R = mvnrnd(0, 1,10000)
capaplot(R,[-3,3])  %把生成的数据绘图表示
  • 1
  • 2

在这里插入图片描述
还可以用函数表示正态分布的概率

R = mvnrnd(0, 1,10000)
normplot(R)  %正态分布概率图
  • 1
  • 2

在这里插入图片描述
其他的一些函数如下
在这里插入图片描述
在这里插入图片描述

2.概率密度计算

y=pdf(name,X,A,B,C)
返回在X处 ,参数为A,B,C的概率密度值,对于不同的分布,参数不同,name为分布函数名,取值如下
在这里插入图片描述
在这里插入图片描述
从例子来理解一波函数的使用

y=pdf('bino',0:4,3,0.5)
%  0.1250    0.3750    0.3750    0.1250         0
  • 1
  • 2

就是服从X-B(3,0.5)的二项分布在x取0到4中值的概率,从这个函数可以得到不同分布的分布律

同时也可以求解概率密度对于任意函数和数据
[f,xi] = ksdensity (x)
f为得到的概率密度 xi极端概率密度的电
x为待统计的向量

fx=sin((1:100)*pi/50) 
[f,xi]=ksdensity(fx)
figure;
plot(xi,f)
axis tight
  • 1
  • 2
  • 3
  • 4
  • 5

在这里插入图片描述
专用函数的概率密度计算
比如对于二项分布由 Y=binopdf(X,N,P)
在这里插入图片描述
在这里插入图片描述

x=[0:100];
y=binopdf(x,100,0.5)
plot(x,y)
  • 1
  • 2
  • 3

在这里插入图片描述

3.累计概率分布 cdf

计算随机变量x<=X的概率和(类似分布函数)累计概率值
Y=cdf(‘name’,X,A,B,C)
返回在X处,参数为A B C的累计概率值,对于不同分布,参数个数不同,name为分布函数名,取值同上。
y=cdf(‘bino’,0:4,3,0.5)
y =
0.1250
0.5000
0.8750
1.0000
1.0000
最后可以得到累计概率。

同样可以用ksdendity来求解函数 数据的累计概率分布,但该函数默认为计算函数,数据的概率密度值,如果要计算累计概率分布,需要设置属性function取值为cdf而不是pdf

fx=sin((1:100)*pi/50) 
[f,xi]=ksdensity(fx,'function','cdf')
figure;
plot(xi,f)
axis tight
  • 1
  • 2
  • 3
  • 4
  • 5

在这里插入图片描述
同样有专用函数累计密度计算
在这里插入图片描述
比如下面的使用,x为样本点得到对应概率,二项分布的参数是100 0.5

x=[0:100];
y=binocdf(x,100,0.5)
plot(x,y)
  • 1
  • 2
  • 3

在这里插入图片描述

4.统计特征

平均值 中位数

mean median nanmedian geomean harmmean 求数据的平均值,中位数,忽略NaN 的中位数,几何平均数,及调和平均数

排序

数据比较 普通排序,按行排序 求解值域大小
分别为sort sortrows range (求解范围)

A=rand(3)
y1 = sort(A)
y2 = sortrows(A)
y3 = range(A)
  • 1
  • 2
  • 3
  • 4

方差和标准差

matlab使用var 和std函数分别计算方差和标准差,还可以使用skewness函数求解三阶统计量斜度

x=randn(2,5)
dx=var(x')
dx1=var(x',1)
s=std(x')
s1=std(x',1)
sk=skewness(x')
sk1=skewness(x',1)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

对于var函数,后面加上1就的求总体的方差
如果没有。默认是0,就是求解样本的方差
下面是样本方差的计算公式
在这里插入图片描述
如下是总体方差的计算公式
在这里插入图片描述

样本方差是总体方差的无偏估计
总体方差中的均值是未知的,样本方差得额外求一次样本均值,相当于求样本方差过程中额外增加了一层限制
样本方差计算公式里分母为n-1的目的是为了让方差的估计是无偏的。无偏的估计(unbiased estimator)比有偏估计(biased estimator)更好是符合直觉的

因而,我们采用matlab计算中var(x)计算得到的是样本方差而非总体方差,如果要计算总体方差,可以采用var(x,1)
我们可以通过下面的程序进行验证:

test=randn(1,5); %随机给出一组数据
m=mean(test)
var1=sum((test(1,:)-m).^2)/length(test) %用总体数据公式定义的方法求方差
var2=sum((test(1,:)-m).^2)/(length(test)-1) %求样本数据的方差
var3=var(test) %用var函数计算
  • 1
  • 2
  • 3
  • 4
  • 5

得到如下结果可以发现var1和2相同
m = -0.6242
var1 = 0.3036
var2 = 0.3795
var3 = 0.3795

协方差和相关系数

cov corrcoef 分别计算协方差和相关系数

5.统计作图

%%  正整数频率表
T=ceil(5*rand(1,10))  %ceil 四舍五入,向这完全大方向取整
table = tabulate(T)
  • 1
  • 2
  • 3

最后可以得到不同数字对应的频率

%% 累计分布函数图形  cdfplot  [h,stats]=cdfplot(x)
%x为向量,h为表示曲线的句柄,stats表示样本的一些特征
x=[1:100];
y=binocdf(x,100,0.5);
cdfplot(y)
  • 1
  • 2
  • 3
  • 4
  • 5

在这里插入图片描述

%% 最小二乘拟合直线  h=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:')
lsline
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

在这里插入图片描述

%% 绘制正态分布概率图 h=normplot(x) x为矩阵就会显示每一列的正态分布 概率图形
x=normrnd(10,1,25,1);
normplot(x)
figure;
normplot([x,1.5*x])
  • 1
  • 2
  • 3
  • 4
  • 5

在这里插入图片描述

%% 样本数据的合图,可以看出最值等等  boxplot(ares,X,'Name',value) 
%X 为待绘制的变量G 为附加群变量  axes为坐标轴句柄  ,Name,value 为可以设置属性的属性名和属性值
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')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

在这里插入图片描述

%% 参考线  refline refcurve  分别可以绘制一条参考直线和一条参考曲线
% refline(m,b)  refline(coeffs) refline hline = refline()
% m为斜率,b为截距 coeffs为前面两个参数构成的向量 hline为参考线句柄
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')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

在这里插入图片描述

% reflcurve(p) refcurve  hcurve=refcurve() p为多项式系数
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')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

在这里插入图片描述

%% 样本概率图形  capaplot 绘制样本的概率图形
% p = capaplot(data,specs)  [p,h]=capaplot(data,specs)
% data 所给样本数据,specs用于指定范围,p表示在指定范围内的概率,返回来自估计分布的随机变量落在是定范围内的概率
data = normrnd(3,0.005,100,1);
pl=capaplot(data,[2.9 3.01])   % 得到在对应区间下的概率
grid on; axis tight
figure
p2=capaplot(data,[2.995 3.015]) 
grid on;axis tight
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

在这里插入图片描述
在这里插入图片描述

%% 正态拟合直方图  histfit(data,nbins,dist)  data为向量,nbins指定bar的个数,dist为分布类型
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',[0.8 0.8 1])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

在这里插入图片描述
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/67153
推荐阅读
相关标签
  

闽ICP备14008679号