b******s 发帖数: 345 | 1 运行出现的warning是"starting a module while inside s do group" "finish a
module while inside a do group", 该怎样改正这段出现问题的程序呢,谢谢!下面
是出现问题的部分程序。
do i = 1 to n;
if npf > 3 then do;
WFI = XF[i,3:npf-1];
end;
else WFI = 0;
if npu > 2 then do;
WUI = Z[i,3:npu];
end;
else WUI = 0;
lbyw = byw * WFI`;
lbuw = buw * WUI`;
mux1 = bu0 + bux + lbuw;
mux0 = bu0 + lbuw;
start fun1(u) global(by0, byx, lbyw, byu, mux1);
v = (1/(1+exp(-(by0 + byx + lbyw + byu*u ))))/sqrt(2*constant('pi'))
* exp((-1/2)*(u - mux1)**2);
return(v);
finish;
start fun2(u) global(by0, lbyw, byu, mux1);
v = (1/(1+exp(-(by0 + lbyw + byu*u))))/sqrt(2*constant('pi'))
* exp((-1/2)*(u - mux1)**2);
return(v);
finish;
start fun3(u) global(by0, lbyw, byu, mux0);
v = (1/(1+exp(-(by0 + lbyw + byu*u))))/sqrt(2*constant('pi'))
* exp((-1/2)*(u - mux0)**2);
return(v);
finish;
r = { .M .P };
call quad(E11A,"fun1",r);
call quad(E01A,"fun2",r);
call quad(E00A,"fun3",r);
E11 = E11 + E11A;
E01 = E01 + E01A;
E00 = E00 + E00A;
end;
E11 = E11 / n;
E01 = E01 / n;
E00 = E00 / n;
D1R = E11 - E01;
I0R = E01 - E00;
TOT = D1R + I0R;
PI0R = I0R / TOT;
end; |
|