目前在做一个模拟,利用rangam函数产生一个随机变量t,同时用uniform函数产生一个5-20的随机变量tcheck。计算了t的累加值,就是ttotal。对于1到3号观测,定义twait为0,tleave为ttotal+tcheck+twait。从第4个观测开始的观测n,twait的值为前三个观测(_n-1_,_n-2_,_n-3_)中tleave的最小值减去ttotal,但如果结果小于0则设为0,同时tleave也是ttotal+tcheck+twait。
以此类推。我使用了lag,lag2和lag3函数来返回前三个tleave的值,以此来计算第四个观测开始的twait值,但问题是lag函数返回的不是前三个观测,好像变成了_n-2_,_n-3_,_n-4_的tleave的值
代码如下,求大神帮忙看看
data a;
do i=1 to 1000 while (ttotal<420);
t=10*RANGAM(10, 1);
ttotal+t;
tcheck=15*UNIFORM(i)+5;
if i<=3 then do;
twait=0;
tleave=ttotal+tcheck;
end;
else do;
twait=min(lag(tleave),lag2(tleave),lag3(tleave))-ttotal;
if twait<0 then twait=0;
tleave=ttotal+tcheck+twait;
end;
output;
end;
run;