Stata统计分析从入门到精通

第2章 描述性统计与图形绘制

2.1 定距变量的描述性统计、正态性检验和数据转换

在进行数据分析时,当研究者得到的数据量很小时,可以通过直接观察原始数据来获得所有的信息。但是,当得到的数据量很大时,就必须借助各种描述性指标来完成对数据的描述工作。用少量的描述性指标来概括大量的原始数据,对数据展开描述的统计分析方法被称为描述性统计分析。变量的性质不同,Stata描述性分析处理的方式也不一样。本节将要介绍的描述统计分析方法包括定距变量的描述性统计、正态性检验和数据转换等。下面一一介绍这几种方法的应用。

2.1.1 常用的描述性统计指标的基本概念

1.均值、中位数、众数、百分位数

(1)均值

Stata中的均值指的是简单算术平均数,计算公式为:

(2)中位数

中位数是将整个统计变量的各个变量值按大小顺序排列,处在数列中间位置的那个变量值就是中位数。在数据未分组的情况下,将各变量值按大小顺序排列后,首先确定中位数的位置,可用公式确定,n代表总体统计变量的项数;然后根据中点位置确定中位数。有两种情况:当n为奇数项时,中位数就是位于中间位置的那个变量值;当n为偶数项时,中位数就是位于中间位置的两个变量值的简单算术平均数。

(3)众数

众数是某一变量出现次数最多的样本观测值。

(4)百分位数

如果将一组数据从小到大排序,并计算相应的累计百分位,则某一百分位所对应数据的值就称为这一百分位的百分位数。例如处于10%位置的值称为第10百分位数。最为常用的是四分位数,指的是将数据分为4等份,分别位于25%、50%和75%处的百分位数。百分位数适用于定序数据及更高级的数据,不能用于定类数据。百分位数的优点是不受极端值的影响。

2.方差、标准差、均值标准误差

(1)方差、标准差

方差是总体统计变量中各个单位变量值与其算术平均数的离差平方的算术平均数,用2σ表示,方差的平方根就是标准差σ。与方差不同的是,标准差是具有量纲的,它与变量值的计量单位相同,其实际意义要比方差清楚。因此,在对社会经济现象进行分析时,往往更多地使用标准差。

方差和标准差的计算公式为:

在正态分布中,68%的个案在均值的一倍标准差范围内,95%的个案在均值的两倍标准差范围内。例如,如果一组数据服从正态分布,且均值为100,标准差为10,则68%的个案将处于90~110,95%的个案将处于80~120。

(2)均值标准误差

一个容易与标准差混淆的统计量是均值标准误差,均值标准误差是样本均值的标准差,是描述样本均值和总体均值平均偏差程度的统计量,也是表示抽样误差大小的指标。

3.最大值、最小值、极差、变异系数

(1)最大值、最小值、极差

最大值即样本数据中取值最大的数据,最小值即样本数据中取值最小的数据。最大值与最小值的差即为极差,又称范围、全距,以R表示:

(2)变异系数

变异系数是将标准差或平均差与其平均数对比所得的比值,又称离散系数。计算公式为:

VσVD分别表示标准差系数和平均差系数。变异系数可用于比较不同数列的变异程度。其中常用的变异系数是标准差系数。

4.偏度、峰度

偏度是对分布偏斜方向及程度的测度,用来度量分布的不对称性。正态分布是对称的,偏度值为0。具有显著正偏度值的分布有很长的右尾,具有显著的负偏度的分布有很长的左尾。一般情况下,如果计算的偏度值超过其标准误的两倍,则认为该组数据不具有对称性。

偏度的计算公式为:

峰度是频数分布曲线与正态分布相比较,其顶端的尖峭程度。在Stata中,正态分布的峰度统计量的值为2,大于2的峰度值表示相对于正态分布,观测值更为集中在均值附近,体现为分布峰度更尖,尾部更薄。小于2的峰度值表示相对于正态分布,观察值更为分散,分布峰度较低,尾部较厚。

峰度的计算公式为:

5.Z标准化得分

Z标准化得分是某一数据与均值的距离以标准差为单位的测量值。计算公式为:

Zi 即为Xi的Z标准化得分。标准化值不仅能表明各原始数据在一组数据分布中的相对位置,而且能在不同分布的各组原始数据之间进行比较,所以常用于统一量纲差距,在回归分析、聚类分析中应用较多。

2.1.2 定距变量的描述性统计

下载资源:\video\第2章\…

下载资源:\sample\第2章\数据2A

