Table 11.1 and Table 11.2 on page 194.
data table11_1; input Subject Group $ week1-week8; datalines; 1 A 45 45 45 45 80 80 80 90 2 A 20 25 25 25 30 35 30 50 3 A 50 50 55 70 70 75 90 90 4 A 25 25 35 40 60 60 70 80 5 A 100 100 100 100 100 100 100 100 6 A 20 20 30 50 50 60 85 95 7 A 30 35 35 40 50 60 75 85 8 A 30 35 45 50 55 65 65 70 9 B 40 55 60 70 80 85 90 90 10 B 65 65 70 70 80 80 80 80 11 B 30 30 40 45 65 85 85 85 12 B 25 35 35 35 40 45 45 45 13 B 45 45 80 80 80 80 80 80 14 B 15 15 10 10 10 20 20 20 15 B 35 35 35 45 45 45 50 50 16 B 40 40 40 55 55 55 60 65 17 C 20 20 30 30 30 30 30 30 18 C 35 35 35 40 40 40 40 40 19 C 35 35 35 40 40 40 45 45 20 C 45 65 65 65 80 85 95 100 21 C 45 65 70 90 90 95 95 100 22 C 25 30 30 35 40 40 40 40 23 C 25 25 30 30 30 30 35 40 24 C 15 35 35 35 40 50 65 65 ; run; options linesize = 100; proc corr data = table11_1 nosimple noprob; var week:; run;
Pearson Correlation Coefficients, N = 24 week1 week2 week3 week4 week5 week6 week7 week8 week1 1.00000 0.92804 0.88202 0.83065 0.79366 0.71256 0.61635 0.55442 week2 0.92804 1.00000 0.92256 0.87741 0.84668 0.78959 0.70415 0.64260 week3 0.88202 0.92256 1.00000 0.95309 0.90921 0.85426 0.76673 0.70079 week4 0.83065 0.87741 0.95309 1.00000 0.92152 0.87863 0.83134 0.77160 week5 0.79366 0.84668 0.90921 0.92152 1.00000 0.97343 0.91495 0.88196 week6 0.71256 0.78959 0.85426 0.87863 0.97343 1.00000 0.95693 0.92669 week7 0.61635 0.70415 0.76673 0.83134 0.91495 0.95693 1.00000 0.97761 week8 0.55442 0.64260 0.70079 0.77160 0.88196 0.92669 0.97761 1.00000
Figure 11.2 on page 195. In order to generate this plot, we need to reshape the data from wide to long format. This is done in a data step. The overall regression line is generated using the regression result in a data step. We merged the original data set and the data set with overall predicted values together before plotting them.
data table11_1long; set table11_1; array week(8) week1-week8; do time = 1 to 8; score = week(time); output; end; drop week1-week8; run; proc reg data = table11_1long ; model score = time; run; quit; data pred; set table11_1long; subject= 100; score = 30.93006 + 4.76438*time; run; data all; set table11_1long pred; run; goptions reset = all; symbol1 i = join v=none r=24 c= blue w=1.5; symbol2 i = join v = none c = black w=4; proc gplot data = all; plot score*time = subject / nolegend; run; quit;
Figure 11.3 on page 195. We created a data set with averaged scores for each group over time using proc sql.
proc sql; create table ave as select distinct mean(score) as score, time as time, group as group from table11_1long group by group, time; quit; symbol1 i = join v= none c = black l = 4; symbol2 i = join v = none c = blue l = 1; symbol3 i = join v = none c = green l = 5; proc gplot data = ave; plot score*time = group; run; quit;
Figure 11.4 on page 196. Proc insight can be used to generate scatter plot matrix.
proc insight data = table11_1 nomenu noconfirm; scatter week1 week2 week3 week4 week5 week6 week7 week8* week1 week2 week3 week4 week5 week6 week7 week8 /markersize=5; run; quit;
Table 11.3 on page 197.
Model (11.1).
data table11_3a; set table11_1long; if group = 'B' then do ; a2 = 1; a3 = 0; end; if group = 'C' then do ; a2 = 0; a3 = 1; end; if group = 'A' then do ; a2 = 0; a3 = 0; end; run; proc reg data = table11_3a; model score = time a2 a3 ; run; quit;
Parameter Estimates Parameter Standard Variable DF Estimate Error t Value Pr > |t| Intercept 1 36.84152 3.97120 9.28 <.0001 time 1 4.76438 0.66187 7.20 <.0001 a2 1 -5.62500 3.71472 -1.51 0.1316 a3 1 -12.10937 3.71472 -3.26 0.0013
Model (11.2).
proc glm data = table11_3a; model score = time a2 a3 time*a2 time*a3 /solution ss3; run; quit;
Standard Parameter Estimate Error t Value Pr > |t| Intercept 29.82142857 5.77401157 5.16 <.0001 time 6.32440476 1.14342467 5.53 <.0001 a2 3.34821429 8.16568547 0.41 0.6823 a3 -0.02232143 8.16568547 -0.00 0.9978 time*a2 -1.99404762 1.61704668 -1.23 0.2191 time*a3 -2.68601190 1.61704668 -1.66 0.0984
Table 11.4 on page 198.
proc reg data = table11_1long; by subject; model score = time; ods output parameterestimates = table11_4 (keep=subject variable estimate stderr) ; run; quit; proc tabulate data=table11_4 ; class subject variable /order=data; var estimate stderr; table subject='Subject'*sum='', variable=''*(estimate stderr ) / RTS=20 row=float; run;
------------------------------------------------------------------------ | | Intercept | time | | |-------------------------+-------------------------| | | Estimate | StdErr | Estimate | StdErr | |------------------+------------+------------+------------+------------| |Subject | | | | | |------------------| | | | | |1 | 30.00| 7.29| 7.50| 1.44| |------------------+------------+------------+------------+------------| |2 | 15.54| 4.10| 3.21| 0.81| |------------------+------------+------------+------------+------------| |3 | 39.82| 3.21| 6.43| 0.64| |------------------+------------+------------+------------+------------| |4 | 11.61| 3.39| 8.39| 0.67| |------------------+------------+------------+------------+------------| |5 | 100.00| 0.00| 0.00| 0.00| |------------------+------------+------------+------------+------------| |6 | 0.89| 5.30| 11.19| 1.05| |------------------+------------+------------+------------+------------| |7 | 15.36| 4.67| 7.98| 0.92| |------------------+------------+------------+------------+------------| |8 | 25.36| 1.97| 5.89| 0.39| |------------------+------------+------------+------------+------------| |9 | 38.57| 3.52| 7.26| 0.70| |------------------+------------+------------+------------+------------| |10 | 61.96| 2.24| 2.62| 0.44| |------------------+------------+------------+------------+------------| |11 | 14.46| 5.89| 9.70| 1.17| |------------------+------------+------------+------------+------------| |12 | 26.07| 2.15| 2.68| 0.43| |------------------+------------+------------+------------+------------| |13 | 48.75| 8.93| 5.00| 1.77| |------------------+------------+------------+------------+------------| |14 | 10.18| 3.21| 1.07| 0.64| |------------------+------------+------------+------------+------------| |15 | 31.25| 1.95| 2.50| 0.39| |------------------+------------+------------+------------+------------| |16 | 34.11| 2.81| 3.81| 0.56| |------------------+------------+------------+------------+------------| |17 | 21.07| 2.55| 1.43| 0.51| |------------------+------------+------------+------------+------------| |18 | 34.11| 1.16| 0.89| 0.23| |------------------+------------+------------+------------+------------| |19 | 32.14| 1.16| 1.61| 0.23| |------------------+------------+------------+------------+------------| |20 | 42.32| 3.70| 7.26| 0.73| |------------------+------------+------------+------------+------------| |21 | 48.57| 6.14| 7.26| 1.22| |------------------+------------+------------+------------+------------| |22 | 24.82| 1.89| 2.26| 0.37| |------------------+------------+------------+------------+------------| |23 | 22.32| 1.71| 1.85| 0.34| |------------------+------------+------------+------------+------------| |24 | 13.04| 4.49| 6.55| 0.89| ------------------------------------------------------------------------
Table 11.5 on page 198 and table 11.6 on page 199.
proc sql; create table table11_5 as select distinct table11_4.*, x.a2 as a2, x.a3 as a3 from table11_4, table11_3a as x where table11_4.subject = x.subject; quit; proc reg data = table11_5; where variable='Intercept'; model estimate = a2 a3 ; run; quit;
Analysis of Variance Sum of Mean Source DF Squares Square F Value Pr > Model 2 60.19080 30.09540 0.07 0.9367 Error 21 9632.53747 458.69226 Corrected Total 23 9692.72826 Root MSE 21.41710 R-Square 0.0062 Dependent Mean 30.93006 Adj R-Sq -0.0884 Coeff Var 69.24365 Parameter Estimates Parameter Standard Variable DF Estimate Error t Value Pr > |t| Intercept 1 29.82143 7.57209 3.94 0.0008 a2 1 3.34821 10.70855 0.31 0.7576 a3 1 -0.02232 10.70855 -0.00 0.9984
proc reg data = table11_5; where variable='time'; model estimate = a2 a3 ; run; quit;
Analysis of Variance Sum of Mean Source DF Squares Square F Value Pr > F Model 2 31.11920 15.55960 1.67 0.2130 Error 21 196.11634 9.33887 Corrected Total 23 227.23554 Root MSE 3.05596 R-Square 0.1369 Dependent Mean 4.76438 Adj R-Sq 0.0548 Coeff Var 64.14169 Parameter Estimates Parameter Standard Variable DF Estimate Error t Value Pr > |t| Intercept 1 6.32440 1.08044 5.85 <.0001 a2 1 -1.99405 1.52798 -1.31 0.2060 a3 1 -2.68601 1.52798 -1.76 0.0933
Table 11.7 on page 207. Row 1 is model (11.2) shown in Table 11.3. Row 2 is Table 11.5 and Table 11.6 shown above. We will focus on GEE models using proc genmod.
GEE, independent:
proc genmod data = table11_3a; class subject; model score = time a2 a3 time*a2 time*a3 ; repeated subject = subject /type=ind modelse; run; quit;
Analysis Of GEE Parameter Estimates Model-Based Standard Error Estimates Standard 95% Confidence Parameter Estimate Error Limits Z Pr > |Z| Intercept 29.8214 5.7740 18.5046 41.1383 5.16 <.0001 time 6.3244 1.1434 4.0833 8.5655 5.53 <.0001 a2 3.3482 8.1657 -12.6562 19.3527 0.41 0.6818 a3 -0.0223 8.1657 -16.0268 15.9821 -0.00 0.9978 time*a2 -1.9940 1.6170 -5.1634 1.1753 -1.23 0.2175 time*a3 -2.6860 1.6170 -5.8554 0.4833 -1.66 0.0967 Scale 20.9593 .
GEE, equi-correlated:
proc genmod data = table11_3a; class subject; model score = time a2 a3 time*a2 time*a3 ; repeated subject = subject /type=cs modelse; run; quit;
Analysis Of GEE Parameter Estimates Model-Based Standard Error Estimates Standard 95% Confidence Parameter Estimate Error Limits Z Pr > |Z| Intercept 29.8214 7.1314 15.8442 43.7986 4.18 <.0001 time 6.3244 0.4958 5.3527 7.2961 12.76 <.0001 a2 3.3482 10.0853 -16.4185 23.1150 0.33 0.7399 a3 -0.0223 10.0853 -19.7891 19.7444 -0.00 0.9982 time*a2 -1.9940 0.7011 -3.3682 -0.6199 -2.84 0.0045 time*a3 -2.6860 0.7011 -4.0602 -1.3119 -3.83 0.0001 Scale 20.9593 . GEE, AR(1)
proc genmod data = table11_3a; class subject; model score = time a2 a3 time*a2 time*a3 ; repeated subject = subject /type=ar(1) modelse ; run; quit;
Analysis Of GEE Parameter Estimates Model-Based Standard Error Estimates Standard 95% Confidence Parameter Estimate Error Limits Z Pr > |Z| Intercept 33.5377 7.7190 18.4086 48.6667 4.34 <.0001 time 6.0732 0.7137 4.6744 7.4720 8.51 <.0001 a2 -0.3419 10.9164 -21.7376 21.0538 -0.03 0.9750 a3 -6.4735 10.9164 -27.8692 14.9222 -0.59 0.5532 time*a2 -2.1418 1.0093 -4.1200 -0.1636 -2.12 0.0338 time*a3 -2.2353 1.0093 -4.2135 -0.2571 -2.21 0.0268 Scale 21.0786 .
GEE, unstructured, algorithm does not converge for more than 5000 iterations. The result therefore does not match with the result in the book which was generated using Stata.
proc genmod data = table11_3a; class subject; model score = time a2 a3 time*a2 time*a3 ; repeated subject = subject /type=un modelse maxit=5000 converge=.01; run; quit;
WARNING: Iteration limit exceeded. Analysis Of GEE Parameter Estimates Empirical Standard Error Estimates Standard 95% Confidence Parameter Estimate Error Limits Z Pr > |Z| Intercept 34.1561 9.4020 15.7284 52.5837 3.63 0.0003 time 6.2530 1.1736 3.9528 8.5533 5.33 <.0001 a2 -8.4854 10.5225 -29.1091 12.1383 -0.81 0.4200 a3 -6.5443 10.0545 -26.2506 13.1621 -0.65 0.5151 time*a2 -1.3303 1.6162 -4.4979 1.8373 -0.82 0.4104 time*a3 -2.6339 1.4638 -5.5029 0.2351 -1.80 0.0720 Analysis Of GEE Parameter Estimates Model-Based Standard Error Estimates Standard 95% Confidence Parameter Estimate Error Limits Z Pr > |Z| Intercept 34.1561 6.7387 20.9484 47.3638 5.07 <.0001 time 6.2530 0.0788 6.0986 6.4074 79.37 <.0001 a2 -8.4854 9.5300 -27.1639 10.1931 -0.89 0.3733 a3 -6.5443 9.5300 -25.2228 12.1343 -0.69 0.4923 time*a2 -1.3303 0.1114 -1.5487 -1.1119 -11.94 <.0001 time*a3 -2.6339 0.1114 -2.8523 -2.4155 -23.64 <.0001 Scale 21.3377 .
Random Effects:
proc mixed data = table11_3a method=ml; class subject; model score = time a2 a3 time*a2 time*a3 /solution; random intercept /subject=subject type=un; run;
Solution for Fixed Effects Standard Effect Estimate Error DF t Value Pr > |t| Intercept 29.8214 7.0468 21 4.23 0.0004 time 6.3244 0.4630 165 13.66 <.0001 a2 3.3482 9.9657 165 0.34 0.7373 a3 -0.02232 9.9657 165 -0.00 0.9982 time*a2 -1.9940 0.6548 165 -3.05 0.0027 time*a3 -2.6860 0.6548 165 -4.10 <.0001