楼主: 尐猪o0
1995 5

[问答] 想问下这段代码当中obsleft这个变量放在这是干嘛用的哇? [推广有奖]

  • 1关注
  • 0粉丝

本科生

86%

还不是VIP/贵宾

-

威望
0
论坛币
4825 个
通用积分
0.7000
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
3569 点
帖子
38
精华
0
在线时间
166 小时
注册时间
2013-9-6
最后登录
2024-2-26

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
/*Creating a Random Sample without Replacement*/
%macro randomsample(sizeno=,newdataset=,olddataset=);
data &newdataset(drop=obsleft sampsize);
sampsize=&sizeno;
obsleft=totobs;
do while(sampsize>0);
  pickit+1;
  if ranuni(0)<sampsize/obsleft then do;
   set &olddataset point=pickit nobs=totobs;
   output;
   sampsize=sampsize-1;
  end;
  obsleft=obsleft-1;
end;
stop;
run;
%mend randomsample;
%randomsample(sizeno=200,newdataset=temp,olddataset=maps.africa) ;

是一个创建随机样本的代码,书上的,有个obsleft的变量,插在这里是干嘛用的哇。。看了许久,没看明白。。。
谢谢大虾们指教了
二维码

扫码加我 拉你入群

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

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

关键词:left EFT obs replacement placement without Random

回帖推荐

banishurface 发表于4楼  查看完整内容

那会导致一个问题就是成功取到一个样本的概率越来越小。那个数据集有大概52824个样本,你这段代码取样本的公式是 ranuni(0)
沙发
banishurface 学生认证  发表于 2015-11-25 22:40:00 |只看作者 |坛友微信交流群
感觉是使sampsize/obsleft的值越来约大而ranuni(0)<sampsize/obsleft的条件越来越容易达成。这样的话感觉越是靠后的观测越容易被取中啊
已有 1 人评分论坛币 收起 理由
admin_kefu + 10 热心帮助其他会员

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

使用道具

藤椅
尐猪o0 发表于 2015-11-26 09:46:01 |只看作者 |坛友微信交流群
banishurface 发表于 2015-11-25 22:40
感觉是使sampsize/obsleft的值越来约大而ranuni(0)
那"obsleft=obsleft-1; "呢?
之前主要是这句话想不通,感觉去掉也没事,但是去掉之后虽然效果一样,但是有错,这是为什么呢?

使用道具

板凳
banishurface 学生认证  发表于 2015-11-26 20:54:07 |只看作者 |坛友微信交流群
尐猪o0 发表于 2015-11-26 09:46
那"obsleft=obsleft-1; "呢?
之前主要是这句话想不通,感觉去掉也没事,但是去掉之后虽然效果一样,但是 ...
那会导致一个问题就是成功取到一个样本的概率越来越小。那个数据集有大概52824个样本,你这段代码取样本的公式是
ranuni(0)<sampsize/obsleft,试想一下如果不每轮obsleft-1当你在取最后一个样本的时候成功的概率有多小(=1/52824),这样会导致pickit的值大于52824也就是母集过了一遍也取不足200个样本。 而obsleft-1可以保证你能取够200个,因为当obsleft<samplesize的时候下一个取样成功率是100%
已有 1 人评分热心指数 收起 理由
尐猪o0 + 1 热心帮助其他会员

总评分: 热心指数 + 1   查看全部评分

使用道具

报纸
尐猪o0 发表于 2015-11-27 16:21:59 |只看作者 |坛友微信交流群
banishurface 发表于 2015-11-26 20:54
那会导致一个问题就是成功取到一个样本的概率越来越小。那个数据集有大概52824个样本,你这段代码取样本的 ...
嗯。谢谢哈。懂了。

使用道具

地板
haosongs 发表于 2018-9-18 14:25:20 |只看作者 |坛友微信交流群
banishurface 发表于 2015-11-25 22:40
感觉是使sampsize/obsleft的值越来约大而ranuni(0)
ranuni(0)这个函数在每一轮比较都重新计算(得出值不一样)?还是只是在开头计算一次一直沿用(值一样)?

使用道具

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

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

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

GMT+8, 2024-11-6 00:17