University of Rochester Medical Center
SearchDirectoryNewsEventsStrong HealthURMC Home

SAS Helpful Hints

Proc Genmod

Fits General Linear Models.

Proc Genmod Data=work.A;
    Class treatment gender;
    Model dependent=treatment gender other_independents
        treatment*gender
        / Dist=[Binomial Gamma Igaussian Multinomial Negbin Normal or Poisson] ;
    Lsmeans treatment;
    Output Out=work.glmout Predicted=pred;

    *estimate the interaction of treatment & level;
    *NOTE: treatment, level & treatment*level must be in the model.
    Estimate 'Level 1' treatment -1 1 treatment*level -1 0 0 1 0 0;
    Estimate 'Level 2' treatment -1 1 treatment*level 0 -1 0 0 1 0;
    Estimate 'Level 3' treatment -1 1 treatment*level 0 0 -1 0 0 1;
Run;


Here is a Macro for Genmod if you need to call the procedure several times.

%Macro genmod1(dataset,depend,claslist,covlist,subj,offset,within);
    *Ods Trace On;
    Ods Listing Select None;
    Ods Output Clear;
    Ods Output ModelInfo(Match_all Persist=Proc)=work.ModelInfo
        ClassLevels(Match_all Persist=Proc)=work.Class
        ParmInfo(Match_all Persist=Proc)=work.ParmInfo
        ModelFit(Match_all Persist=Proc)=work.ModelFit
        ConvergenceStatus(Match_all Persist=Proc)=work.Convergence
        ParameterEstimates(Match_all Persist=Proc)=work.Parameter
        GEEModInfo(Match_all Persist=Proc)=work.ModInfo
        GEEWCorr(Match_all Persist=Proc)=work.correlat
        GEEEmpPEst(Match_all Persist=Proc)=work.estimates;

    Proc Genmod Data=&dataset;
        Class &claslist;
        Model &depend=&covlist / Dist=Poisson Link=Log Offset=&offset Scale=Pearson;
        Repeated Subject=&subj / Type=EXCH Within=&within Corrw;
    Run;

    Ods Listing Select All;
    Proc Print Data=work.correlat Label;
        Id RowName;
        Var Col1 Col2 Col3;
    Run;
    Proc Print Data=work.estimates Label;
        Id Parm;
        Var Level1 Estimate Stderr LowerCL UpperCL Z ProbZ;
    Run;
    *Ods Trace Off;
%Mend genmod1;

Title2 'Dependent is X';
*%genmod1(dataset,depend,clas,covlist,subj,offset,within);
%genmod1(work.A,X,id visit,treat visit treat*visit,id,time,visit);

Please send your comments and suggestions about this web page to A. Watts (watts@bst.rochester.edu)