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)')
箱型图的箱中包含了从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 | 分布秩和检验 |