楼主: wxq1638
5837 2

任意序列的随机性确定-SAS程序-基于位次游程检验的乾坤大挪移法 [推广有奖]

  • 0关注
  • 5粉丝

黑客祖宗

讲师

25%

还不是VIP/贵宾

-

威望
0
论坛币
238 个
通用积分
0
学术水平
3 点
热心指数
7 点
信用等级
1 点
经验
4608 点
帖子
752
精华
0
在线时间
77 小时
注册时间
2007-4-18
最后登录
2015-8-20

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币

安徽省五河县临北乡石家村卫生室 233316 wxq1638@yahoo.com.cn
   在实际的统计和科学研究中,常常想了解得到的一序列数据是否随机,虽然SPSS等软件有菜单
操作方法,并可以被复制为代码使用,但是其输出亢烦,格式固定,其检验方法不具延伸性。且
其中算法细节又不能被人知道,无法根据具体情况灵活编程和按要求输出。而相关sas的游程检验
法至今未见。为了填补sas空缺,为了可以了解具体算法和将来编程的灵活使用,现在将本人昨天
晚上编写的sas代码公布。
   通过以往的学习经验可知:游程检验依赖的是位次关系,而与具体数值无关,因此不论变量下
的属性如何,关键需要知道位次编号,便可以进行随机性检验,显然这也正是sas强大编程能力易于
发挥的地方。但是,这种情况仍然需要一定的假定情况,那就是总体的个数N。由于编程的灵活性,
在sas中N可以按想象的可能情况填数,显然若样本已经抽取n个单位且编号固定,那么样本的随机性
必依赖总体N的个数在一定范围。故,这种情况下N应当为有限总体,不需要太大、太小的假设过多
。当然,如果n中各观察单位的位次不确定,那么对N无特别要求,都有可能是随机,或不随机的。
所以,编程的思路显然需要按前一种进行。
  本次sas算法思路:1 假设有一个总体N ;抽取一个样本n1,剩余部分叫n2,本次sas简单抽样部分;
                   2 对n1,n2采取同样要求操作:该序列中位次不连续的孤胆观测记为1,位次上
增量为1的连续观测记其最小、最大者,后取其最大者并记录连续的个数本次sas操作中的反复递增、
递减排序及if指令过程;
                   3 将经过2操作的n1、n2数据洗涤出来,用merge合并到一起,此时sas中两组
数据相对应的部分恰是在位次上最接近的单数,此时数据已经洗涤成功;
                   4 普通算法+if 达到目的;
                   5 调用游程检验过程嵌入,本次已经加入;
/*https://bbs.pinggu.org/thread-194772-1-1.html&star=1*/
                   6 有兴趣者可以加入宏编辑进行大量重复抽样和检验,观察游程检验效果
宏嵌入可参阅/*http://cos.name/bbs/read.php?tid=13015&fpage=2*/,本次不在赘述。

警告!!!
1 不代表以后观点
2 保留揍癫狂者的权利
3 数据部分纯属虚构,如有雷同,纯属巧合;另外,初看可能复杂,我将随后粘一个简单、明确的上来。
 鸣谢:

本次操作之初,呈经遭遇瓶颈问题,人大sushe1527兄弟热情帮助,再次表示衷心感谢!!!
https://bbs.pinggu.org/thread-395006-1-1.html

附件:本次操作程序

data c;n=100;do b=1 to n;output;end;proc sort;by b;run;
proc sql;create table wxq1638 as select *, normal(0) as wxq168 from c order by wxq168;run;
data c1;set wxq1638(obs=38);x=b;proc sort;by b;run;
data a;merge c c1;by b;keep g b x;if x=b then g=1;if x=. then g=0;run;
data a1;set a(rename=(x=x1 g=g1 b=b1));where g1=1;if dif(b1)>1 then d1=1;proc sort;by b1;run;
data aa1;set a1;proc sort;by descending b1;run;
data a2(keep=g1 b1);set aa1;if dif(b1)<-1 then d11=1;if d1=. & d11=. | d1= 1 & d11=. then delete;
keep g1 b1;proc sort;by b1;run;
data b1;set a(rename=(x=x2 g=g2 b=b2));where g2=0;if dif(b2)>1 then d1=1;proc sort;by b2;run;
data bb1;set b1;proc sort;by descending b2;run;
data b2(keep= g2 b2);set bb1;if dif(b2)<-1 then d11=1;if d1=. & d11=. | d1= 1 & d11=. then delete;
proc sort;by b2;run;
data wxq;merge a2 b2;if b1>b2 then f1=b1-b2; if b1<b2 then f1=b1-lag(b2);
if b2>b1 then f2=b2-b1;if b2<b1 then f2=b2-lag(b1); if _n_=1 & f1=. then f1=b1;
if _n_=1 & f2=. then f2=b2;bb1=b1;if bb1=. then bb1=b2;bb1=dif(bb1);if b1=. then f2=bb1;
bb2=b2;if bb2=. then bb2=b1;bb2=dif(bb2);if b2=. then f1=bb2;keep b1 f1 b2 f2;
proc means sum n;var f1;output out=d1 sum=s1 n=n1;
proc means data=wxq sum n;var f2;output out=d2 sum=s2 n=n2;
data d2;merge d1 d2;r=n1+n2;u=2*s1*s2/(s1+s2)+1;/*游程平均数*/
ss=sqrt(2*s1*s2*(2*s1*s2-s1-s2)/((s1+s2)**2*(s1+s2-1)));/*游程标准差*/
z=abs((r-u)/ss);p=(1-probnorm(z))*2;proc print;var z p;run;
/*https://bbs.pinggu.org/thread-194772-1-1.html&star=1*/

[此贴子已经被作者于2008-12-28 22:42:05编辑过]

二维码

扫码加我 拉你入群

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

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

关键词:sas程序 随机性 proc sql thread pinggu 序列 SAS 游程 位次 随机性

沙发
wxq1638 发表于 2008-12-28 22:23:00 |只看作者 |坛友微信交流群

                                                         SAS 系统               2008年12月28日 星期日 下午09时04分35秒   1

                                                        MEANS 过程

                                                       分析变量:f1

                                                            总和     N
                                                    ------------------
                                                      38.0000000    25
                                                    ------------------
                                                         SAS 系统               2008年12月28日 星期日 下午09时04分35秒   2

                                                        MEANS 过程

                                                       分析变量:f2

                                                            总和     N
                                                    ------------------
                                                      62.0000000    25
                                                    ------------------
                                                         SAS 系统               2008年12月28日 星期日 下午09时04分35秒   3

                                                Obs       z          p

                                                 1     0.40126    0.68823

使用道具

藤椅
tangmay 发表于 2011-4-15 08:21:33 |只看作者 |坛友微信交流群
谢谢分享!

使用道具

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

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

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

GMT+8, 2024-4-25 15:32