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

Hello everyone,

I just become a bit confused when I saw the intercept effect in an estimate statement within proc genmod.

My observation is that when the "param=ref" option is used then it produce the same estimate as in the parameter-estimates. When "param=glm" is used then something wrong happens. When other effects than the intercepts are used in the effect statement then there is no difference between whether "param=glm" or "param=ref" is used. My question is, what estimate does the estimate statement give when the glm-parametrization is used. The full example could for instance be this one:


*Current state eksempel:****;
data current_state;
  call streaminit(123);
  do i=1 to 1000;
    intercept_=1;
    group=(rand("uniform")<0.5);
t=-log(rand("uniform")) /exp( log(0.1)+0.5*group) ;
censur=-log(rand("uniform"))*10;
event=(t<censur);
    logtime=log(censur);
    output;
  end;
run;


proc genmod data=current_state desc;
  class group(ref="0") /param=glm ;
  model event= group  /dist=bin link=cloglog offset=logtime;
  estimate 'baselinehazard' intercept 1/exp;
  estimate 'group' group 1 -1;
run;

which produce this output:

                        Analysis Of Maximum Likelihood Parameter Estimates

                                      Standard     Wald 95% Confidence          Wald
  Parameter         DF    Estimate       Error           Limits           Chi-Square    Pr > ChiSq

  Intercept          1     -2.3670      0.0726     -2.5093     -2.2247       1062.85        <.0001
  group        1     1      0.5635      0.1003      0.3670      0.7600         31.58        <.0001
  group        0     0      0.0000      0.0000      0.0000      0.0000           .           .
  Scale              0      1.0000      0.0000      1.0000      1.0000

NOTE: The scale parameter was held fixed.


                                     Contrast Estimate Results

                          Mean         Mean           L'Beta  Standard                L'Beta
Label                Estimate   Confidence Limits  Estimate     Error   Alpha   Confidence Limits

baselinehazard         0.1169    0.1065    0.1281   -2.0852    0.0501    0.05   -2.1835   -1.9869
Exp(baselinehazard)                                  0.1243    0.0062    0.05    0.1127    0.1371
group                  0.8274    0.7639    0.8821    0.5635    0.1003    0.05    0.3670    0.7600

I found it here surprising that the number -2.0852 is not the same as -2.3670. Changing to param=ref will make these two numbers equal to -2.367 as expected. Notice that the estimated group-effect is the same in the two part of the output.

Am I right when I claim, that since param=glm is the default, there may easily happens mistake if users are not aware that this produce some other intercept estimate with the estimate statement?

1 ACCEPTED SOLUTION

Accepted Solutions
SteveDenham
Jade | Level 19

I note that the following give identical results:

estimate 'baselinehazard' intercept 1/exp;

estimate 'other' intercept 1 group 0.5 0.5/exp;

which is what I would expect under a GLM parameterization.  You can see this by adding the 'e' option to the first estimate statement, and seeing that it gives what is in the second.  This is because the GLM parmeterization creates marginals by averaging over the terms not explicitly expressed.  If you want the exponentiated intercept only, I think you have to export the solution vector via ODS, and then exponentiate.

Steve Denham

View solution in original post

2 REPLIES 2
SteveDenham
Jade | Level 19

I note that the following give identical results:

estimate 'baselinehazard' intercept 1/exp;

estimate 'other' intercept 1 group 0.5 0.5/exp;

which is what I would expect under a GLM parameterization.  You can see this by adding the 'e' option to the first estimate statement, and seeing that it gives what is in the second.  This is because the GLM parmeterization creates marginals by averaging over the terms not explicitly expressed.  If you want the exponentiated intercept only, I think you have to export the solution vector via ODS, and then exponentiate.

Steve Denham

JacobSimonsen
Barite | Level 11

Hi Steve,

you are right, it works as you explain it.

Though, then I have not understood why the statement

      estimate 'other' intercept 1 group 0 0/exp;

lead to an non-estimable expression with the param=GLM-option, but it works fine with the param=REF-option.

Further, If I want it exponentiated, which is exactly what I want, then I can just use the param=ref option. That give the number I am looking for, which by the way in the above example also can be produced by the new icphreg:-)

Jacob

sas-innovate-2024.png

Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.

Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.

 

Register now!

What is ANOVA?

ANOVA, or Analysis Of Variance, is used to compare the averages or means of two or more populations to better understand how they differ. Watch this tutorial for more.

Find more tutorials on the SAS Users YouTube channel.

Discussion stats
  • 2 replies
  • 1375 views
  • 1 like
  • 2 in conversation