楼主: SpencerMeng
6098 14

[学习心得] 揭秘缺失值 [推广有奖]

贵宾

Trade Economicist

已卖:6份资源

学科带头人

53%

还不是VIP/贵宾

-

TA的文库  其他...

Crush for Stata

International Trade With Stata

威望
1
论坛币
243792 个
通用积分
3690.4949
学术水平
536 点
热心指数
681 点
信用等级
441 点
经验
101515 点
帖子
2370
精华
0
在线时间
1798 小时
注册时间
2013-11-12
最后登录
2025-3-19

初级热心勋章 中级热心勋章 初级信用勋章

楼主
SpencerMeng 在职认证  发表于 2014-12-6 16:10:48 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

如果你的数据中存在缺失值,想必这一定令你寝食难安辗转反侧吧。那么,我们如何去填补这些缺失值呢?解决问题之前呢,应该先了解问题。


缺失值到底是什么值呢?

在有些命令中,如sum,regress,generate等,会自动忽略缺失值;而在有些命令中,如count,keep等,则会将缺失值视为一个无穷大的数值,因此在操作中需要引起你的注意。

随附例子:

  1. sysuse  auto,clear
  2. sort rep78
  3. list rep78
  4. sum rep78 if rep78>4    //obs=11
  5. count if rep78>4      //obs=16
  6. keep if rep78>4
  7. list rep78
复制代码

拿到一份数据,想看一下变量缺失情况,怎么办?

【命令】nmissing

  1. ssc install nmissing //先下载外部命令nmissing
  2. sysuse  auto,clear
  3. nmissing  //显示所有变量的缺失数目
  4. nmissing rep78  //显示变量rep78的缺失数目
复制代码

【命令】mdesc   介个更给力!!

  1. ssc install mdesc
  2. sysuse  auto,clear
  3. mdesc
复制代码


缺失值会影响我的回归分析,怎么删掉它呢?

Case1 如何删除一个变量的所有缺失值】

  1. sysuse auto,clear
  2. sum
  3. drop if rep78==.
  4. sum
复制代码

Case2 如何删除多个变量的缺失值  对比各种方法对比思考】

  1. sysuse auto,clear
  2. sum
  3. gen newvar=5
  4. replace newvar=. if mpg<20
  5. sum
  6. drop if rep78==. | newvar==.
  7. sum
复制代码
  1. sysuse auto,clear
  2. sum
  3. gen newvar=5
  4. replace newvar=. if mpg<20
  5. sum
  6. drop if rep78==. & newvar==.
  7. sum
复制代码
  1. sysuse auto,clear
  2. sum
  3. gen newvar=5
  4. replace newvar=. if mpg<20
  5. egen mis = rowmiss(_all)
  6. drop if mis   //或者drop if mis>0
复制代码

Case3   reg回归分析中】

  1. sysuse nlsw88.dta,clear
  2. sum
  3. reg wage industry occup tenure hours
  4. gen byte nomis = e(sample) //表示样本的虚拟变量
  5. sum wage industry occup tenure hours if (nomis==1)
  6. keep if nomis
复制代码

缺失值会影响我的回归分析,怎么补充呢?

Case1 缺失值较少,用前后项补充】

  1. sysuse auto,clear
  2. list rep78
  3. replace rep78=rep78[_n-1] if rep78==.  //用前一项补充
  4. list rep78

  5. sysuse auto,clear
  6. list rep78
  7. replace rep78=rep78[_n+1] if rep78==.  //用后一项补充
  8. list rep78
复制代码

Case2 某一年的数据缺失,用前后年平均值补充】

比如2001年的gdp数据缺失,那可以用20002002年的均值代替。

replace gdp=(l.gdp+f.gdp)/2 if year==2001  //llag的缩写;fforward的缩写

Case3 MIMA

多重补漏 multiple imputation和移动平均moving average,展开就复杂了,大家可以先下载资料学习着,这个日后补充。


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:缺失值 generate missing install regress generate count 如何

已有 3 人评分学术水平 热心指数 信用等级 收起 理由
starry9797 + 1 + 1 + 1 精彩帖子
Sunknownay + 2 + 2 + 2 精彩帖子
蓝色 + 5 + 5 + 5 精彩帖子

总评分: 学术水平 + 8  热心指数 + 8  信用等级 + 8   查看全部评分

有问题来发帖,来发帖没问题!
我尊重版规,一切为了学术!
Stata专版版规:https://bbs.pinggu.org/thread-1651470-1-1.html

沙发
SpencerMeng 在职认证  发表于 2014-12-6 17:52:00
各位坛友有收获的给好评哦~

藤椅
625928915 学生认证  发表于 2014-12-7 14:35:33
谢谢,,方法很全面啊
已有 1 人评分经验 热心指数 收起 理由
SpencerMeng + 60 + 1 鼓励积极讨论

总评分: 经验 + 60  热心指数 + 1   查看全部评分

板凳
SpencerMeng 在职认证  发表于 2014-12-7 16:04:33
625928915 发表于 2014-12-7 14:35
谢谢,,方法很全面啊
多谢捧场

报纸
xxbxxb789456 学生认证  发表于 2019-4-8 14:32:56
如果数据集中的缺失值有不只一种形态(比如  .  或者  .e  或者  .d  等),但是在处理数据的时候,经常需要对缺失值进行处理,比如会用到  if var==.  类似这样的命令,这样一来就错过了对  .e  或者  .d  等形态的缺失值的处理,仅仅处理了  .  形态的缺失值,有没有什么办法解决这个问题,或者有没有什么命令能够让所有变量中的所有形态的缺失值都变成  .   ??

地板
lonestone 在职认证  发表于 2019-4-13 06:10:47 来自手机
SpencerMeng 发表于 2014-12-6 16:10
如果你的数据中存在缺失值,想必这一定令你寝食难安辗转反侧吧。那么,我们如何去填补这些缺失值呢? ...
谢谢分享

7
小朋友的朋友 发表于 2019-4-14 09:21:44 来自手机
厉害

8
小朋友的朋友 发表于 2019-4-14 09:21:44 来自手机
厉害

9
小朋友的朋友 发表于 2019-4-14 09:21:44 来自手机
厉害

10
南宁萧萧 在职认证  发表于 2019-9-20 09:30:57
感谢分享

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-31 01:24