全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
11661 9
2012-02-23
二维码

扫码加我 拉你入群

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

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

全部回复
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
二维码

扫码加我 拉你入群

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

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

2012-9-17 19:39:59
好东西,多谢楼主。
二维码

扫码加我 拉你入群

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

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

2013-1-14 14:13:11
学学 !!
二维码

扫码加我 拉你入群

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

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

2013-7-27 22:41:40
sunset1986 发表于 2012-5-18 17:32
SAS中没有专门的处理缺失值的过程步,但是在标准化变量的过程步中可以实现缺失值的填补。其基本过程如下:
...
讲解的太好了
二维码

扫码加我 拉你入群

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

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

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;
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群