概率和统计的MATLAB指令

1、描述性统计分析

      描述性统计分析函数标准用法都是对列状数据进行操作。

mean(X):当X为向量,返回向量的均值;当X为矩阵,返回矩阵的每列元素均值构成的行向量。
min,max,sort,mean,median,std,var,sum,prod,cumsum,sumprod等函数用法与mean类似。
cov(X,Y):这里X,Y为向量,分别代表一个样本,求得样本的协方差。
cov(X):这里X为矩阵,将各列看成一个样本,求得样本协方差矩阵。corrcoef用法与cov类似,求得相关系数。
[Y,I]=sort(X):当X为向量,Y返回X的升序排列,I返回Y各元素原来的编址,即Y=X(I);当X为矩阵,分别对各列排序。
Y=prctile(X,p):当X为向量,Y返回X的p%上分位数;当X为矩阵,分别求各列的上分位数。
trimmean(X,p):剔除上下各(p/2)%数据以后的均值。

例如:

>> data=[11 57 291; 13 54 278;10 66 253; 9 46 307; 16 75 244;15 70 256; 8 40 310]

data =

    11    57   291
    13    54   278
    10    66   253
     9    46   307
    16    75   244
    15    70   256
     8    40   310

>> % 注意mean和median的区别
>> mean(data),median(data)

ans =

   11.7143   58.2857  277.0000

ans =

    11    57   278

>> % 注意var是std的平方
>> std(data),sqrt(var(data))

ans =

    3.0394   12.7895   26.7457

ans =

    3.0394   12.7895   26.7457

>> % 注意sum与cumsum不同
>> sum(data),cumsum(data)

ans =

          82         408        1939

ans =

          11          57         291
          24         111         569
          34         177         822
          43         223        1129
          59         298        1373
          74         368        1629
          82         408        1939

>> % 将三列看成三个随机变量
>> corrcoef(data)

ans =

    1.0000    0.8299   -0.7832
    0.8299    1.0000   -0.9633
   -0.7832   -0.9633    1.0000

>> % 排序
>> [Y,I]=sort(data)

Y =

     8    40   244
     9    46   253
    10    54   256
    11    57   278
    13    66   291
    15    70   307
    16    75   310

I =

     7     7     5
     4     4     3
     3     2     6
     1     1     2
     2     3     1
     6     6     4
     5     5     7

>> % prctilr(data,50)等于median(data)
>> prctile(data,[25,50,100])

ans =

    9.2500   48.0000  253.7500
   11.0000   57.0000  278.0000
   16.0000   75.0000  310.0000

>> % 注意与mean的区别
>> trimmean(data,20)

ans =

   11.6000   58.6000  277.0000

2、统计图

bar(Y):作向量Y的条形图。

bar(X,Y):作向量Y相对于X的条形图。

hist(X,k):将向量X中数据等距分为k组,并作频数直方图。k默认为10.

[N,X]=hist(Y,k): 不做图,N返回各组数据频数,X返回各组的中心位置。

boxplot(Y):作向量Y的箱型图。

例子:

>> vdata=rand(1,100); %100个标准正态分布随机数
>> % 由于是随机数,所以每次结果都不相同
>> subplot(1,3,1);
>> % 作出5组频数直方图,如图(a)所示
>> hist(vdata,5);
>> xlabel('(a)');
>> [n,x]=hist(vdata,5)

n =

    26    18    21    17    18

x =

    0.1038    0.3021    0.5004    0.6987    0.8970

>> % 5组频率直方图,如图(b)所示
>> subplot(1,3,2);
>> bar(x,n/100)
>> xlabel('(b)')
>> % 箱型图,如图(c)
>> subplot(1,3,3);
>> boxplot(vdata);
>> xlabel('(c)')

Probability_ScaleParameter_matlab-1

箱型图的箱中包含了从75%上分位数到25%上分位数的数据,中间线为中位线。

3、随机数生成

R=rand(m,n):生成区间(0,1)上均匀分布的m行n列随机矩阵。

R=randn(m,n):生成标准正态分布N(0,1)的m行n列随机矩阵。

P=randperm(N): 生成1,2,…,N的一个随机排列。

      实际上,计算机生成的是伪随机数,其生成机制由随机种子控制。rand和randn是最基本的随机数产生函数,他们允许用户自己设置随机种子。若将随机种子设为特定值,就可以是随机模拟称为可再现的。例如:

>> rand('state',1)
>> randperm(5)

总是产生42513。另一方面,若将种子设置为系统时间

>> rand('state',sum(1000*clock))

则几乎可以得到真正的随机实验。

4、随机变量模拟

R=random(sist,p1,p2,…,m,n): 生成以p1,p2,…为参数的m行n列dist类分布随机数矩阵。dist是表示分布类型字符串。

R=unidrnd(N,m,n):生成1,2,…,N的等概率m行n列随机矩阵。

R=binornd(k,p,m,n):生成参数为k,p的m行n列二项分布随机数矩阵。

R=unifrnd(a,b,m,n):生成[a,b]区间上的连续型均匀分布m行n列随机数矩阵。

