I have a chunk to bootstrap a dataset.
%let iter = 2;
%let seed = 777;
data work.seg;
input segment $3. prem loss;
datalines;
AAA 5000 0
AAA 3000 12584
AAA 200 245
AAA 500 678
;
data work.test;
do i=1 to &iter;
sumprem=0;
do _n_=1 to 1000000 until (sumprem>=8700);
row_i=int(ranuni(&seed)*n)+1;
set work.seg point=row_i nobs=n;
sumprem + prem;
output;
end;
end;
stop;
run;
It works, but I have a few questions.
- How can I make the 400 number dynamic... I want
(sumprem >= 8700)
to be(sumprem >= &threshold)
where&threshold
is the sum of theprem
column. - Is it correct how I am passing the
&seed
? Or should(&seed)
be replaced with something like(&seed + _n_)
? How can I make the last data step into a macro... something like below, but I haven't gotten anything to work.
%macro boot(data, iter, seed); %do i=1 %to &iter; sumprem=0; %do _n_=1 %to 1000000 %until (sumprem>=8700); row_i=int(ranuni(&seed)*n)+1; set work.seg point=row_i nobs=n; sumprem + prem; output; %end; %end; %mend;