Page 433 Table 17.1
data depress; set "c:\pma5\depress"; inccat = 0; if income ge 20 then inccat = 1; run; proc freq data = depress; tables sex*inccat / norow nocol nopercent; run; The FREQ Procedure Table of SEX by inccat SEX inccat Frequency| 0| 1| Total ---------+--------+--------+ 1 | 54 | 57 | 111 ---------+--------+--------+ 2 | 125 | 58 | 183 ---------+--------+--------+ Total 179 115 294
Page 434 Table 17.2
NOTE: You can also use proc tabulate to create this table.
data depress; set depress; cesdcat = 0; if cesd ge 11 then cesdcat = 1; run; proc freq data = depress; tables sex *inccat* treat / norow nocol nopercent; run; The FREQ Procedure Table 1 of inccat by TREAT Controlling for SEX=1 inccat TREAT Frequency| 1| 2| Total ---------+--------+--------+ 0 | 20 | 34 | 54 ---------+--------+--------+ 1 | 21 | 36 | 57 ---------+--------+--------+ Total 41 70 111 Table 2 of inccat by TREAT Controlling for SEX=2 inccat TREAT Frequency| 1| 2| Total ---------+--------+--------+ 0 | 73 | 52 | 125 ---------+--------+--------+ 1 | 34 | 24 | 58 ---------+--------+--------+ Total 107 76 183
Page 435 Table 17.3
proc freq data = depress; tables sex *inccat* cesdcat* treat / norow nocol nopercent; run; The FREQ Procedure Table 1 of cesdcat by TREAT Controlling for SEX=1 inccat=0 cesdcat TREAT Frequency| 1| 2| Total ---------+--------+--------+ 0 | 16 | 23 | 39 ---------+--------+--------+ 1 | 4 | 11 | 15 ---------+--------+--------+ Total 20 34 54 Table 2 of cesdcat by TREAT Controlling for SEX=1 inccat=1 cesdcat TREAT Frequency| 1| 2| Total ---------+--------+--------+ 0 | 16 | 30 | 46 ---------+--------+--------+ 1 | 5 | 6 | 11 ---------+--------+--------+ Total 21 36 57 Table 3 of cesdcat by TREAT Controlling for SEX=2 inccat=0 cesdcat TREAT Frequency| 1| 2| Total ---------+--------+--------+ 0 | 48 | 33 | 81 ---------+--------+--------+ 1 | 25 | 19 | 44 ---------+--------+--------+ Total 73 52 125 Table 4 of cesdcat by TREAT Controlling for SEX=2 inccat=1 cesdcat TREAT Frequency| 1| 2| Total ---------+--------+--------+ 0 | 20 | 20 | 40 ---------+--------+--------+ 1 | 14 | 4 | 18 ---------+--------+--------+ Total 34 24 58
Page 437 middle of the page
proc freq data = depress; tables sex*inccat / norow nocol nopercent expected; run; The FREQ Procedure Table of SEX by inccat SEX inccat Frequency| Expected | 0| 1| Total ---------+--------+--------+ 1 | 54 | 57 | 111 | 67.582 | 43.418 | ---------+--------+--------+ 2 | 125 | 58 | 183 | 111.42 | 71.582 | ---------+--------+--------+ Total 179 115 294
Page 440 top of the page
proc freq data = depress; tables sex*inccat / norow nocol nopercent chisq; run; The FREQ Procedure Table of SEX by inccat SEX inccat Frequency| 0| 1| Total ---------+--------+--------+ 1 | 54 | 57 | 111 ---------+--------+--------+ 2 | 125 | 58 | 183 ---------+--------+--------+ Total 179 115 294 Statistics for Table of SEX by inccat Statistic DF Value Prob ------------------------------------------------------ Chi-Square 1 11.2104 0.0008 Likelihood Ratio Chi-Square 1 11.1467 0.0008 Continuity Adj. Chi-Square 1 10.4002 0.0013 Mantel-Haenszel Chi-Square 1 11.1723 0.0008 Phi Coefficient -0.1953 Contingency Coefficient 0.1917 Cramer's V -0.1953 Fisher's Exact Test ---------------------------------- Cell (1,1) Frequency (F) 54 Left-sided Pr <= F 6.489E-04 Right-sided Pr >= F 0.9997 Table Probability (P) 3.813E-04 Two-sided Pr <= P 9.068E-04 Sample Size = 294
Page 441 Table 17.7
proc freq data = depress; tables sex*inccat /out=page420 norow nocol nopercent; run; data page420a; set page420; if sex = 1 then sex1 = -1; if sex = 2 then sex1 = 1; if inccat = 0 then inccat1 = -1; if inccat = 1 then inccat1 = 1; run; proc genmod data = page420a; model count= sex1 inccat1 sex1*inccat1 /d=poisson; run; quit; The GENMOD Procedure Model Information Data Set WORK.PAGE420A Distribution Poisson Link Function Log Dependent Variable COUNT Observations Used 4 Criteria For Assessing Goodness Of Fit Criterion DF Value Value/DF Deviance 0 0.0000 . Scaled Deviance 0 0.0000 . Pearson Chi-Square 0 0.0000 . Scaled Pearson X2 0 0.0000 . Log Likelihood 990.9040 Algorithm converged. Analysis Of Parameter Estimates Standard Wald 95% Confidence Chi- Parameter DF Estimate Error Limits Square Pr > ChiSq Intercept 1 4.2302 0.0619 4.1089 4.3515 4670.40 <.0001 sex1 1 0.2142 0.0619 0.0929 0.3355 11.97 0.0005 inccat1 1 -0.1785 0.0619 -0.2998 -0.0571 8.31 0.0039 sex1*inccat1 1 -0.2055 0.0619 -0.3268 -0.0842 11.02 0.0009 Scale 0 1.0000 0.0000 1.0000 1.0000 NOTE: The scale parameter was held fixed.
Page 446 in the middle
ods listing close; proc genmod data = tab427; class sex inccat treat; model count = sex|inccat|treat/ d = poisson ; ods output modelfit = temp1; run; proc genmod data = tab427; class sex inccat treat; model count = sex|inccat|treat@1/ d = poisson ; ods output modelfit = temp2; run; proc genmod data = tab427; class sex inccat treat; model count = sex|inccat|treat@2/ d = poisson ; ods output modelfit = temp3; run; proc genmod data = tab427; class sex inccat treat; model count = sex|inccat|treat@1 sex*inccat/ d = poisson ; ods output modelfit = temp4; run; proc genmod data = tab427; class sex inccat treat; model count = sex|inccat|treat@1 sex*inccat sex*treat/ d = poisson ; ods output modelfit = temp5; run; ods listing; data modelfit; set temp1 temp2 temp3 temp4 temp5; mydf = lag(df); if Criterion="Log Likelihood"; keep mydf value ; run; data modelfit; set modelfit; retain full_ll; retain full_df; if _n_ = 1 then do; full_ll= value; full_df = mydf; end; diff_ll = 2*(full_ll - value); diff_df = mydf - full_df; pvalue = 1 - probchi(diff_ll, diff_df); keep value diff_ll diff_df pvalue; run; proc print data = modelfit; run; Obs Value diff_ll diff_df pvalue 1 589.8050 0.0000 0 . 2 577.7669 24.0763 4 0.00008 3 589.8045 0.0012 1 0.97262 4 583.3402 12.9296 3 0.00479 5 589.8044 0.0012 2 0.99938
Page 461 table in the middle of the page
ods listing close; proc freq data = depress; tables sex*inccat*treat /list out=tab427; run; proc genmod data = tab427; class sex inccat treat; model count = / d = poisson ; ods output modelfit = temp1; run; * all main effect terms; proc genmod data= tab427; class sex inccat treat; model count = sex inccat treat / d=poisson; ods output modelfit = temp2; run; /*row number 2 is comparing the model below with the model above*/ * all two-way interactions; proc genmod data= tab427; class sex inccat treat; model count = sex|inccat|treat@2 / d=poisson; ods output modelfit = temp3; run; /*row number 3 is comparing the model below with the model above*/ * all terms included; proc genmod data= tab427; class sex inccat treat; model count = sex|inccat|treat@3 / d=poisson; ods output modelfit = temp4; run; data modelcom; set temp1 temp2 temp3 temp4; mydf = lag(df); if Criterion="Log Likelihood" or criterion = "Pearson Chi-Square"; keep criterion mydf value myvalue; run; proc sort data = modelcom; by criterion; run; data modelcom1; set modelcom; if criterion = "Log Likelihood" then do; lagvalue=lag(value); lagdf = lag(mydf); chisq = 2*(value-lagvalue); df = lagdf - mydf ; pvalue = 1-probchi(chisq, df); end; else do ; lagvalue=lag(value); lagdf = lag(mydf); chisq = lagvalue - value; df = lagdf - mydf ; pvalue = 1-probchi(chisq, df); end; keep df chisq pvalue; if chisq ~=.; run; ods listing; proc print data = modelcom1; run;
Obs chisq df pvalue 1 31.8710 3 0.00000 2 24.0752 3 0.00002 3 0.0012 1 0.97262 4 36.6679 3 0.00000 5 24.6507 3 0.00002 6 0.0012 1 0.97262
Page 448
Partial association
ods listing close; proc genmod data= tab427; class sex inccat treat; model count = sex|inccat|treat@2 / d=poisson; ods output modelfit = temp1; run; /*this model gives loglikelihood of 584.4699 with df of 10*/ proc genmod data= tab427; class sex inccat treat; model count = inccat|treat sex|treat / d=poisson; ods output modelfit = temp2; run; /*this model gives loglikelihood of 589.8044 with df of 10*/ proc genmod data= tab427; class sex inccat treat; model count = sex|inccat sex|treat / d=poisson; ods output modelfit = temp3; run; /*this model gives loglikelihood of 583.5791 with df of 10*/ proc genmod data= tab427; class sex inccat treat; model count = sex|inccat inccat|treat / d=poisson; ods output modelfit = temp4; run; proc print data = temp1; run; ods listing; data pg428; set temp1 temp2 temp3 temp4; mydf = lag(df); if criterion = "Log Likelihood"; keep value mydf; run; data page428; set pg428; retain whole wholedf; if _n_ = 1 then do; whole = value; wholedf = mydf; end; else do; chisq = 2*(whole - value); df = mydf - wholedf; pvalue = 1 -probchi(chisq , df); end; keep df chisq pvalue; if chisq ~=.; run; proc print data = page428; run; Obs chisq df pvalue 1 10.6691 1 0.00109 2 0.0001 1 0.99336 3 12.4508 1 0.00042
Marginal association
NOTE: Look at the Likelihood ratio chi-squares
proc freq data = tab427; weight count; tables sex*inccat /chisq; tables sex*treat /chisq; tables inccat*treat /chisq; run; The FREQ Procedure Table of SEX by inccat SEX inccat Frequency| Percent | Row Pct | Col Pct | 0| 1| Total ---------+--------+--------+ 1 | 54 | 57 | 111 | 18.37 | 19.39 | 37.76 | 48.65 | 51.35 | | 30.17 | 49.57 | ---------+--------+--------+ 2 | 125 | 58 | 183 | 42.52 | 19.73 | 62.24 | 68.31 | 31.69 | | 69.83 | 50.43 | ---------+--------+--------+ Total 179 115 294 60.88 39.12 100.00 Statistics for Table of SEX by inccat Statistic DF Value Prob ------------------------------------------------------ Chi-Square 1 11.2104 0.0008 Likelihood Ratio Chi-Square 1 11.1467 0.0008 Continuity Adj. Chi-Square 1 10.4002 0.0013 Mantel-Haenszel Chi-Square 1 11.1723 0.0008 Phi Coefficient -0.1953 Contingency Coefficient 0.1917 Cramer's V -0.1953 Fisher's Exact Test ---------------------------------- Cell (1,1) Frequency (F) 54 Left-sided Pr <= F 6.489E-04 Right-sided Pr >= F 0.9997 Table Probability (P) 3.813E-04 Two-sided Pr <= P 9.068E-04 Sample Size = 294 The FREQ Procedure Table of SEX by TREAT SEX TREAT Frequency| Percent | Row Pct | Col Pct | 1| 2| Total ---------+--------+--------+ 1 | 41 | 70 | 111 | 13.95 | 23.81 | 37.76 | 36.94 | 63.06 | | 27.70 | 47.95 | ---------+--------+--------+ 2 | 107 | 76 | 183 | 36.39 | 25.85 | 62.24 | 58.47 | 41.53 | | 72.30 | 52.05 | ---------+--------+--------+ Total 148 146 294 50.34 49.66 100.00 Statistics for Table of SEX by TREAT Statistic DF Value Prob ------------------------------------------------------ Chi-Square 1 12.8149 0.0003 Likelihood Ratio Chi-Square 1 12.9284 0.0003 Continuity Adj. Chi-Square 1 11.9680 0.0005 Mantel-Haenszel Chi-Square 1 12.7713 0.0004 Phi Coefficient -0.2088 Contingency Coefficient 0.2044 Cramer's V -0.2088 Fisher's Exact Test ---------------------------------- Cell (1,1) Frequency (F) 41 Left-sided Pr <= F 2.578E-04 Right-sided Pr >= F 0.9999 Table Probability (P) 1.568E-04 Two-sided Pr <= P 4.627E-04 Sample Size = 294 The FREQ Procedure Table of inccat by TREAT inccat TREAT Frequency| Percent | Row Pct | Col Pct | 1| 2| Total ---------+--------+--------+ 0 | 93 | 86 | 179 | 31.63 | 29.25 | 60.88 | 51.96 | 48.04 | | 62.84 | 58.90 | ---------+--------+--------+ 1 | 55 | 60 | 115 | 18.71 | 20.41 | 39.12 | 47.83 | 52.17 | | 37.16 | 41.10 | ---------+--------+--------+ Total 148 146 294 50.34 49.66 100.00 Statistics for Table of inccat by TREAT Statistic DF Value Prob ------------------------------------------------------ Chi-Square 1 0.4776 0.4895 Likelihood Ratio Chi-Square 1 0.4777 0.4895 Continuity Adj. Chi-Square 1 0.3267 0.5676 Mantel-Haenszel Chi-Square 1 0.4759 0.4903 Phi Coefficient 0.0403 Contingency Coefficient 0.0403 Cramer's V 0.0403 Fisher's Exact Test ---------------------------------- Cell (1,1) Frequency (F) 93 Left-sided Pr <= F 0.7912 Right-sided Pr >= F 0.2838 Table Probability (P) 0.0750 Two-sided Pr <= P 0.5504 Sample Size = 294
Page 447 We were unable to reproduce the stepwise analysis using proc genmod.
Page 451
NOTE: The type1 option on the model statement gives us the first order terms and this is the model to compare against the three-way terms.
/*first order terms*/ proc genmod data = tab427; class sex inccat treat cesdcat; model count = sex inccat treat cesdcat sex|inccat|treat|cesdcat@3 / d = poisson link=log type1 ; ods output modelfit = three; run; ods listing close; /*term stc*/ proc genmod data = tab427; class sex inccat treat cesdcat; model count = sex|inccat|treat|cesdcat@2 sex*inccat*treat sex*inccat*cesdcat inccat*treat*cesdcat / d = poisson link=log ; ods output modelfit = stc; run; /*term itc*/ proc genmod data = tab427; class sex inccat treat cesdcat; model count = sex|inccat|treat|cesdcat@2 sex*inccat*treat sex*inccat*cesdcat sex*treat*cesdcat / d = poisson link=log ; ods output modelfit = itc; run; /*term isc*/ proc genmod data = tab427; class sex inccat treat cesdcat; model count = sex|inccat|treat|cesdcat@2 sex*inccat*treat inccat*treat*cesdcat sex*treat*cesdcat / d = poisson link=log ; ods output modelfit = isc; run; /*term ist*/ proc genmod data = tab427; class sex inccat treat cesdcat; model count = sex|inccat|treat|cesdcat@2 inccat*sex*cesdcat inccat*treat*cesdcat sex*treat*cesdcat / d = poisson link=log; ods output modelfit = ist; run; ods listing; data threecom; set three ist isc itc stc; if Criterion="Deviance"; keep criterion df value; run; data table430_part3; set threecom; retain a; if _n_ =1 then a = Value; else do; lrchisq = value - a; pvalue = 1-probchi(lrchisq, 1); end; keep lrchisq pvalue; if _n_ > 1; run; /*comparison model*/ ods listing close; proc genmod data = tab427; class sex inccat treat cesdcat; model count = sex|inccat|treat|cesdcat@2 / d = poisson link=log ; ods output modelfit = two; run; /*term si*/ proc genmod data = tab427; class sex inccat treat cesdcat; model count = sex inccat treat cesdcat inccat*treat inccat*cesdcat sex*treat sex*cesdcat treat*cesdcat / d = poisson link=log ; ods output modelfit = si; run; /*term it*/ proc genmod data = tab427; class sex inccat treat cesdcat; model count = sex inccat treat cesdcat sex*inccat inccat*cesdcat sex*treat sex*cesdcat treat*cesdcat / d = poisson link=log ; ods output modelfit = it; run; /*term ic*/ proc genmod data = tab427; class sex inccat treat cesdcat; model count = sex inccat treat cesdcat sex*inccat inccat*treat sex*treat sex*cesdcat treat*cesdcat / d = poisson link=log ; ods output modelfit = ic; run; /*term st*/ proc genmod data = tab427; class sex inccat treat cesdcat; model count = sex inccat treat cesdcat inccat*sex inccat*treat inccat*cesdcat sex*cesdcat treat*cesdcat / d = poisson link=log ; ods output modelfit = st; run; /*term sc*/ proc genmod data = tab427; class sex inccat treat cesdcat; model count = sex inccat treat cesdcat inccat*sex inccat*treat inccat*cesdcat sex*treat treat*cesdcat / d = poisson link=log ; ods output modelfit = sc; run; /*term tc*/ proc genmod data = tab427; class sex inccat treat cesdcat; model count = sex inccat treat cesdcat inccat*sex inccat*treat inccat*cesdcat sex*treat sex*cesdcat / d = poisson link=log ; ods output modelfit = tc; run; ods listing; data twocom; set two si it ic st sc tc; if Criterion="Deviance"; keep criterion df value; run; data table430_part2; set twocom; retain a; if _n_ =1 then a = Value; else do; lrchisq = value - a; pvalue = 1-probchi(lrchisq, 1); end; keep lrchisq pvalue; if _n_ > 1; run; proc print data = table430_part2; run;
NOTE: This output gives the first four rows of the table.
(some output omitted) LR Statistics For Type 1 Analysis Chi- Source Deviance DF Square Pr > ChiSq Intercept 115.4069 SEX 97.5936 1 17.81 <.0001 inccat 83.5495 1 14.04 0.0002 TREAT 83.5358 1 0.01 0.9071 cesdcat 34.8139 1 48.72 <.0001 SEX*inccat 23.6672 1 11.15 0.0008 SEX*TREAT 10.7389 1 12.93 0.0003 inccat*TREAT 10.7388 1 0.00 0.9934 SEX*inccat*TREAT 10.7376 1 0.00 0.9726 SEX*cesdcat 7.0589 1 3.68 0.0551 inccat*cesdcat 5.8929 1 1.17 0.2802 SEX*inccat*cesdcat 5.6357 1 0.26 0.6120 TREAT*cesdcat 5.3193 1 0.32 0.5738 SEX*TREAT*cesdcat 4.7877 1 0.53 0.4659 inccat*TREAT*cesdcat 0.0452 1 4.74 0.0294
NOTE: The output below gives the rest of the table. It is the output from the two proc prints above. The ods listing close statements tell SAS not to print the output of the proc genmods.
Obs lrchisq pvalue 1 0.00830 0.92743 2 0.00995 0.92053 3 4.74251 0.02943 4 1.22709 0.26797 Obs lrchisq pvalue 1 9.9063 0.00165 2 0.0019 0.96527 3 1.1678 0.27986 4 11.9764 0.00054 5 2.3418 0.12595 6 0.3171 0.57333
Page 455 in the bottom
proc freq data= depress; tables sex*treat*inccat/list out=page435; run; data page435a; set page435; if sex = 1 then sex1= 1; if sex = 2 then sex1 = -1; if treat =1 then treat1 = 1; if treat = 2 then treat1 = -1; if inccat = 0 then inccat1 = -1; if inccat = 1 then inccat1 = 1; run; proc genmod data= page435a; model count = sex1 treat1 inccat1 sex1*treat1 sex1*inccat1 treat1*inccat1 /d = poisson; run;
The GENMOD Procedure Model Information Data Set WORK.PAGE435A Distribution Poisson Link Function Log Dependent Variable COUNT Observations Used 8 Criteria For Assessing Goodness Of Fit Criterion DF Value Value/DF Deviance 1 0.0012 0.0012 Scaled Deviance 1 0.0012 0.0012 Pearson Chi-Square 1 0.0012 0.0012 Scaled Pearson X2 1 0.0012 0.0012 Log Likelihood 793.5897 Algorithm converged. Analysis Of Parameter Estimates Standard Wald 95% Confidence Chi- Parameter DF Estimate Error Limits Square Pr > ChiSq Intercept 1 3.5121 0.0636 3.3875 3.6367 3051.83 <.0001 sex1 1 -0.2246 0.0636 -0.3491 -0.1000 12.48 0.0004 treat1 1 -0.0481 0.0627 -0.1711 0.0748 0.59 0.4431 inccat1 1 -0.1784 0.0620 -0.2999 -0.0570 8.29 0.0040 sex1*treat1 1 -0.2194 0.0630 -0.3429 -0.0958 12.11 0.0005 sex1*inccat1 1 0.2056 0.0633 0.0815 0.3297 10.54 0.0012 treat1*inccat1 1 0.0005 0.0623 -0.1217 0.1227 0.00 0.9934 Scale 0 1.0000 0.0000 1.0000 1.0000 NOTE: The scale parameter was held fixed.
Page 457 top of the page
data depress437; set depress; treat1 = treat -1; sex1 = sex - 1; run; proc logistic data = depress437 desc; model treat1 = inccat sex1; run; The LOGISTIC Procedure Analysis of Maximum Likelihood Estimates Standard Wald Parameter DF Estimate Error Chi-Square Pr > ChiSq Intercept 1 0.5360 0.2347 5.2149 0.0224 inccat 1 -0.00208 0.2494 0.0001 0.9934 sex1 1 -0.8774 0.2522 12.1067 0.0005 Odds Ratio Estimates Point 95% Wald Effect Estimate Confidence Limits inccat 0.998 0.612 1.627 sex1 0.416 0.254 0.682 Association of Predicted Probabilities and Observed Responses Percent Concordant 34.7 Somers' D 0.202 Percent Discordant 14.4 Gamma 0.412 Percent Tied 50.9 Tau-a 0.102 Pairs 21608 c 0.601