数据统计分析
现实生活中的许多数据都是随机产生的,如考试分数,月降雨量,灯泡寿命等。从统计角度来看,这些数据其实都是符合某种分布的,这种分布就是统计规律性
在数学建模过程中经常与数据打交道,需要进行数据统计分析
- 掌握基本的数据统计分析方法
- 能够对概率分布进行参数估计
- 进行简单的假设检验
- 熟悉Matlab的相关命令
基本统计量
基本统计量及其实现
基本概念
样本数据:从研究的对象(总体)X中得到的n个观测值
x 1 , x 2 , … , x n x_{1},x_{2},\dots,x_{n} x1,x2,…,xn
称为样本数据,简称数据,n称为样本容量
样本数据的统计量,能够提取数据中有价值的信息
- 数据分布的集中位置
- 数据分布的分散程度
- 数据分布的形状
集中位置统计量
集中位置(均值,中位数,分位数,三均值)
- 均值:描述数据取值的平均水平
x ˉ = 1 n ∑ i = 1 n x i \bar{x}=\frac{1}{n}\sum_{i=1}^{n}x_{i} xˉ=n1i=1∑nxi
- 样本均值使用了所有样本数据信息,准确性高
- 样本均值易受异常值的影响而不稳健
- 中位数:将原数据,按照从小到大顺序排列,中位数可定义为
M = { x n + 1 2 n 为奇数 1 2 ( x n 2 + x ( 1 + n 2 ) ) n 为偶数 M=\left\{\begin{matrix} x_{\frac{n+1}{2}}\qquad n为奇数 \\ \frac{1}{2}\left( x_{\frac{n}{2}}+x_{(1+ \frac{n}{2})} \right)\qquad n为偶数 \end{matrix}\right. M={x2n+1n为奇数21(x2n+x(1+2n))n为偶数
中位数能描述数据的中心位置
- 若数据的分布是对称的,则中位数与均值比较接近
- 若数据分布为偏态,则中位数与均值存在较大差异
- 中位数受异常值的影响较小,具有较好的稳健性
- p分位数:
M p = { x ( [ n p ] + 1 ) n p 不是整数 1 2 ( x ( n p ) + x ( n p + 1 ) ) n p 是整数 M_{p}=\left\{\begin{matrix} x_{([np]+1)}\qquad np不是整数 \\ \frac{1}{2}\left( x_{(np)}+x_{(np+1)} \right)\qquad np是整数 \end{matrix}\right. Mp={x([np]+1)np不是整数21(x(np)+x(np+1))np是整数
其中, [ n p ] [np] [np]表示np的整数部分
- p=0.5时, M 0.5 = M ( 中位数 ) M_{0.5}=M(中位数) M0.5=M(中位数)
- 实际应用中,0.75分位数与0.25分位数比较常用,分别称为上下四分位数,记作 Q 3 , Q 1 Q_{3},Q_{1} Q3,Q1
- 在描述数据集中位置的效果方面,均值使用了数据的全部信息,中位数只用了部分信息(位置信息),因此通常情况下均值比中位数有效。当数据右异常值时,中位数比较稳健
- 三均值:
M ^ = 1 4 M 0.25 + 1 2 M 0.5 + 1 4 M 0.75 \hat{M}=\frac{1}{4}M_{0.25}+\frac{1}{2}M_{0.5}+\frac{1}{4}M_{0.75} M^=41M0.25+21M0.5+41M0.75
其中, M p M_{p} Mp等于分位数
Matlab程序实现(集中位置)
- 均值命令mean:
m = mean(X)
其中,输入X为样本数据,输出m为样本均值
X如果是向量,m就是向量的均值;是矩阵,m就是每一列的均值,返回一个行向量
- 中位数命令:median:
md = median(X)
其中,输入X为样本数据,输出m为样本中位数
- 分位数命令prctile:
mp = prctile(X, P)
其中,输入X为样本数据,P为介于0至100间的整数,输出mp为P%分位数
- 三均值:
w = [0.25, 0.5, 0.75]; %输入权向量w
sm = w * prctile(X, [25;50;75]); %计算X三均值
返回的是三个分位数组成的列向量,乘上w,得到三均值结果
例子
X = [53.93 50.98 15.48 256.00 65.41
44.92 40.38 14.99 211.07 151.14
148.19 145.54 17.10 842.09 677.52
293.86 279.86 28.80 1238.01 10.5.67
86.96 74.64 12.91 302.67 299.32
791.50 680.96 77.80 3298.56 3252.88
598.92 546.67 35.60 2291.09 2099.21];
m = mean(X); %均值
md = median(X); %中位数
w = [0.25, 0.5, 0.75];
sm = w * prctile(X, [25;50;75]); %三均值
[m; md; sm] %显示结果
分散程度统计量
分散程度(方差、标准差、变异系数、极差)
方差:描述数据取值的分散程度
s 2 = 1 n − 1 ∑ i = 1 n ( x i − x ˉ ) 2 s^{2}=\frac{1}{n-1}\sum_{i=1}^{n}(x_{i}-\bar{x})^{2} s2=n−11i=1∑n(xi−xˉ)2标准差:方差的算术平方根称为标准差
s = s 2 = 1 n − 1 ∑ i = 1 n ( x i − x ˉ ) 2 s=\sqrt{ s^{2} }=\sqrt{\frac{1}{n-1}\sum_{i=1}^{n}(x_{i}-\bar{x})^{2} } s=s2=n−11i=1∑n(xi−xˉ)2
标准化变换:
x i − x ˉ s \frac{x_{i}-\bar{x}}{s} sxi−xˉ变异系数:刻画数据相对分散性的指标
v = s x ˉ ,或, v = s ∣ x ˉ ∣ v=\frac{s}{\bar{x}},或,v=\frac{s}{|\bar{x}|} v=xˉs,或,v=∣xˉ∣s
是相对量,相对于本身取值水平极差:刻画数据取值变化的跨度
R = x ( n ) − x ( 1 ) R=x_{(n)}-x_{(1)} R=x(n)−x(1)
Matlab实现(分散程度)
- 方差命令var:
s = var(x)
其中,输入x为样本数据,输出s为样本方差
- 标准差命令std;
d = std(x)
其中,输入x为样本数据,输出d为样本标准差
- 变异系数实现命令:
v = std(x)./mean(x),或,v = std(x)./abs(mean(x))
其中,输入x为样本数据,输出v为变异系数
- 极差命令:
r = range(x);或,r = max(x) - min(x)
其中,输入x为样本数据,输出r为样本极差
例子
X = [53.93 50.98 15.48 256.00 65.41
44.92 40.38 14.99 211.07 151.14
148.19 145.54 17.10 842.09 677.52
293.86 279.86 28.80 1238.01 10.5.67
86.96 74.64 12.91 302.67 299.32
791.50 680.96 77.80 3298.56 3252.88
598.92 546.67 35.60 2291.09 2099.21];
s = std(x); %标准差
v = std(x)./abs(mean(x)); %变异系数
r = max(x) - min(x); %极差
[s; v; r] %显示结果
分布形状统计量
分布形状(偏度,峰度)
- 偏度:衡量分布的不对称程度或偏斜程度的指标
p d = 1 n ∑ i = 1 n ( x i − x ˉ ) 3 ( 1 n ∑ i = 1 n ( x i − x ˉ ) 2 ) 2 p_{d}=\frac{\frac{1}{n}\sum_{i=1}^{n}(x_{i}-\bar{x})^{3}}{\left( \sqrt{ \frac{1}{n}\sum_{i=1}^{n}(x_{i}-\bar{x})^{2} } \right)^{2}} pd=(n1∑i=1n(xi−xˉ)2)2n1∑i=1n(xi−xˉ)3
- 若 p d = 0 p_{d}=0 pd=0,数据分布左右对称,众数,中位数和均值比较一致(正态分布的偏度 p d = 0 p_{d}=0 pd=0)
- 若 p d > 0 p_{d}>0 pd>0,数据分布右偏态,(数据位于均值左边的比右边的多)
- 若 p d < 0 p_{d}<0 pd<0,数据分布左偏态,(数据位于均值右边的比左边的多)
- 峰度:衡量数据分布尖峭程度和(或)尾部粗细程度的指标
f d = 1 n ∑ i = 1 n ( x i − x ˉ ) 4 ( 1 n ∑ i = 1 n ( x i − x ˉ ) 2 ) 2 f_{d}=\frac{\frac{1}{n}\sum_{i=1}^{n}(x_{i}-\bar{x})^{4}}{\left( \sqrt{ \frac{1}{n}\sum_{i=1}^{n}(x_{i}-\bar{x})^{2} } \right)^{2}} fd=(n1∑i=1n(xi−xˉ)2)2n1∑i=1n(xi−xˉ)4
- 正态分布的峰度 f d = 3 f_{d}=3 fd=3
- 若 f d > 3 f_{d}>3 fd>3,数据分布尖峭和(或)后尾
- 若 f d < 3 f_{d}<3 fd<3,数据分布矮胖和(或)细尾
Matlab程序实现(偏度与峰度)
- 偏度命令skewness:
s = skewness(x)
其中,输入x为样本数据,输出s为样本偏度
- 峰度命令kurtosis:
k = kurtosis(x)
其中,输入x为样本数据,输出k为样本峰度
Matlab程序实现
rng('default')
x1 = normrnd(0, 1, 1, 100); %生成标准正态分布1x100随机数
x2 = frnd(1, 5, 1, 100); %生成F(1,5)分布1x100随机数
%偏度
s_n = skewness(x1)
s_f = skewness(x2)
%峰度
k_n = kurtosis(x1)
k_f = kurtosis(x2)
常见概率分布的实现
基础知识
连续型随机变量的概率密度函数 p ( x ) p(x) p(x),满足
p ( x ) > 0 , 且 , ∫ − ∞ ∞ p ( x ) = 1 p(x)>0,且,\int_{-\infty}^{\infty}p(x)=1 p(x)>0,且,∫−∞∞p(x)=1
由概率密度函数 p ( x ) p(x) p(x)可以定义概率分布函数
F ( x ) = ∫ − ∞ x p ( t ) d t F(x)=\int\limits_{-\infty}^{x}p(t)dt F(x)=−∞∫xp(t)dt
- F ( x ) F(x) F(x)单调不减
- 0 ≤ F ( x ) ≤ 1 0\le F(x)\le 1 0≤F(x)≤1
- F ( − ∞ ) = 0 , F ( ∞ ) = 1 F(-\infty)=0,F(\infty)=1 F(−∞)=0,F(∞)=1
对应给定的 F i ∈ [ 0 , 1 ] F_{i}\in [0,1] Fi∈[0,1],求 x i x_{i} xi使得 F ( x i ) = F i F(x_{i})=F_{i} F(xi)=Fi,即逆分布函数问题
x i = F − 1 ( F i ) x_{i}=F^{-1}(F_{i}) xi=F−1(Fi)
离散型随机变量的分布律,概率分布函数
常见概率分布函数及其实现
常见的几种概率分布
正态分布:norm
指数分布:exp
泊松分布:poiss
β \beta β分布:beta
weibull分布:weib
x 2 x^{2} x2分布:chi2
t分布:t
F分布:F
需要实现的几种函数功能
概率密度函数:pdf
概率分布函数:cdf
逆概率分布函数:inv
随机数生成函数:rnd
密度函数
正态分布 N ( m u , s i g m a 2 ) N(mu, sigma^{2}) N(mu,sigma2)
p = normpdf(x, mu, sigma)
x,自变量
mu,均值
sigma,标准差
函数功能:求正态分布在x点处的概率密度函数值
- 例
画出正态分布 N ( 0 , 1 ) N(0, 1) N(0,1)和 N ( 0 , 2 2 ) N(0, 2^{2}) N(0,22)的概率密度函数图形
x = -6:0.01:6;
y = normpdf(x); %mu=0,sigma=1时可以省略
z = normpff(x, 0.2);
plot(x, y, 'b:', x, z, 'r-')
x,为-6到6的一个等差数列,公差是0.01
y,是x向量每一个点处的标准正态分布的概率密度函数值
z,是均值是0,标准差是2的,x向量每一个点处的正态分布的概率密度函数值
plot,可视化
概率分布函数
P = normcdf(x, mu, sigma)
函数功能:给定x,求概率 P = P ( X ≤ x ) P=P(X\le x) P=P(X≤x)
- 例
假设正态分布 X ∼ N ( 0 , 1 ) X \sim N(0, 1) X∼N(0,1),求概率 P ( − 1 < x < 1 ) = F ( 1 ) − F ( ∗ 1 ) P(-1<x<1)=F(1)-F(*1) P(−1<x<1)=F(1)−F(∗1)
P = normcdf(1) - normcdf(-1)
得P=0.6827
逆概率分布函数
x = norminv(P, mu, sigma)
函数功能:给定概率P,求x使得 P ( X ≤ x ) = P P(X\le x)=P P(X≤x)=P
- 例
求标准正态分布的上 α \alpha α分位点 μ a ( α = 0.05 ) \mu_{a}(\alpha=0.05) μa(α=0.05)
u = norminv(1-0.05, 0, 1)
得u = 1.6449
随机数生成
x = normrnd(mu, sigma, m, n)
函数功能:生成mxn的服从 N ( m u , s i g m a 2 ) N(mu, sigma^{2}) N(mu,sigma2)的随机数矩阵
- 例
产生2x3的服从正态分布 N ( 1 , 3 2 ) N(1, 3^{2}) N(1,32)的随机数矩阵
x = normrnd(1, 3, 2, 3)
- 均值为1
- 标准差为3
- 生成2行3列对应的随机数矩阵
得
x =
0.3851 5.4691 5.2516
0.6276 5.2271 3.0145
Matlab更多分布选择
'beta','bino','chi2','exp','ev','f','gam','gev',
'gp','geo','hyge','logn','nbin','ncf','nct','ncx2',
'norm','poiss','rayl','t','unif','unid','wbl'
随机分布函数功能的实现称为专用函数方式
通用函数方式实现
- 概率密度函数
pdf('name', x, param)
name,指定分布
x,自变量
param,分布对应的参数
函数功能:实现参数为param的name分布在x点的概率密度函数值
- 概率分布函数
cdf('name', x, param)
函数功能:实现参数为param的name分布在x点的概率分布函数值
- 逆概率分布函数
icdf('name', p, param)
函数功能:实现参数为param的name分布在p点的逆概率分布函数值
- 随机数生成函数
random('name', param, m, n)
函数功能:实现服从参数为param的name分布的随机数(mxn)