This example illustrates a log-linear model of independence, by using data that contain structural zero frequencies as well as sampling (random) zero frequencies.
In a population of six squirrel monkeys, the joint distribution of genital display with respect to active or passive role was observed. The data are from Fienberg (1980, Table 8-2). Since a monkey cannot have both the active and passive roles in the same interaction, the diagonal cells of the table are structural zeros. See Agresti (2002) for more information about the quasi-independence model.
The DATA step replaces the structural zeros with missing values, and the MISSING= STRUCTURAL option is specified in the MODEL statement to remove these zeros from the analysis. The ZERO= SAMPLING option treats the off-diagonal zeros as sampling zeros. Also, the row for Monkey 't' is deleted since it contains all zeros; therefore, the cell frequencies predicted by a model of independence are also zero. In addition, the CONTRAST statement compares the behavior of the two monkeys labeled 'u' and 'v'. See the section Structural and Sampling Zeros with Raw Data for information about how to perform this analysis when you have raw data. The following statements produce Output 32.5.1 through Output 32.5.8:
data Display; input Active $ Passive $ wt @@; if Active ne 't'; if Active eq Passive then wt=.; datalines; r r 0 r s 1 r t 5 r u 8 r v 9 r w 0 s r 29 s s 0 s t 14 s u 46 s v 4 s w 0 t r 0 t s 0 t t 0 t u 0 t v 0 t w 0 u r 2 u s 3 u t 1 u u 0 u v 38 u w 2 v r 0 v s 0 v t 0 v u 0 v v 0 v w 1 w r 9 w s 25 w t 4 w u 6 w v 13 w w 0 ;
title 'Behavior of Squirrel Monkeys'; proc catmod data=Display; weight wt; model Active*Passive=_response_ / missing=structural zero=sampling freq pred=freq noparm oneway; loglin Active Passive; contrast 'Passive, U vs. V' Passive 0 0 0 1 -1; contrast 'Active, U vs. V' Active 0 0 1 -1; title2 'Test Quasi-Independence for the Incomplete Table'; quit;
Output 32.5.1: Log-Linear Model Analysis with Zero Frequencies
The results of the ONEWAY
option are shown in Output 32.5.2. Monkey 't' does not show up as a value for the Active
variable since that row was removed.
Output 32.5.2: Output from the ONEWAY option
Sampling zeros are displayed as 0 in Output 32.5.4. The Response Number column corresponds to the value displayed in the "Response Profiles" table in Output 32.5.3.
Output 32.5.3: Profiles
Output 32.5.4: Frequency of Response by Response Number
The analysis of variance table (Output 32.5.5) shows that the model of independence does not fit since the likelihood ratio test for the interaction is significant. In other words, active and passive behaviors of the squirrel monkeys are dependent behavior roles.
Output 32.5.5: Analysis of Variance Table
If the model fit these data, then the contrasts in Output 32.5.6 show that monkeys 'u' and 'v' appear to have similar passive behavior patterns but very different active behavior patterns.
Output 32.5.6: Contrasts between Monkeys 'u' and 'v'
Output 32.5.7 displays the predicted response functions and Output 32.5.8 displays predicted cell frequencies (from the PRED=FREQ option), but since the model does not fit, these should be ignored. Note that, since the response function is the generalized logit with the 25th response as the baseline, the observed response functions for the sampling zeros are missing.
Output 32.5.7: Response Function Predicted Values
Maximum Likelihood Predicted Values for Response Functions | |||||
---|---|---|---|---|---|
Function Number |
Observed | Predicted | Residual | ||
Function | Standard Error |
Function | Standard Error |
||
1 | -2.56495 | 1.037749 | -0.97355 | 0.339019 | -1.5914 |
2 | -0.95551 | 0.526235 | -1.72504 | 0.345438 | 0.769529 |
3 | -0.48551 | 0.449359 | -0.52751 | 0.309254 | 0.042007 |
4 | -0.36772 | 0.433629 | -0.73927 | 0.249006 | 0.371543 |
5 | . | . | -3.56052 | 0.634104 | . |
6 | 0.802346 | 0.333775 | 0.320589 | 0.26629 | 0.481758 |
7 | 0.074108 | 0.385164 | -0.29934 | 0.295634 | 0.37345 |
8 | 1.263692 | 0.314105 | 0.898184 | 0.250857 | 0.365508 |
9 | -1.17865 | 0.571772 | 0.686431 | 0.173396 | -1.86509 |
10 | . | . | -2.13482 | 0.608071 | . |
11 | -1.8718 | 0.759555 | -0.2415 | 0.287218 | -1.63031 |
12 | -1.46634 | 0.640513 | -0.10994 | 0.303568 | -1.3564 |
13 | -2.56495 | 1.037749 | -0.86143 | 0.314794 | -1.70352 |
14 | 1.072637 | 0.321308 | 0.124346 | 0.204345 | 0.94829 |
15 | -1.8718 | 0.759555 | -2.6969 | 0.617433 | 0.8251 |
16 | . | . | -4.14787 | 1.024508 | . |
17 | . | . | -4.01632 | 1.030062 | . |
18 | . | . | -4.76781 | 1.032457 | . |
19 | . | . | -3.57028 | 1.020794 | . |
20 | -2.56495 | 1.037749 | -6.60328 | 1.161289 | 4.038332 |
21 | -0.36772 | 0.433629 | -0.36584 | 0.202959 | -0.00188 |
22 | 0.653926 | 0.34194 | -0.23429 | 0.232794 | 0.888212 |
23 | -1.17865 | 0.571772 | -0.98577 | 0.239408 | -0.19288 |
24 | -0.77319 | 0.493548 | 0.211754 | 0.185007 | -0.98494 |
Output 32.5.8: Predicted Frequencies
Maximum Likelihood Predicted Values for Frequencies | ||||||
---|---|---|---|---|---|---|
Active | Passive | Observed | Predicted | Residual | ||
Frequency | Standard Error |
Frequency | Standard Error |
|||
r | s | 1 | 0.997725 | 5.259508 | 1.36156 | -4.25951 |
r | t | 5 | 2.210512 | 2.480726 | 0.691066 | 2.519274 |
r | u | 8 | 2.776525 | 8.215948 | 1.855146 | -0.21595 |
r | v | 9 | 2.937996 | 6.648049 | 1.50932 | 2.351951 |
r | w | 0 | 0 | 0.395769 | 0.240268 | -0.39577 |
s | r | 29 | 5.017696 | 19.18599 | 3.147915 | 9.814007 |
s | t | 14 | 3.620648 | 10.32172 | 2.169599 | 3.678284 |
s | u | 46 | 6.031734 | 34.18463 | 4.428706 | 11.81537 |
s | v | 4 | 1.981735 | 27.66096 | 3.722788 | -23.661 |
s | w | 0 | 0 | 1.6467 | 0.952712 | -1.6467 |
u | r | 2 | 1.407771 | 10.9364 | 2.12322 | -8.9364 |
u | s | 3 | 1.720201 | 12.47407 | 2.554336 | -9.47407 |
u | t | 1 | 0.997725 | 5.883583 | 1.380655 | -4.88358 |
u | v | 38 | 5.606814 | 15.7673 | 2.684692 | 22.2327 |
u | w | 2 | 1.407771 | 0.938652 | 0.551645 | 1.061348 |
v | r | 0 | 0 | 0.219966 | 0.221779 | -0.21997 |
v | s | 0 | 0 | 0.250893 | 0.253706 | -0.25089 |
v | t | 0 | 0 | 0.118338 | 0.120314 | -0.11834 |
v | u | 0 | 0 | 0.391924 | 0.393255 | -0.39192 |
v | w | 1 | 0.997725 | 0.018879 | 0.021728 | 0.981121 |
w | r | 9 | 2.937996 | 9.657645 | 1.808656 | -0.65765 |
w | s | 25 | 4.707344 | 11.01553 | 2.275019 | 13.98447 |
w | t | 4 | 1.981735 | 5.195638 | 1.184452 | -1.19564 |
w | u | 6 | 2.415857 | 17.2075 | 2.772098 | -11.2075 |
w | v | 13 | 3.497402 | 13.92369 | 2.24158 | -0.92369 |
The preceding PROC CATMOD step uses cell count data as input. Prior to invoking the CATMOD procedure, structural and sampling zeros are easily identified and manipulated in a single DATA step. For the situation where structural or sampling zeros (or both) exist and the input data set is raw data, use the following steps:
Run PROC FREQ on the raw data (see Chapter 40: The FREQ Procedure). In the TABLES statement, list all dependent and independent variables, separated by asterisks, and use the SPARSE option and the OUT= option. This creates an output data set that contains all possible zero frequencies. Since the tabled output can be huge, you should also specify the NOPRINT option in the TABLES statement.
Use a DATA step to change the zero frequencies associated with either sampling zeros or structural zeros to missing.
Use the resulting data set as input to PROC CATMOD, specify the statement WEIGHT COUNT to use adjusted frequencies, and specify the ZERO= and MISSING= options to define your sampling and structural zeros.
For example, suppose the data set RawDisplay
contains the raw data for the squirrel monkey data. The following statements show how to obtain the same analysis as shown
previously:
proc freq data=RawDisplay; tables Active*Passive / sparse out=Combos noprint; run;
data Combos2; set Combos; if Active ne 't'; if Active eq Passive then count=.; run;
proc catmod data=Combos2; weight count; model Active*Passive=_response_ / zero=sampling missing=structural freq pred=freq noparm noresponse; loglin Active Passive; quit;
The first IF statement in the DATA step is needed only for this particular example; since observations for Monkey 't' were
deleted from the Display
data set, they also need to be deleted from Combos2
.