R=normrnd(mu,sigma,m,n):生成均值为μ,均方差为σ的m行n列正态分布随机数矩阵。

R=mvnrnd(mu,sigma,m):生成n维正态分布数据这里μ为n维均值向量,σ为n阶协方差矩阵(它必须是正定的),R为m*n矩阵,每行代表一个随机数。

注:通用随机数生成函数random可适用的分布类型包括:’discrete uniform’(离散均匀分布),’binpmial’(二项分布),’normal’(正态分布),’poisson’(Poisson分布),’chi-square’(χ²分布),’t’(t分布),’f’(F 分布),’geometric’(几何分布),’hypergeometric’(超几何分布),’exponential’(指数分布),’gamma’(Γ分布),’weibull’(Weibull分布)等。

5、概率函数

y=pdf(dist,x,p1,p2,…):返回以p1,p2,…为参数的m行n列dist分布概率函数(分布率或密度函数)在x处的值。dist是表示分布类型的字符串,可适用的分布类型类似于random。

y=cdf(dist,x,p1,p2,…):返回以p1,p2,…为参数的m行n列dist类分布累计概率函数(即分布函数)在x处的值。dist是表示分布类型的字符串,可适用的分布类型类似于random。

y=icdf(dist,x,p1,p2,…):返回以p1,p2,…为参数的m行n列dist类分布函数(即下分位数)在x处的值,介于0~1。dist是表示分布类型的字符串,可适用的分布类型类似于random。

y=normpdf(x,mu,sigma):返回参数为μ和σ的正态分布密度函数在x处的值。

p=normcdf(x,mu,sigma):正态分布函数值。

x=norminv(p,mu,sigma):normedf的逆函数,即p下分位。

例如:

>> a=normpdf(90,80,10)-normpdf(70,80,10)

a =

     0

>> b=normcdf(90,80,10)-normcdf(70,80,10)

b =

    0.6827

>> p=(1-b)/2;
>> c=norminv(p,80,10)

c =

    70

>> d=norminv(1-p,80,10)

d =

    90

>> pdf('normal',90,80,10)

ans =

    0.0242

>> p=cdf('normal',90,80,10)

p =

    0.8413

>> icdf('normal',p,80,10)

ans =

    90

>> icdf('t',0.95,20) % 自由度为20的t分布95%下分位数

ans =

    1.7247

6、统计推断

[muhat,sigmahat,muci,sigmaci]=normfit(x,alpha):正态总体N(μ,σ²)参数估计。求得列状样本数据x的点估计μ=muhat和σ=sigmahat,以及相应的100(1-α)%置信区间muci和sigmaci。α的默认值为0.05。

[h,sig]=ttest(x,m,alpha,tail):正态总体N均值t检验。检验列状样本数据x的均值是否为m;α为显著性水平(默认值0.05);参数tail为0表示双边检验(H1:μ≠μ0)(默认值),1表示右边检验(H1:μ>μ0),-1表示左边检验(H1:μ<μ0);h返回1表示拒绝H0,返回0表示接受H0;sig返回临界值拒绝概率,sig<α时,h=1。

[p,h]=ranksum(x,y):两个总体一致性的Wilcoxon秩和检验。p返回列状样本数据x和y分布相同的显著性概率。p<0.05时,h=1(拒绝H0)。

例如:

>> x=randn(200,1);
>> [a,b,aci,bci]=normfit(x)

a =

    0.0252

b =

    1.0883

aci =

   -0.1265
    0.1769

bci =

    0.9911
    1.2068

>> [h,sig]=ttest(x,0) % 检验均值是否为0

h =

     0

sig =

    0.7436

>> y=normrnd(0,1,1000,1); % 生成1000个正态N(0,1)随机数
>> [p,h]=ranksum(x,y) %检验x与y分布是否相同

p =

    0.6298

h =

     0

7、概率和统计相关指令

表1 概率统计主要MATLAB命令
主题词 意义 主题词 意义
max 最大值 random 随机数
min 最小值 unidrnd 离散均匀分布随机数
sum 各元素和 unifrnd 均匀分布随机数
cumsum 元素累计和 normrnd 正态分布随机数
prod 各元素积 binornd 二项分布随机数
cumprod 元素累计积 poissrnd 泊松分布随机数
mean 样本均值 mvnrnd 多维正态分布随机数
std 样本标准差 pdf 概率密度函数
var 样本方差 normpdf 正态分布概率密度函数
cov 样本协方差 cdf 累计分布函数
corrcoef 样本相关系数 normcdf 正态分布累计分布函数
sort 排序(从小到大) icdf 逆分布函数
median 中值 norminv 正态分布下分位数
prctile 百分位数 tinv t分布下分位数
trimmean 剔除极端数据的均值 chi2inv χ²分布下分位数
bar 条形图 finv F分布下分位数
hist 数据分组距频数图 mle 参数估计
boxplot 箱型图 normfit 正态分布参数估计
rand [0,1]均匀分布随机数 ttest 单总体t检验
randn 标准正态分布随机数 ttest2 双总体t检验
randperm 随机排列 ranksum 分布秩和检验

你可能感兴趣的:(matlab)