/*-----------------------------------------------------------------
S A S S A M P L E L I B R A R Y
NAME: gmxex05
TITLE: Documentation Example 5 for PROC GLIMMIX
Joint Modeling of Binary and Count Data
PRODUCT: STAT
SYSTEM: ALL
KEYS: Generalized linear mixed models
Multivariate data from different distributions
Varying distribution by observation
Fusing with joint random effects
PROCS: GLIMMIX
DATA: Mosteller, F. and Tukey, J.W. (1977)
Data Analysis and Regression
Reading, MA: Addison-Wesley
SUPPORT: Oliver Schabenberger
REF:
MISC:
-----------------------------------------------------------------*/
data hernio;
input patient age gender$ OKstatus leave los;
datalines;
1 78 m 1 0 9
2 60 m 1 0 4
3 68 m 1 1 7
4 62 m 0 1 35
5 76 m 0 0 9
6 76 m 1 1 7
7 64 m 1 1 5
8 74 f 1 1 16
9 68 m 0 1 7
10 79 f 1 0 11
11 80 f 0 1 4
12 48 m 1 1 9
13 35 f 1 1 2
14 58 m 1 1 4
15 40 m 1 1 3
16 19 m 1 1 4
17 79 m 0 0 3
18 51 m 1 1 5
19 57 m 1 1 8
20 51 m 0 1 8
21 48 m 1 1 3
22 48 m 1 1 5
23 66 m 1 1 8
24 71 m 1 0 2
25 75 f 0 0 7
26 2 f 1 1 0
27 65 f 1 0 16
28 42 f 1 0 3
29 54 m 1 0 2
30 43 m 1 1 3
31 4 m 1 1 3
32 52 m 1 1 8
;
data hernio_uv;
length dist $7;
set hernio;
response = (leave=1);
dist = "Binary";
output;
response = los;
dist = "Poisson";
output;
keep patient age OKstatus response dist;
run;
proc glimmix data=hernio_uv(where=(dist="Binary"));
model response(event='1') = age OKStatus / s dist=binary;
run;
proc glimmix data=hernio_uv(where=(dist="Poisson"));
model response = age OKStatus / s dist=Poisson;
run;
proc glimmix data=hernio_uv;
class dist;
model response(event='1') = dist dist*age dist*OKstatus /
noint s dist=byobs(dist);
run;
proc glimmix data=hernio_uv;
class patient dist;
model response(event='1') = dist dist*age dist*OKstatus /
noint s dist=byobs(dist);
random int / subject=patient;
run;
proc glimmix data=hernio_uv;
class patient dist;
model response(event='1') = dist dist*age dist*OKstatus /
noint s dist=byobs(dist);
random _residual_ / subject=patient type=chol;
run;