stata计量之前数据清洗的必备步骤

您所在的位置:网站首页 stata删除重复数据保留一条 stata计量之前数据清洗的必备步骤

stata计量之前数据清洗的必备步骤

2022-11-29 20:54| 来源: 网络整理| 查看: 265

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

一、查看识别变量--isid、duplicates

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

isid company //检查company是否唯一 isid company year //检查company year 是否唯一

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

*单变量 bys symbol: gen filter=_n //对相同id的数据从1到最后一条编号 keep if filter == 1 *多变量 sort date symbol by date symbol : gen set=_n //证券代码和date相同则编号:从1到 最后 keep if set==1 //date 和 证券代码相同的观测,只保留了一条记录 drop set save mystockdata_dropreplicate,replace *一行即可 duplicates drop year stkcd,force

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

一、缺失值的识别与处理

命令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]

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

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

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

Stata会区分缺失值:数值型变量缺失以点(.)表示,字符型变量确实以双引号("")表示,不要与空字符型变量(“ ”)搞混。

drop if provincename=="" //删除字符型变量

代码批量删除空缺值

foreach i in CF DIV C LEV TobinQ { drop if `i'==. }

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

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

方法四:插补法

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

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

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

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

方法五:建模法

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

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

三、异常值的识别与处理

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

方法一:简单的统计分析

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

二:简单画图

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

方法三:箱形图

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 办公设备维修网 版权所有 豫ICP备15022753号-3