应用Stata在计量回归之前,你真的会进行数据清理么? 您所在的位置:网站首页 数据清理例子 应用Stata在计量回归之前,你真的会进行数据清理么?

应用Stata在计量回归之前,你真的会进行数据清理么?

#应用Stata在计量回归之前,你真的会进行数据清理么?| 来源: 网络整理| 查看: 265

为什么要做数据清理呢?因为90%以上的原始数据因为各种原因都存在错误。如果在数据分析前,没有把这些问题清理好,很有可能导致后面数据分析不出真实的结果。数据清理就是把“脏”的“清理掉”,指发现并纠正数据文件中可识别的错误的最后一道程序,包括检查数据一致性,处理无效值和缺失值等。数据清理是对数据进行重新审查和校验的过程,目的在于删除重复信息、纠正存在的错误,并提供数据一致性,然后进行必要的权重调整等,以满足后续的计量回归的需要。目前国内各大研究机构释放出来的数据很多,如CHNS、CGSS、CFPS、CHFS等等,那么数据清理需要进行哪些步骤呢?

数据清理第一步:整体数据查看

一、读取数据――数据转码Unicode

比如常见的我们在stata14进行数据读取时,结果是乱码。然后用Unicode analyze 对其进行分析,结果说该文件需要进行Unicode translate。此时,关键是要设对需要转换文件的原始编码类型。例如,如果原始数据中变量标签为中文,用stata14打开时,变量标签无法识别。此时,需要设定编码类型。命令为 Unicodeencoding set gb18030,即设定编码类型为国标18030,即简体中文。然后,用Unicode analyze filename. dta 分析文件是否需要转换,如结果为需要,那么继续用Unicode translate filename. dta来转换数据文件中不可识别的中文汉字。成功以后,原始数据中不能识别的中文则可以在stata14中识别了。

其实,在实际数据读取过程中,我们只是偶然会遇到这种情况。更多的情况是各种不同数据格式之间的转换,比如一些数据库的原始数据是SAS数据或者SPSS数据甚至直接就是Excel数据,此时我们需要转换成Stata可以读取的dta格式,这里Excel数据可以用Stata软件直接转换,其他的推荐Stata translate软件进行转换。

二、查看识别变量――isid、duplicates

重复记录是数据清理中一个非常常见的问题,可能就是因为该问题太常见了,所以Stata开发了一整套识别、描述和移除重复记录的命令。

一般而言,每个数据集都有唯一一个识别每条记录的识别符(重复测量的长型数据除外)。Stata检查唯一识别符是否唯一的命令为isid(或许是is this an ID的缩写)。isid允许同时检查多个唯一识别符,如果没有返回值,就说明是唯一的(没有消息就是好消息);如果不唯一,就会出现红色提示variable *** does not uniquely identify the observations。如采用下面例子中的查重方式:

640.webp (3).jpg 2019-1-20 13:49:58 上传 下载附件 (44.78 KB)

如果出现重复记录就需要详细查看重复记录的情况。深入检查数据集重复记录的Stata命令为duplicates,对应的Stata菜单操作方式为Data → Data utilities → Manageduplicate observations。Stata是这样描述duplicates命令的:duplicates命令用来报告、查看、标示和删除重复记录。具体应用,大家可以在Stata软件命令栏中输入help duplicates查看。

数据清理第二步:变量清理

一、数据的逻辑清理

在数据清理时,我们会根据常识及专业知识对连续变量间的关系进行核对,以识别可能的错误。如调查对象的出生日期应小于或等于调查日期(常识),妇女的生育年龄肯定不能小于月经初潮年龄(专业知识)。还有一些具有经济意义的数据,如个人年消费总额肯定不能为负,数据样本中我国省级行政单位数目肯定不能超过34等等。这些需要学术研究者认真研究和比对,可以采用list命令列举的方式,或者scatter命令看散点图等简单处理后运用专业知识或者常识来判别。

二、缺失值的识别与处理

对于调查数据来说,缺失值是司空见惯的。缺失值的产生的原因多种多样,主要分为机械原因和人为原因。机械原因是由于机械原因导致的数据收集或保存的失败造成的数据缺失,比如数据存储的失败,存储器损坏,机械故障导致某段时间数据未能收集(对于定时数据采集而言)。人为原因是由于人的主观失误、历史局限或有意隐瞒造成的数据缺失,比如,在市场调查中被访人拒绝透露相关问题的答案,或者回答的问题是无效的,数据录入人员失误漏录了数据每种缺失都会对统计分析产生不同的影响,数据清理时需要对每种缺失值采用不同的处理方式。那么,Stata中有哪些命令可以快速查看数据的缺失值呢?这里为大家简单介绍几个与查看缺失值相关的命令。

命令1:misstable

命令misstable可以快速查看变量的缺失值,它会以表格的形式呈现数据缺失的样本量,该命令的语法结构为:

