%macro mll(n,a0,a1,a2,a3,a4,a5,sigs);
data yca0 ;
x1=0;x2=0;x3=0;x4=0;x5=0;
do i=1 to &n;
u=&sigs*normal(0);
jqy=&a0+&a1*x1**(1/3)+&a2*x2**(1/3)+&a3*x3**(1/3)+
&a4*x4**(1/3)+&a5*x5**(1/3);
y=jqy+u;
output;
x5=x4;
x4=x3;
x3=x2;
x2=x1;
x1=y;end;
keep x1-x5 y jqy;
run;
%mend mll(n,a0,a1,a2,a3,a4,a5,sigs);
%mll(200,0.8,0.1,0.4,0.2,0.7,0.8,1);
proc print;run;
该程序只要当y为负值时,后面的观测都是缺省值,同时log窗口显示:
Invalid argument(s) to the exponential operator "**" at line 1 column 89.
x1=. x2=. x3=. x4=. x5=. i=201 u=-0.107342764 jqy=. y=. _ERROR_=1 _N_=1
但又不是红字表示。如果y是正的,就不会有问题,按道理说,即使y是负的,到下一个观测x1为负也能开3次方根的,但为什么就不能运行,请高手赐教