楼主: 释比偈闲
10846 9

[原创博文] 使用sas过程步proc stdize对缺失值进行填补 [推广有奖]

  • 0关注
  • 12粉丝

博士生

15%

还不是VIP/贵宾

-

威望
0
论坛币
2156 个
通用积分
0.1800
学术水平
13 点
热心指数
17 点
信用等级
13 点
经验
2744 点
帖子
108
精华
0
在线时间
333 小时
注册时间
2011-2-16
最后登录
2019-11-12

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
使用sas过程步proc stdize对缺失值进行填补.docx (14.07 KB, 需要: 1 个论坛币)
二维码

扫码加我 拉你入群

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

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

关键词:ROC 缺失值 Std

沙发
sunset1986 发表于 2012-5-18 17:32:14 |只看作者 |坛友微信交流群
SAS中没有专门的处理缺失值的过程步,但是在标准化变量的过程步中可以实现缺失值的填补。其基本过程如下:

PROC STDIZE DATA=dataset REPONLY METHOD= OUT=outdata  ;  
VAR variables ;

RUN;

其中proc stdize 是调用标准化过程步,data=表示需要进行缺失值填补的数据库,reponly的意思是只取代缺失值(replace missing data only),这个在均数填补法中必须要加上,不然就得不到想要的结果,method=就是选择填补方法,一般在针对计量资料时,我们一般选用均数填补法和中位数填补法(数据符合正态分布时METHOD=mean,偏态分布时选用METHOD=median),在填补计数资料没有什么好的办法,一般也使用中位数填补法,目的是尽量不要出现带小数点的填补项,但是其实使用中位数填补法有可能会产生带小数点的值,那就是当样本量(这里专门指排除缺失值后的样本量)是偶数的时候,打个比方:有一个100例的样本量,缺失2个,那么在这剩下的98个样本量中,中位数=[an/2+ a(n+2)/2]/2,当an/2和a(n+2)/2不相等时则中位数肯定为带小数的值。当然这种情况其实发生的概率很小,特别是大样本以及分类数很小的时候,万一发生了,者只好使用众数填补,即用出现频率最高的频数来填补,要是使用众数填补则不能使用以上的过程步了,目前没有找到很好的方法,只能使用最笨的方法,即使用proc means 过程步求出众数,然后在记录这个数值,在放到data 步中进行填补。
总结一下:在使用sas(目前我用的是SAS9.2版本)进行均数填补法时,先看数据类型(当然这里只针对数值型数据,字符型在这里不做讨论),如果是计量资料,使用均数填补法,过程如下:

PROC STDIZE DATA=dataset REPONLY METHOD=mean OUT=outdata  ;   
    VAR variables ;
RUN;

把dataset改成你要填补的数据库,把outdata改成经过均数填补法填补以后你要保存的数据库名字(如果没有这个语句那么SAS将自动保存,形如data1,data2…),把variables改成你要进行填补的变量。

要是数据类型明显的偏态,则使用中位数填补法,只需把mean改成median就行了。

引用:http://www.beta-stat.com/?p=108
An honest tale speeds best being plainly told.
Cheers!

使用道具

藤椅
释比 发表于 2012-9-17 19:39:59 |只看作者 |坛友微信交流群
好东西,多谢楼主。

使用道具

板凳
岭西散人 发表于 2013-1-14 14:13:11 |只看作者 |坛友微信交流群
学学 !!

使用道具

报纸
hytc0095 发表于 2013-7-27 22:41:40 |只看作者 |坛友微信交流群
sunset1986 发表于 2012-5-18 17:32
SAS中没有专门的处理缺失值的过程步,但是在标准化变量的过程步中可以实现缺失值的填补。其基本过程如下:
...
讲解的太好了

使用道具

地板
kuhasu 发表于 2013-7-28 01:30:43 |只看作者 |坛友微信交流群
http://www.mysas.net/forum/viewt ... =PROC+STDIZE#p12374
供参考

PROC STDIZE DATA=c REPONLY MISSING=0 OUT=c;
  VAR _numeric_;
RUN;

使用道具

7
sunset1986 发表于 2013-7-29 10:42:46 |只看作者 |坛友微信交流群
hytc0095 发表于 2013-7-27 22:41
讲解的太好了
客气咯~
An honest tale speeds best being plainly told.
Cheers!

使用道具

8
vcdcinf 发表于 2015-5-4 20:02:38 |只看作者 |坛友微信交流群
二楼讲解详细,很好

使用道具

9
linshuhe123 发表于 2016-8-29 11:02:13 |只看作者 |坛友微信交流群
proc mi   专门处理缺失值的 步,涵盖了非常丰富的 填补方法 建议大家学习一下

使用道具

10
fiaya 发表于 2018-1-20 10:47:16 |只看作者 |坛友微信交流群
学习了,谢谢楼主

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-26 19:25