从这部分开始,我们进入一个新部分——数学建模中的数据处理和统计分析。
数理统计研究的对象是受随机因素影响的数据,以下数理统计就简称统计,统计是以概率论为基础的一门应用学科。
数据样本少则几个,多则成千上万,人们希望能用少数几个包含其最多相关信息的数值来体现数据样本总体的规律。描述性统计就是搜集、整理、加工和分析统计数据,使之系统化、条理化,以显示出数据资料的趋势、特征和数量关系。它是统计推断的基础,实用性较强,在统计工作中经常使用。
面对一批数据如何进行描述与分析,需要掌握参数估计和假设检验这两个数理统计的最基本方法。
我们将用 Matlab 的统计工具箱(Statistics Toolbox)来实现数据的统计描述和分析。
1.统计的基本概念
1.1.总体和样本
总体是人们研究对象的全体,又称母体,如工厂一天生产的全部产品(按合格品及废品分类),学校全体学生的身高。
总体中的每一个基本单位称为个体,个体的特征用一个变量(如)来表示,如一件产品是合格品记,是废品记;一个身高170的学生记。
从总体中随机产生的若干个个体的集合称为样本,或子样,如件产品,100名学生的身高,或者一根轴直径的10次测量。实际上这就是从总体中随机取得的一批数据,不妨记做,称为样本容量。
1.2.频数表和直方图
一组数据(样本)往往是杂乱无章的,做出它的频数表和直方图,可以看作是对这组数据的一个初步整理和直观描述。
将数据的取值范围划分为若干个区间,然后统计这组数据在每个区间中出现的次数,称为频数,由此得到一个频数表。以数据的取值为横坐标,频数为纵坐标,画出一个阶梯形的图,称为直方图,或频数分布图。
若样本容量不大,能够手工做出频数表和直方图,当样本容量较大时则可以借助Matlab这样的软件了。让我们以下面的例子为例,介绍频数表和直方图的作法。
例1 学生的身高和体重
学校随机抽取 100 名学生,测量他们的身高和体重,所得数据如表:
(1)数据输入
数据输入通常有两种方法,一种是在交互环境中直接输入,如果在统计中数据量比较大,这样作不太方便;另一种办法是先把数据写入一个纯文本数据文件data.txt中,数据列之间用空格和Tab键分割,之后以data.txt为文件名存放在某个子目录下,用Matlab中的load命令读入数据,具体做法是:
先把txt文件移入Matlab的工作文件夹中,之后在Matlab命令行或脚本中输入:
load data.txt
这样就在内存中建立了一个变量data它是一个包含有个数据的矩阵。
为了得到我们需要的100个身高和体重均为一列的数据,我们对矩阵做如下处理:
high=data(:,1:2:9);high=high(:)
weight=data(:,2:2:10);weight=weight(:)
(2)作频数表及其直方图
求频数用hist函数实现,其用法是:
[N,X] = hist(Y,M)
得到数组(行列均可)的频数表。它将区间等分为份(缺省时为10),返回个小区间的频数,返回个小区间的中点。
同样的一个函数名hist还可以用来画出直方图。
对于本例的数据,可以编写如下程序画出数据的直方图。
load data.txt;
high=data(:,1:2:9);high=high(:);
weight=data(:,2:2:10);weight=weight(:);
[n1,x1]=hist(high)
%下面语句与hist命令等价
%n1=[length(find(high<158.1)),...
% length(find(high>=158.1&high<161.2)),...
% length(find(high>=161.2&high<164.5)),...
% length(find(high>=164.5&high<167.6)),...
% length(find(high>=167.6&high<170.7)),...
% length(find(high>=170.7&high<173.8)),...
% length(find(high>=173.8&high<176.9)),...
% length(find(high>=176.9&high<180)),...
% length(find(high>=180&high<183.1)),...
% length(find(high>=183.1))]
[n2,x2]=hist(weight)
subplot(1,2,1), hist(high)
subplot(1,2,2), hist(weight)
得直方图如下:
1.3.统计量
假设有一个容量为的样本(即一组数据),记作,需要对它进行一定的加工,才能提出有用的信息,用作对总体(分布)参数的估计和检验。 统计量就是加工出来的、反映样本数量特征的函数,它不含任何未知量。
下面我们介绍几种常用的统计量。
1.3.1.表示位置的统计量——算术平均值和中位数
算术平均值(简称均值)描述数据取值的平均位置,记作,
中位数是将数据由小到大排序后位于中间位置的那个数值。
Matlab 中 mean(x)返回 x 的均值,median(x)返回中位数。
1.3.2.表示变异程度的统计量——标准差,方差和极差
标准差定义为:
它是各个数据与均值偏离程度的度量,这种偏离不妨称为变异。
方差是标准差的平方。
极差是的最大值与最小值之差。
Matlab 中 std(x)返回 x 的标准差,var(x)返回方差,range(x)返回极差。
你可能注意到标准差 s 的定义(2)中,对的平方求和却被除,这是出于无偏估计的要求。若需要改为被除,Matlab 可用 std(x,1)和 var(x,1)来实现。
1.3.3中心矩、表示分布形状的统计量——偏度和峰度
随机变量的阶中心距为。
随机变量的偏度和峰度指的是的标准化变量的三阶中心矩和四阶中心矩:
偏度反映分布的对称性,称为右偏态,此时数据位于均值右边的比位于左边的多;称为左偏态,情况相反;而接近 0 则可认为分布是对称的。
峰度是分布形状的另一种度量,正态分布的峰度为 3,若比 3 大得多,表示分布有沉重的尾巴,说明样本中含有较多远离均值的数据,因而峰度可以用作衡量偏离正态分布的尺度之一。
Matlab 中 moment(x,order)返回 x 的 order 阶中心矩,order 为中心矩的阶数。skewness(x)返回 x 的偏度,kurtosis(x)返回峰度。
在以上用 Matlab 计算各个统计量的命令中,若 x 为矩阵,则作用于 x 的列,返回一个行向量。
对例1给出的学生身高和体重,用Matlab 计算这些统计量,程序如下:
load data.txt;
high=data(:,1:2:9);high=high(:);
weight=data(:,2:2:10);weight=weight(:);
shuju=[high weight];
jun_zhi=mean(shuju)
zhong_wei_shu=median(shuju)
biao_zhun_cha=std(shuju)
ji_cha=range(shuju)
pian_du=skewness(shuju)
feng_du=kurtosis(shuju)
统计量中最重要、最常用的是均值和标准差,由于样本是随机变量,它们作为样本的函数自然也是随机变量,当用它们去推断总体时,有多大的可靠性就与统计量的概率分布有关,因此我们需要知道几个重要分布的简单性质。
1.4.统计中几个重要的概率分布
1.4.1.分布函数,密度函数和分位数
随机变量的特性完全由它的(概率)分布函数或(概率)密度函数来描述。设有随机变量,其分布函数定义为的概率,即。若是连续型随机变量,则其密度函数与的关系为:
上 分位数是下面常用的一个概念,其定义为:对于,使某分布函数的,称为这个分布的上分位数,记作。
我们前面画过的直方图是频数分布图,频数除以样本容量,称为频率,充分大时频率是概率的近似,因此直方图可以看作密度函数图形的(离散化)近似。
1.4.2.统计中几个重要的概率分布
1.4.2.1.正态分布
正态分布随机变量的密度函数曲线呈中间高两边低、对称的钟形,期望(均值),方差,记做,称均方差或标准差,当时称为标准正态分布,记作。正态分布完全由均值和方差决定,它的偏度为 0,峰度为 3。
正态分布可以说是最常见的(连续型)概率分布,成批生产时零件的尺寸,射击中弹着点的位置,仪器反复量测的结果,自然界中一种生物的数量特征等,多数情况下都服从正态分布,这不仅是观察和经验的总结,而且有着深刻的理论依据,即在大量相互独立的、作用差不多大的随机因素影响下形成的随机变量,其极限分布为正态分布。
鉴于正态分布的随机变量在实际生活中如此地常见,记住下面 3 个数字是有用的:
68%的数值落在距均值左右 1 个标准差的范围内,即
95%的数值落在距均值左右 2 个标准差的范围内,即
99.7%的数值落在距均值左右 3 个标准差的范围内,即
1.4.2.2.分布
若为相互独立的、服从标准正态分布的随机变量,则它们的平方和服从分布,记作,称为自由度,它的期望,方差。
1.4.2.3.分布
若,且相互独立,则服从分布,记作称自由度。
分布的密度函数曲线和曲线形状相似。理论上时,,实际上当时它与就相差无几了。
1.4.2.4.分布
若,且相互独立,则服从分布,记作称自由度。
1.4.3.Matlab统计工具箱(Toolbox\Stats)中的概率分布
Matlab统计工具箱中有27种概率分布,这里只对上面所述4中分布列出命令的字符:
字符 | 分布 |
---|---|
norm | 正态分布 |
chi2 | 分布 |
t | 分布 |
f | 分布 |
工具箱对每一种分布都提供五类函数,其命令的字符是:
字符 | 作用 |
---|---|
概率密度 | |
cdf | 分布函数 |
inv | 分布函数的反函数(用来求分位数) |
stat | 均值和方差 |
rnd | 随机数生成 |
当需要一种分布的某一种函数时,将以上所列的分布命令字符与函数命令字符接起来,并输入自变量(可以是标量、数组或矩阵)和参数就行了,如:
函数 | 说明 |
---|---|
p=normpdf(x,mu,sigma) | 均值 mu、标准差 sigma 的正态分布在 x 的密度函数(mu=0,sigma=1 时可缺省)。 |
p=tcdf(x,n) | t 分布(自由度 n)在 x 的分布函数。 |
x=chi2inv(p,n) | 分布(自由度 n)使分布函数的(即分位数) |
[m,v]=fstat(n1,n2) | 分布(自由度)的均值和方差 |
1.5.正态总体统计量的分布
用样本来推断总体,需要知道样本统计量的分布,而样本又是一组与总体同分布的随机变量,所以样本统计量的分布依赖于总体的分布。当总体服从一般的分布时,求某个样本统计量的分布是很困难的,只有在总体服从正态分布时,一些重要的样本统计量(均值、标准差)的分布才有便于使用的结果。另一方面,现实生活中需要进行统计推断的总体,多数可以认为服从(或近似服从)正态分布,所以统计中人们在正态总体的假定下研究统计量的分布,是必要的与合理的。
设总体,为一容量的样本,其均值和标准差由式(1),(2)确定,则用和构造的下面两个分布在统计中是非常有用的。
或
设有两个总体和,及由容量分别为的两个样本确定的均值和标准差,则:
其中:
且要求