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-2024.png

Available on demand!

Missed SAS Innovate Las Vegas? Watch all the action for free! View the keynotes, general sessions and 22 breakouts on demand.

 

Register now!

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
  • 3969 views
  • 3 likes
  • 3 in conversation