BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
changxuosu
Quartz | Level 8

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!

 

 

1 ACCEPTED SOLUTION

Accepted Solutions
PeterClemmensen
Tourmaline | Level 20

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;

View solution in original post

5 REPLIES 5
PaigeMiller
Diamond | Level 26

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.

--
Paige Miller
changxuosu
Quartz | Level 8
thank you very much for your help. that's helpful. On a second though, I need to the decimal points to be displayed on my SAS results, do you have any idea? I'll update my question
PeterClemmensen
Tourmaline | Level 20

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;
changxuosu
Quartz | Level 8
thanks a lot! It works like a charm!
PeterClemmensen
Tourmaline | Level 20

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: Save the Date

 SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!

Save the date!

Mastering the WHERE Clause in PROC SQL

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.

Discussion stats
  • 5 replies
  • 4344 views
  • 3 likes
  • 3 in conversation