The example below shows how to generate a data set for a logistic regression
with two continuous predictors and plot the probability surface with respect to
the two predictors. It also shows how to use the annotate data set to add more
features to the plot.
data fig3_9;
do i = 1 to 21;
x1 = 6/20*(i -1) - 3;
do j = 1 to 21;
x2 = 6/20*(j-1) - 3;
p = 1/(1+exp(-1 -1.1*x1 - .8*x2));
output;
end;
end;
run;
/*creating the annotated data set*/
data x2_0a;
length function color $ 8 ;
retain hsys xsys ysys zsys '1';
retain line 1;
retain size .75;
/*first extra thick line*/
x = 0;
y = 5;
z = 0;
function = 'move';
output;
do i = 2 to 21;
x1 = 6/20*(i -1) - 3;
x= 5*(i-1);
p = 1/(1+exp(-1 -1.1*x1 +.8*2.7));
y = 5;
z = 100*p;
function = 'draw'; color='black';
output;
end;
/*second extra thick line*/
x = 0;
y = 50;
z = 100/(1+exp(-1 + 1.1*3 )) ;
function = 'move';
output;
do i = 2 to 21;
x1 = 6/20*(i -1) - 3;
x= 5*(i-1);
p = 1/(1+exp(-1 -1.1*x1));
y = 50;
z = 100*p;
function = 'draw'; color='black';
output;
end;
/*third extra thick line*/
x = 0;
y = 95;
z = 100/(1+exp(-1 + 1.1*3 - .8*2.7)) ;
function = 'move';
output;
do i = 2 to 21;
x1 = 6/20*(i -1) - 3;
x= 5*(i-1);
p = 1/(1+exp(-1 -1.1*x1 - .8*2.7));
y = 95;
z = 100*p;
function = 'draw'; color='black';
output;
end;
run;
goptions hsize=6 vsize=3.5;
proc g3d data = fig3_9 annotate=x2_0a;
plot x2*x1 = p / grid zticknum= 3 zmax = 1 zmin = 0
rotate = 10 xticknum = 3 yticknum = 5
caxis = blue ctop = black cbottom = gray;
run;
quit;