数据分析中的大部分变量都是定距变量,通过进行定距变量的基本描述性统计,我们可以得到数据的概要统计指标,包括均值、最大值、最小值、标准差、百分位数、中位数、偏度系数和峰度系数等。数据分析者通过获得这些指标,可以从整体上对拟分析的数据进行宏观把握,从而为后续进行更深入的数据分析做好必要的准备。

关于定距变量的描述性统计,常用到summarize、tabstat、ci等操作命令。

summarize 命令的语法格式为:

summarize [varlist] [if] [in] [weight] [,options]

summarize的功能是计算并显示各种单变量摘要统计信息。[varlist]为变量列表,如果没有指定varlist,则计算数据集中所有变量的汇总统计信息。[if]为条件表达式,[in]用于设置样本范围,[weight]用于设置权重,[,options]用于设置可选项。summarize命令的[,options]可选项及其含义如表2.1所示。

表2.1 summarize命令的[,options]可选项及其含义

tabstat命令的语法格式为:

tabstat varlist [if] [in] [weight] [,options]

tabstat的功能是在一个表中显示一系列数字变量的汇总统计信息,允许用户指定要显示的统计信息列表,而且统计数据可以根据另一个变量来计算,所以在统计数据和表格格式方面都具有很大的灵活性。[varlist]为变量列表,如果没有指定varlist,则计算数据集中所有变量的汇总统计信息。[if] 为条件表达式,[in]用于设置样本范围,[weight]用于设置权重,[,options]用于设置可选项。tabstat命令的[,options]选项及其含义如表2.2所示。

表2.2 tabstat命令的[,options]可选项及其含义

ci 的功能是计算总体均值、比例、方差和标准差的置信区间。命令包括5种,分别为:

均值的置信区间,正态分布:

ci means [varlist] [if] [in] [weight] [,options]

均值的置信区间,泊松分布:

ci means [varlist] [if] [in] [weight], poisson [exposure(varname) options]

比例的置信区间:

ci proportions [varlist] [if] [in] [weight] [,prop_options options]

方差的置信区间:

ci variances [varlist] [if] [in] [weight] [,bonett options]

标准差的置信区间:

ci variances [varlist] [if] [in] [weight], sd [bonett options]

下面以“数据2A”数据文件为例进行说明,在“数据2A”中设置了两个变量,分别是province和amount,数据如图2.1所示。

图2.1 “数据2A”数据文件的内容

打开上述数据文件之后,在主界面的命令窗口中依次输入以下命令:

summarize amount

本命令的含义是获取amount变量的主要描述性统计量。在Stata 16.0主界面的结果窗口中可以看到如图2.2所示的分析结果。通过观察分析结果,我们可以对 amount变量的整体情况有一个初步的了解。从分析结果可以看出,有效观测样本共有31个,样本的均值为1180.489,样本的标准差是903.5561,样本的最小值是17.6987,样本的最大值是3609.642。

图2.2 描述性统计分析结果图1

summarize amount,detail

本命令的含义是获取amount变量的详细统计量,分析结果如图2.3所示。

图2.3 描述性统计分析结果图2

(1)百分位数(Percentiles)

可以看出数据的第1个四分位数(25%)是550.1556,数据的第2个四分位数(50%)是891.1902,数据的第3个四分位数(75%)是1324.61。数据的百分位数的含义是低于该数据值的样本在全体样本中的百分比。例如,本例中25%分位数的含义是全体样本中有25%的数据值低于550.1556。

(2)4个最小值(Smallest)

本例中,最小的4个数据值分别是17.6987、133.7675、337.2368、462.9585。

(3)4个最大值(Largest)

本例中,最大的4个数据值分别是3609.642、3313.986、2941.067、2471.438。

(4)均值(Mean)和标准差(Std. Dev)

与前面的分析结果一样,样本数据的均值为1180.489,样本数据的标准差是903.5561。

(5)偏度(Skewness)和峰度(Kurtosis)

偏度的概念是表示不对称的方向和程度。如果偏度值大于0,那么数据就具有正偏度(右边有尾巴);如果偏度值小于0,那么数据就具有负偏度(左边有尾巴);如果偏度值等于0,那么数据将呈对称分布。本例中,数据偏度为1.309032,为正偏度但不大。

峰度的概念用来表示尾重,是与正态分布结合在一起进行考虑的。正态分布是一种对称分布,它的峰度值正好等于3,如果某数据的峰度值大于3,那么该分布将会有一个比正态分布更长的尾巴;如果某数据的峰度值小于3,那么该分布将会有一个比正态分布更短的尾巴。本例中,数据峰度为3.889152,有一个比正态分布更长的尾巴。

