options linesize=80 pagesize=50;
data urban;
   input family st1 st2 st3 ft1 ft2 ft3 mt1 mt2 mt3;
   area = 'Urban';
   cards;
1  17 17 19 18 19 21 16 16 18
2  12 14 15 19 19 21 16 16 18
3   8 10 11 16 18 19 11 12 12
4   5  7  7 12 12 13 13 14 14
5   2  5  6 12 14 14 14 16 18
6   9 11 11 16 17 18 14 15 16
7   8  9  9 19 20 20 15 16 18
8  13 14 16 16 17 18 18 18 20
9  11 12 13 13 16 17  7  8 10
10 19 20 20 13 15 15 11 12 12
;
data rural;
   input family st1 st2 st3 ft1 ft2 ft3 mt1 mt2 mt3;
   area = 'Rural';
   cards;
1  12 11 14 18 19 22 16 16 19
2  13 13 17 18 19 22 16 16 19
3  12 13 16 19 18 22 17 16 20
4  18 18 21 23 23 26 23 22 26
5  15 14 16 15 15 19 17 17 20
6   6  6 10 15 16 19 18 19 21
7  16 17 18 17 17 21 18 20 23
;
data all;
   merge urban rural; by area;
   person = 'Father'; t1 = ft1; t2 = ft2; t3 = ft3; output;
   person = 'Mother'; t1 = mt1; t2 = mt2; t3 = mt3; output;
   person = 'Son';    t1 = st1; t2 = st2; t3 = st3; output;
   drop st1--mt3;
data times; set all;
   y = t1; time = 1; output;
   y = t2; time = 2; output;
   y = t3; time = 3; output;
   drop t1--t3;
proc glm;
   class area family person time;
   model y = area area*family person person*area person*area*family
      time time*person time*area time*person*area / ss1;
   test h = area e = area*family;
   test h = person person*area e = person*area*family;
data b; set all;
proc glm;
   class area family person;
   model t1 t2 t3 = area area*family person person*area;
   repeated time 3 (1 2 3) contrast / summary;

