Dear SAS community,
A newbie needs your wisdom.
How can I set the decimal points for coefficient estimates in PROC LOGISTIC to 8? The default is 4.
I'd like the 8 decimal points be displayed on SAS results output directly.
I tried the option MAXDEC, which doesn't work. I also tried format, which also doesn't work.
Thanks in advance!
You can overwrite the default template like this to get the results in the desired form directly in the procedure output. The example is taken from the SAS Proc Logistic Doc.
proc template;
define table Stat.Logistic.ParameterEstimates;
dynamic NRows;
column Variable GenericClassValue Response DF Estimate StdErr WaldChiSq
ProbChiSq StandardizedEst ExpEst Label;
define Estimate;
header = "Estimate";
parent = Stat.Logistic.vbest8;
format = 20.8 ;
end;
end;
run;
data Neuralgia;
input Treatment $ Sex $ Age Duration Pain $ @@;
datalines;
P F 68 1 No B M 74 16 No P F 67 30 No
P M 66 26 Yes B F 67 28 No B F 77 16 No
A F 71 12 No B F 72 50 No B F 76 9 Yes
A M 71 17 Yes A F 63 27 No A F 69 18 Yes
B F 66 12 No A M 62 42 No P F 64 1 Yes
A F 64 17 No P M 74 4 No A F 72 25 No
P M 70 1 Yes B M 66 19 No B M 59 29 No
A F 64 30 No A M 70 28 No A M 69 1 No
B F 78 1 No P M 83 1 Yes B F 69 42 No
B M 75 30 Yes P M 77 29 Yes P F 79 20 Yes
A M 70 12 No A F 69 12 No B F 65 14 No
B M 70 1 No B M 67 23 No A M 76 25 Yes
P M 78 12 Yes B M 77 1 Yes B F 69 24 No
P M 66 4 Yes P F 65 29 No P M 60 26 Yes
A M 78 15 Yes B M 75 21 Yes A F 67 11 No
P F 72 27 No P F 70 13 Yes A M 75 6 Yes
B F 65 7 No P F 68 27 Yes P M 68 11 Yes
P M 67 17 Yes B M 70 22 No A M 65 15 No
P F 67 1 Yes A M 67 10 No P F 72 11 Yes
A F 74 1 No B M 80 21 Yes A F 69 3 No
;
ods select ParameterEstimates;
proc logistic data=Neuralgia;
class Treatment Sex;
model Pain= Treatment Sex Treatment*Sex Age Duration / expb;
run;
You can then delete the created template to restore the default template like this
proc template;
delete Stat.Logistic.ParameterEstimates;;
run;
You can create an output data set which contains the coefficient estimates by using the OUTEST= option in the PROC LOGISTIC statement. This data set will have as many decimal places as SAS computes, and then you can print those out with whatever format you want.
You can overwrite the default template like this to get the results in the desired form directly in the procedure output. The example is taken from the SAS Proc Logistic Doc.
proc template;
define table Stat.Logistic.ParameterEstimates;
dynamic NRows;
column Variable GenericClassValue Response DF Estimate StdErr WaldChiSq
ProbChiSq StandardizedEst ExpEst Label;
define Estimate;
header = "Estimate";
parent = Stat.Logistic.vbest8;
format = 20.8 ;
end;
end;
run;
data Neuralgia;
input Treatment $ Sex $ Age Duration Pain $ @@;
datalines;
P F 68 1 No B M 74 16 No P F 67 30 No
P M 66 26 Yes B F 67 28 No B F 77 16 No
A F 71 12 No B F 72 50 No B F 76 9 Yes
A M 71 17 Yes A F 63 27 No A F 69 18 Yes
B F 66 12 No A M 62 42 No P F 64 1 Yes
A F 64 17 No P M 74 4 No A F 72 25 No
P M 70 1 Yes B M 66 19 No B M 59 29 No
A F 64 30 No A M 70 28 No A M 69 1 No
B F 78 1 No P M 83 1 Yes B F 69 42 No
B M 75 30 Yes P M 77 29 Yes P F 79 20 Yes
A M 70 12 No A F 69 12 No B F 65 14 No
B M 70 1 No B M 67 23 No A M 76 25 Yes
P M 78 12 Yes B M 77 1 Yes B F 69 24 No
P M 66 4 Yes P F 65 29 No P M 60 26 Yes
A M 78 15 Yes B M 75 21 Yes A F 67 11 No
P F 72 27 No P F 70 13 Yes A M 75 6 Yes
B F 65 7 No P F 68 27 Yes P M 68 11 Yes
P M 67 17 Yes B M 70 22 No A M 65 15 No
P F 67 1 Yes A M 67 10 No P F 72 11 Yes
A F 74 1 No B M 80 21 Yes A F 69 3 No
;
ods select ParameterEstimates;
proc logistic data=Neuralgia;
class Treatment Sex;
model Pain= Treatment Sex Treatment*Sex Age Duration / expb;
run;
You can then delete the created template to restore the default template like this
proc template;
delete Stat.Logistic.ParameterEstimates;;
run;
No problem. I am no PROC TEMPLATE guru, but it seems like I am also affecting the format of the other columns in the Parameter Estimates table. You can control it like this (No point in displaying Df as 1.000000)..
proc template;
define table Stat.Logistic.ParameterEstimates;
dynamic NRows;
column Variable GenericClassValue Response DF Estimate StdErr WaldChiSq
ProbChiSq StandardizedEst ExpEst Label;
define Estimate;
header = "Estimate";
parent = Stat.Logistic.vbest8;
format = 20.8 ;
end;
define DF;
header = "DF";
parent = Stat.Logistic.vbest8;
format = 8.;
end;
end;
run;
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
SAS' Charu Shankar shares her PROC SQL expertise by showing you how to master the WHERE clause using real winter weather data.
Find more tutorials on the SAS Users YouTube channel.