提示

本书以介绍Stata的命令为主,但此处我们借助本案例讲解一下Stata操作的菜单实现和程序实现,供读者参考。

1)上述命令可以通过菜单来实现,具体操作是打开数据文件后,在主界面菜单栏选择“数据|描述数据|摘要统计”,即可弹出如图2.4所示的对话框。

我们在对话框的“变量”中选择“amount”,选项中选择“输出其他统计量”,其他的设置采用系统默认设置,然后单击“确定”按钮,即可弹出与“图2.3 描述性统计分析结果图2”一样的结果。

2)上述命令也可以通过程序实现,在通过命令方式或者菜单方式运行结束后,在主界面“历史窗口”中右击,在弹出的右键菜单中选择“全部保存”,如图2.5左图所示,然后保存类型为do文件,并输入do文件名称,下次启动时,直接在主界面的菜单中选择“文件|do文件”,如果2.5右图所示,找到文件路径和文件名,运行即可。这一方式在批量保存并运行多条命令时尤为有用,不用再逐条输入,大大节省了时间和工作量。

图2.4“summarize -摘要统计量”对话框

图2.5 Stata操作的程序实现方式

tabstat amount,stats(mean range sum var)

本命令的含义是获取amount变量的平均数、总和、极差、方差等统计指标,分析结果如图2.6所示。该样本数据的均值是1180.489,极差是3591.944,总和是36595.15,方差是816413.7。

图2.6 描述性统计分析结果图3

统计量与其对应的命令代码如表2.3所示。

表2.3 统计量与其对应的命令代码

tabstat amount,stats(mean range sum var) by(province)

本命令的含义是按province分类列出amount变量的概要统计指标,分析结果如图2.7所示。

图2.7 描述性统计分析结果图4

ci means amount,level(98)

本命令的含义是创建amount变量总体均值98%置信水平的置信区间,分析结果如图2.8所示。

图2.8 描述性统计分析结果图5

基于本例中的观测样本,我们可以推断出总体的98%水平的置信区间。也就是说,我们有98%的信心可以认为数据总体的均值会落在[781.7159,1579.262]中,或者说,数据总体的均值落在区间[781.7159,1579.262]的概率是98%。读者可以根据具体需要通过改变命令中括号里面的数字来调整置信水平的大小。

2.1.3 正态性检验和数据转换

下载资源:\video\第2章\…

下载资源:\sample\第2章\数据2B

随着科技的不断发展和计算方法的不断改进,学者们探索出了很多统计分析方法和分析程序。但是有相当多的统计程序对数据要求比较严格,它们只有在变量服从或者近似服从正态分布的时候才是有效的,所以在对整理收集的数据进行预处理的时候需要对它们进行正态检验,如果数据不满足正态分布假设,就要对数据进行必要的转换。数据转换分为线性转换与非线性转换两种。

关于正态性检验和数据转换,常用到sktest、ladder、gladder、qladder等操作命令。

sktest命令的语法格式为:

sktest varlist [if] [in] [weight] [,noadjust]

对于varlist中的每个变量,sktest给出了一个基于偏度的正态性检验和另一个基于峰度的正态性检验,然后将这两个检验合并成一个整体检验统计量。需要提示的是,sktest至少需要8个样本观测值才能进行计算。varlist为需要进行正态性检验的变量列表,[if]为条件表达式,[in]用于设置样本范围,[weight]用于设置权重,[,noadjust]用于抑制Royston(1991)对总体卡方及其显著性水平所做的经验调整,呈现D'Agostino所描述的未改变检验。

ladder命令的语法格式为:

ladder varname [if] [in] [,generate(newvar) noadjust]

ladder的功能在于搜索幂级数的子集(Tukey 1977),尝试幂阶梯上的每一种幂并逐个反馈结果是否显著地为正态或者非正态,使用户可以非常方便地找到将变量(varname)转换为正态分布变量的有效转换方式。varname为需要进行正态转换的变量,[if]为条件表达式,[in]用于设置样本范围,[weight]用于设置权重,[,generate(newvar)]保存与表中最小卡方值对应的转换值,但不推荐使用generate(),因为这仅仅是字面意义上的解释最小值,从而会忽略几乎相等但可能更可解释的变换。[,noadjust]用于抑制Royston(1991)对总体卡方及其显著性水平所做的经验调整,呈现D'Agostino所描述的未改变检验。

