楼主: RisingFine
3228 8

怎么用SAS编程 从同一个正态分布中随机抽样,每次抽2个,记为x1,x2,重复1000次, [推广有奖]

  • 0关注
  • 0粉丝

初中生

19%

还不是VIP/贵宾

-

威望
0
论坛币
17 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
407 点
帖子
13
精华
0
在线时间
6 小时
注册时间
2016-11-14
最后登录
2017-1-14

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
我用了简单随机抽样的方法srs对数据进行抽样,可是不懂怎么把每次抽出的样本赋值成X1、X2,我看了把字符型赋值成数值型,还是没有解决我的问题,以下是我根据题目自己编的程序
DATA My_SAMPLES;
DO I=1 TO 1000;
X=RANNOR(0);
OUTPUT;
END;
PROC surveyselect DATA =My_SAMPLES
      method=srs n=2
      REP=1000
      out=SampleSRS;
DATA SampleSRS;
ARRAY X(2)X1-X2;
DO J=1 TO 2;
Y=X1=X2;
Z=X1-X2;
OUTPUT;
END;
PROC MEANS DATA=SampleSRS VAR;
VAR Y Z;
RUN;


日志窗口显示在ARRAY的步骤中存在缺失值(红字标示部分)
460  DATA My_SAMPLES;
461  DO I=1 TO 1000;
462  X=RANNOR(0);
463  OUTPUT;
464  END;

NOTE: 数据集 WORK.MY_SAMPLES 有 1000 个观测和 2 个变量。
NOTE: “DATA 语句”所用时间(总处理时间):
      实际时间         0.00 秒
      CPU 时间         0.01 秒


465  PROC surveyselect DATA =My_SAMPLES
466        method=srs n=2
467        REP=1000
468        out=SampleSRS;

NOTE: 数据集 WORK.SAMPLESRS 有 2000 个观测和 3 个变量。
NOTE: “PROCEDURE SURVEYSELECT”所用时间(总处理时间):
      实际时间         0.03 秒
      CPU 时间         0.03 秒


469  DATA SampleSRS;
470  ARRAY X(2)X1-X2;
471  DO J=1 TO 2;
472  Y=X1=X2;
473  Z=X1-X2;
474  OUTPUT;
475  END;

NOTE: 缺失值的生成是对缺失值执行操作的结果。
       指定每个位置的方式: (次数)(行:列)。
      2 473:5
NOTE: 数据集 WORK.SAMPLESRS 有 2 个观测和 5 个变量。
NOTE: “DATA 语句”所用时间(总处理时间):
      实际时间         0.00 秒
      CPU 时间         0.00 秒


476  PROC MEANS DATA=SampleSRS VAR;
477  VAR Y Z;
478  RUN;

NOTE: 从数据集 WORK.SAMPLESRS 读取了 2 个观测。
NOTE: “PROCEDURE MEANS”所用时间(总处理时间):
      实际时间         0.00 秒
      CPU 时间         0.01 秒


在ARRAY这步还是不懂怎么把抽出的样本读成X1、X2,请教各位大神这个该怎么解决?

二维码

扫码加我 拉你入群

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

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

关键词:SAS编程 正态分布 随机抽样 surveyselect Procedure 正态分布 样本

沙发
hardychaochao 发表于 2016-11-15 09:50:38 |只看作者 |坛友微信交流群
proc sort data=SampleSRS;by Replicate i;run;

data X1(rename=(X=X1 i=i1)) X2(rename=(X=X2 i=i2));
        set SampleSRS;
        by Replicate;
        if first.Replicate then output X1;
        else output X2;
run;

data X1_X2;
        retain Replicate i1 i2 X1 X2;
        merge X1 X2;
        by Replicate;
run;
已有 1 人评分论坛币 收起 理由
admin_kefu + 20 热心帮助其他会员

总评分: 论坛币 + 20   查看全部评分

使用道具

藤椅
wang1839 在职认证  发表于 2016-11-15 10:12:45 |只看作者 |坛友微信交流群

data final;
   array c{2} x1-x2;
   array d{2} i1-i2;
  do a=1 by 1 until(last.Replicate);
  set SampleSRS;
  by Replicate;
   c{a}=x;
   d{a}=i;
end;
drop i x a;
run;
已有 1 人评分论坛币 收起 理由
admin_kefu + 20 热心帮助其他会员

总评分: 论坛币 + 20   查看全部评分

使用道具

板凳
RisingFine 发表于 2016-11-16 13:50:28 |只看作者 |坛友微信交流群
hardychaochao 发表于 2016-11-15 09:50
proc sort data=SampleSRS;by Replicate i;run;

data X1(rename=(X=X1 i=i1)) X2(rename=(X=X2 i=i2));
...
感谢您的回复!请问这样赋值以后,要计算X1+X2,X1-X2各自的方差要在哪里给它们赋值,比如Y=X1=X2,Z=X1-X2,。这个得出来的方差也是缺失值,提示Y、Z找不到

使用道具

报纸
RisingFine 发表于 2016-11-16 13:51:36 |只看作者 |坛友微信交流群
RisingFine 发表于 2016-11-16 13:50
感谢您的回复!请问这样赋值以后,要计算X1+X2,X1-X2各自的方差要在哪里给它们赋值,比如Y=X1=X2,Z=X1- ...
感谢您的回复!请问这样赋值以后,要计算X1+X2,X1-X2各自的方差要在哪里给它们赋值,比如Y=X1=X2,Z=X1-X2,。这样算出来的X1、X2是有的,可是得出来的方差也是缺失值,提示Y、Z找不到

使用道具

地板
RisingFine 发表于 2016-11-16 14:22:24 |只看作者 |坛友微信交流群
RisingFine 发表于 2016-11-16 13:51
感谢您的回复!请问这样赋值以后,要计算X1+X2,X1-X2各自的方差要在哪里给它们赋值,比如Y=X1=X2,Z=X1- ...
程序跑出来了!就是在数据步后面再加个proc print步骤,感谢!

使用道具

7
RisingFine 发表于 2016-11-16 14:22:26 |只看作者 |坛友微信交流群
RisingFine 发表于 2016-11-16 13:51
感谢您的回复!请问这样赋值以后,要计算X1+X2,X1-X2各自的方差要在哪里给它们赋值,比如Y=X1=X2,Z=X1- ...
程序跑出来了!就是在数据步后面再加个proc print步骤,感谢!

使用道具

8
RisingFine 发表于 2016-11-16 14:23:13 |只看作者 |坛友微信交流群
hardychaochao 发表于 2016-11-15 09:50
proc sort data=SampleSRS;by Replicate i;run;

data X1(rename=(X=X1 i=i1)) X2(rename=(X=X2 i=i2));
...
程序跑出来了!就是在数据步后面再加个proc print步骤,感谢!

使用道具

9
RisingFine 发表于 2016-11-16 14:23:34 |只看作者 |坛友微信交流群
wang1839 发表于 2016-11-15 10:12
data final;
   array c{2} x1-x2;
   array d{2} i1-i2;
程序跑出来了!就是在数据步后面再加个proc print步骤,感谢!

使用道具

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

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

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

GMT+8, 2024-4-23 15:07