I m having issues with this, I have to compute numerical integral using if else statement
Data sim;
Input A B C Beta P;
cards;
1 2 3 0.5 0
2 3 4 0.5 1
3 4.5 3 0.5 1
3 5 6 0.5 0
;
Run;
proc iml;
use sim;
read all var _NUM_ into DM;
close;
A = DM[,1]; B = DM[,2]; C = DM[,3]; Beta = DM[,4]; P = DM[,5];
n = nrow(DM);
start Func(x) global( Beta_i, C_i , P_i);
if P_i=0 then do;
return( exp(-x)*exp(2-x +Beta_i*C_i)#(cdf("Normal", x-2+Beta_i*C_i + A_i)-cdf("Normal", x-1+C_i + A_i)) );
end;
else do;
return( exp(-x)*exp(4-x +Beta_i*C_i)#(cdf("Normal", x-4 +Beta_i*C_i + A_i)-cdf("Normal", x-1+C_i + A_i)) );
end;
finish;
answer = j(nrow(DM),1);
do i = 1 to nrow(DM);
Beta_i = Beta; C_i = C; P_i=P; /* set global variables */
call quad(result, "Func", A || B,);
answer = result;
end;
create kaplan1n var{A B C Beta P Answer };
append;
quit;
A_i is not defined in the module.
A_i is not defined in the module.
Thanks Rick:
Data sim;
Input A B C Beta P;
cards;
1 2 3 0.5 0
2 3 4 0.5 1
3 4.5 3 0.5 1
3 5 6 0.5 0
;
Run;
proc iml;
use sim;
read all var _NUM_ into DM;
close;
A = DM[,1]; B = DM[,2]; C = DM[,3]; Beta = DM[,4]; P = DM[,5];
n = nrow(DM);
start Func(x) global( Beta_i, C_i , A_i, P_i);
if P_i=0 then do;
return( exp(-x)*exp(2-x +Beta_i*C_i)#(cdf("Normal", x-2+Beta_i*C_i + A_i)-cdf("Normal", x-1+C_i + A_i)) );
end;
else do;
return( exp(-x)*exp(4-x +Beta_i*C_i)#(cdf("Normal", x-4 +Beta_i*C_i + A_i)-cdf("Normal", x-1+C_i + A_i)) );
end;
finish;
answer = j(nrow(DM),1);
do i = 1 to nrow(DM);
Beta_i = Beta; C_i = C; A_i=A; P_i=P; /* set global variables */
call quad(result, "Func", A || B,);
answer = result;
end;
create kaplan1n var{A B C Beta P Answer };
append;
quit;
Build your skills. Make connections. Enjoy creative freedom. Maybe change the world. Registration is now open through August 30th. Visit the SAS Hackathon homepage.
Register today!Learn how to run multiple linear regression models with and without interactions, presented by SAS user Alex Chaplin.
Find more tutorials on the SAS Users YouTube channel.