gladder的功能在于根据ladder变换的结果展示出9个变换的直方图,从而可以更直观地看出幂阶梯和正态分布检验有效结合的结果。gladder命令的语法格式为:

gladder varname [if] [in] [,histogram_options combine_options]

qladder与gladder类似,区别是qladder显示varname变换的分位数,根据幂级数与正态分布的分位数进行比较。qladder命令的语法格式为:

qladder varname [if] [in] [,qnorm_options combine_options]

varname为需要进行正态转换的变量,[if]为条件表达式,[in]用于设置样本范围,[,histogram_options combine_options]为可选项。

下面以“数据2B”数据文件为例进行说明,“数据2B”中设置了两个变量,分别是province和amount,其中的数据如图2.9所示。

图2.9 “数据2B”中的数据内容

打开上述数据文件之后,在主界面的命令窗口中依次输入以下命令:

sktest amount

本命令的含义是对该数据进行正态分布检验,检验结果如图2.10所示。sktest命令拒绝了数据呈正态分布的原始假设。从偏度上看,Pr(Skewness)为0.0065,小于0.05,拒绝正态分布的原假设;从峰度上看,Pr(Kurtosis)为0.0804,大于0.05,接受正态分布的原假设;但是把两者结合在一起考虑,从整体上看,Prob>chi2为0.0123,小于0.05,因而拒绝正态分布的原假设。

图2.10 对amount变量进行正态分布检验

generate sramount=sqrt(amount)

本命令的含义是对数据进行平方根变换,以获取新的数据。

sktest sramount

本命令的含义是获取新的数据sramount进行正态分布检验,检验结果如图2.11所示。sktest命令接受了数据呈正态分布的原始假设。从偏度上看,Pr(Skewness)为0.4418,大于0.05,接受正态分布的原假设;从峰度上看,Pr(Kurtosis)为0.9062,大于0.05,接受正态分布的原假设;把两者结合在一起考虑,从整体上看,Prob>chi2为0.7293,大于0.05,接受正态分布的原假设。

图2.11 sramount变量进行平方根变换后再进行检验

generate lamount=ln(amount)

本命令的含义是对数据进行自然对数变换,以获取新数据。

sktest lamount

本命令的含义是对获取的新数据lamount进行正态分布检验,检验结果如图2.12所示。

图2.12 lamount变量进行自然对数变换后再进行检验

通过观察分析图,我们可以比较轻松地得出分析结论。本例中,sktest命令接受了数据呈正态分布的原始假设。从偏度上看,Pr(Skewness)为0.0462,小于0.05,拒绝正态分布的原假设;从峰度上看,Pr(Kurtosis)为0.2609,大于0.05,接受正态分布的原假设;把两者结合在一起考虑,从整体上看,Prob>chi2为0.0774,大于0.05,接受正态分布的原假设。

我们在进行数据分析时,在对初始数据进行正态性检验后,可以利用前面2.1.2节讲述的相关知识得到关于数据偏度和峰度的信息,我们完全可以根据数据信息的偏态特征进行有针对性的数据变换。数据变换与其对应的Stata命令以及达到的效果如表2.4所示。

表2.4 数据变换与其对应的Stata命令以及达到的效果

ladder amount

本命令的含义是对amount变量运行ladder命令,ladder命令把幂阶梯和正态分布检验有效地结合到了一起,它尝试幂阶梯上的每一种幂并逐个反馈结果是否显著地为正态或者非正态分布。ladder命令的运行结果如图2.13所示。

图2.13 ladder命令的运行结果

在该结果中,我们可以看出,在95%的置信水平上,仅有平方根变换square root(P(chi2)= 0.729)以及自然对数变换log(P(chi2)= 0.077)是符合正态分布的,其他幂次的数据变换都不能使数据显著地呈现正态分布。

gladder amount

本命令的含义是对amount变量运行gladder命令,gladder命令可以更直观地看出幂阶梯和正态分布检验有效结合的结果。gladder命令的运行结果如图2.14所示。

图2.14 gladder命令的运行结果

从运行结果中可以看出,每种转换的直方图与正态分布曲线,都与ladder命令运行结果得出的结论是一致的。

qladder amount

本命令的含义是对amount变量运行qladder命令,qladder显示varname变换的分位数,根据幂级数与正态分布的分位数进行比较。

qladder命令的运行结果如图2.15所示。

图2.15 qladder命令的运行结果

qladder显示的是varname变换的分位数,根据幂级数与正态分布的分位数进行比较。