misstable summarize[varlist][if][in][, summarize_options]

运行命令misstable和选项all可以直接输出指定变量串中所有变量的缺失情况。如果变量本身没有缺失值,表格结果显示为空;由于misstable只能识别数值型变量的缺失值,无法识别字符型变量的缺失值,所以,对于字符型变量来说,表格结果显示为“(string variable)”。

命令2:nmissing

nmissing是第三方用户写的命令,该命令的语法结构为:

nmissing [varlist] [if exp] [in range] [, min(#) obs piasm trim]

运行命令nmissing不仅可以给出指定变量串中的数值型变量的缺失值的个数,还可以给出字符型变量的缺失值的个数。选项min(#)可以显示缺失值个数超过#的变量及其缺失值情况。

命令3:mdesc

命令mdesc也是一个查看变量缺失情况的第三方命令,它的语法结构为:

mdescvarlist [if] [in] [, abbreviate(#) any all none]

该命令可以识别数值型变量和字符型变量,它不仅可以查看变量缺失值的样本量,还可以看其分布。

对于数据中的异常值,我们通常的处理方式有以下几种:

方法一:直接删除----适合缺失值数量较小,并且是随机出现的,删除它们对整体数据影响不大的情况。

方法二:使用一个全局常量填充---譬如将缺失值用“Unknown”等填充,但是效果不一定好,因为算法可能会把它识别为一个新的类别,一般很少用。

方法三:使用均值或中位数代替----优点:不会减少样本信息,处理简单。缺点:当缺失数据不是随机数据时会产生偏差.对于正常分布的数据可以使用均值代替,如果数据是倾斜的,使用中位数可能更好。

方法四:插补法

1)随机插补法----从总体中随机抽取某个样本代替缺失样本

2)多重插补法----通过变量之间的关系对缺失数据进行预测,利用蒙特卡洛方法生成多个完整的数据集,在对这些数据集进行分析,最后对分析结果进行汇总处理

3)热平台插补----指在非缺失数据集中找到一个与缺失值所在样本相似的样本(匹配样本),利用其中的观测值对缺失值进行插补。这样做的优点是:简单易行,准去率较高。缺点:变量数量较多时,通常很难找到与需要插补样本完全相同的样本。但我们可以按照某些变量将数据分层,在层中对缺失值实用均值插补

4)拉格朗日差值法和牛顿插值法(简单高效,数值分析里的内容)

方法五:建模法

可以用回归、使用贝叶斯形式化方法的基于推理的工具或决策树归纳确定。例如,利用数据集中其他数据的属性,可以构造一棵判定树,来预测缺失值的值。

以上方法各有优缺点,具体情况要根据实际数据分分布情况、倾斜程度、缺失值所占比例等等来选择方法。一般而言,建模法是比较常用的方法,它根据已有的值来预测缺失值,准确率更高

三、异常值的识别与处理

异常值(outlier)是指一组测定值中与平均值的偏差超过两倍标准差的测定值,与平均值的偏差超过三倍标准差的测定值,称为高度异常的异常值。通常面对样本时需要做整体数据观察,以确认样本数量、均值、极值、方差、标准差以及数据范围等。其中的极值很可能是异常值,此时如何处理异常值会直接影响数据结果。那么我们在Stata中应该如何识别异常值呢?

        方法一:简单的统计分析

拿到数据后可以对数据进行一个简单的描述性统计分析,譬如最大最小值可以用来判断这个变量的取值是否超过了合理的范围,如客户的年龄为-20岁或200岁,显然是不合常理的,为异常值。这种方法我们可以在Stata中summarize命令来实现。summarize命令用来计算及展示一组单变量的概要统计,若后面不指定变量,则计算当前数据集中所有变量的概要统计。若觉得某个变量的极值不符合常识,可选择detail选项,则显示变量的额外统计量,包括skewness、kurtosis、4个最小值、4个最大值,以及各种百分比。这就很容易以查看极值找到异常值。

方法二:简单画图

        我们也可以在Stata中采用scatter命令,通过画散点图的方法,直接观察是否存在异常值。

        方法三:箱形图

640.webp (2).jpg 2019-1-20 13:49:58 上传 下载附件 (49.59 KB)

box图分为四个分位点,75th和25th比较简单。

上四分位数Q3,又叫做升序数列的75%位点

下四分位数Q1,又叫做升序数列的25%位点

箱式图检验就是摘除大于Q3+3/2*(Q3-Q1),小于Q1-3/2*(Q3-Q1)外的数据,并认定其为异常值;

这里的具体操作过程,可以查看Stata中的graph box命令来更多了解。

       方法四:3δ原则

当数据服从正态分布:根据正态分布的定义可知,距离平均值3δ之外的概率为 P(|x-μ|>3δ)



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有