搜索
人大经济论坛 附件下载

附件下载

所在主题:
文件名:  sorted.rar
资料下载链接地址: https://bbs.pinggu.org/a-1420899.html
本附件包括:
  • sorted.sas7bdat
附件大小:
52.13 KB   举报本内容
最近在做一个关于sampling的项目,有一个问题很有趣,想跟大家讨论一下。
这个data有37747个关于付款的数据,现在已经按照大小排序好,最少付款额是1块,最高是61125.21,现在想从这37747个数据里面选出600个sample在付款额上代表整个数据。一种想法是因为这些钱数都比较分散,并不是平均分布的,所以用SRS的方法不太合理。所以想到既然是要对钱数做sample,那就索性做10个strata,每一个strata里面包含10%的total payment,这样的话,落在0-10%的数据最多,然后10%-20%里面其次,这样下去,90%-100%里面数据最少,然后按照一定比例,在每个strata里面抽取一定量的sample,最后合成600个。

我现在的想法是既然要取600个sample,那我可以直接做600个strata,这样的话,每个strata里面随机取一个数据去表征这一个strata,然后把这600个sample合并起来。但是实际操作中发现,因为数据是付款大小排列,最高的金额61125.21可能已经占到整个付款额的1%左右,那样第600个或者第599个strata里面只会有一个数据,那样选的话,最大的几个值一定会选中,这样就会使整个sample的有些skew to the right.
proc sql;
create table sum as
select sum(payment) as total from sorted
;
quit;

data sort1;
if _n_=1 then set sum;
set sorted;
cum+payment;
strata=ceil((cum/total)*600);
run;

有时候用这种方法都不一定能够得到600个strata,可能差了1-2个,所以我的想法就是把最后几个里面只有一个数据的strata合并成一个新的strata,然后倒着推上去,重新把剩下的数据按照付款额再分599个strata,把最后几个里面只有一个数据的strata合并成一个新的strata,然后以此从下往上类推上去,直到里面所有的strata里面都至少含有两个数据以上,然后再用SRS的方法每个strata里面取出一个数据来。


我自己试了一下,可能是我自己写程序的时候逻辑还不是很清楚,所以折腾了好半天也不行,不知道版上有没有哪位兄弟可以一起与我讨论一下,甚至提出一些更好的方法来呢?




    熟悉论坛请点击新手指南
下载说明
1、论坛支持迅雷和网际快车等p2p多线程软件下载,请在上面选择下载通道单击右健下载即可。
2、论坛会定期自动批量更新下载地址,所以请不要浪费时间盗链论坛资源,盗链地址会很快失效。
3、本站为非盈利性质的学术交流网站,鼓励和保护原创作品,拒绝未经版权人许可的上传行为。本站如接到版权人发出的合格侵权通知,将积极的采取必要措施;同时,本站也将在技术手段和能力范围内,履行版权保护的注意义务。
(如有侵权,欢迎举报)
二维码

扫码加我 拉你入群

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

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

GMT+8, 2026-1-19 20:48