*Multilevel Modeling for the Uninitiated: SAS Code; *Get Data (from R-code); *NEED TO HAVE OWN DATAFILE PATH; PROC IMPORT datafile='/home/.../dragon1.csv' dbms=csv out=Dragon1 replace; getnames=yes; guessingrows=100; PROC MEANS data=Dragon1 mean; var Knights Archers; *Km=10.825, Am=7.868; DATA Dragon1; set Dragon1; Knights_C = (Knights-10.825); Archers_C = (Archers-7.868); PROC PRINT data=Dragon1; PROC IMPORT datafile='/home/.../dragon2.csv' dbms=csv out=Dragon2 replace; getnames=yes; guessingrows=100; PROC PRINT data=Dragon2(obs=100); PROC IMPORT datafile='/home/.../dragon3.csv' dbms=csv out=Dragon3 replace; getnames=yes; guessingrows=100; PROC PRINT data=Dragon3(obs=100); *---------------------------------------------------------------------------------------------------------------------------; *EXAMPLE 1: Fire Damage and Knights; *Model 1: Knight Standard Regression; PROC GLIMMIX data=Dragon1 method=MMPL; model Fire_Damage=Knights_C/s; output out=D1M1_pred pred lcl ucl; PROC SORT data=D1M1_pred; by Knights_C; PROC SGPLOT data=D1M1_pred noautolegend; band x=Knights_C lower=lcl upper=ucl; scatter x=Knights_C y=Fire_Damage; series x=Knights_C y=pred; *Model 2: Knight Level-2 Random Intercepts; PROC GLIMMIX data=Dragon1 method=MMPL; class Region; model Fire_Damage=Knights_C/s; random Region; output out=D1M2_pred pred lcl ucl; PROC SORT data=D1M2_pred; by Knights_C; PROC SGPLOT data=D1M2_pred noautolegend; band x=Knights_C lower=lcl upper=ucl/group=Region transparency=.90; scatter x=Knights_C y=Fire_Damage/group=Region; series x=Knights_C y=pred/group=Region; *Model 3: Knight Level-2 Random Intercepts and Slopes; PROC GLIMMIX data=Dragon1 method=MMPL; class Region; model Fire_Damage=Knights_C/s; random intercept Knights_C/subject = Region; output out=D1M3_pred pred lcl ucl; PROC SORT data=D1M3_pred; by Region Knights_C; PROC PRINT data=D1M3_pred; PROC SGPLOT data=D1M3_pred noautolegend; band x=Knights_C lower=lcl upper=ucl/group=Region transparency=.90; scatter x=Knights_C y=Fire_Damage/group=Region; series x=Knights_C y=pred/group=Region; *---------------------------------------------------------------------------------------------------------------------------; *EXAMPLE 2: Fire Damage and Archers; *Model 1: Archer Standard Regression; PROC GLIMMIX data=Dragon1 method=MMPL; model Fire_Damage=Archers_C/s; output out=D2M1_pred pred lcl ucl; PROC SORT data=D2M1_pred; by Archers_C; PROC SGPLOT data=D2M1_pred noautolegend; band x=Archers_C lower=lcl upper=ucl; scatter x=Archers_C y=Fire_Damage; series x=Archers_C y=pred; *Model 2: Archer Level-2 Random Intercepts; PROC GLIMMIX data=Dragon1 method=MMPL; class Region; model Fire_Damage=Archers_C/s; random Region; output out=D2M2_pred pred lcl ucl; PROC SORT data=D2M2_pred; by Archers_C; PROC SGPLOT data=D2M2_pred noautolegend; band x=Archers_C lower=lcl upper=ucl/group=Region transparency=.90; scatter x=Archers_C y=Fire_Damage/group=Region; series x=Archers_C y=pred/group=Region; *Model 3: Archer Level-2 Random Intercepts and Slopes; PROC GLIMMIX data=Dragon1 method=MMPL; class Region; model Fire_Damage=Archers_C/s; random intercept Archers/subject = Region; output out=D2M3_pred pred lcl ucl; PROC SORT data=D2M3_pred; by Archers_C; PROC SGPLOT data=D2M3_pred noautolegend; band x=Archers_C lower=lcl upper=ucl/group=Region transparency=.90; scatter x=Archers_C y=Fire_Damage/group=Region; series x=Archers_C y=pred/group=Region; *---------------------------------------------------------------------------------------------------------------------------; *EXAMPLE 3: Dragon Hits and Arrows; *Model 1: Arrow Standard Regression; PROC GLIMMIX data=Dragon2 method=MMPL; model DragonHit=Arrows_C/s; output out=D3M1_pred pred lcl ucl; PROC SORT data=D3M1_pred; by Arrows_C; PROC SGPLOT data=D3M1_pred noautolegend; band x=Arrows_C lower=lcl upper=ucl; scatter x=Arrows_C y=DragonHit; series x=Arrows_C y=pred; *Model 2: Arrow Level-2 Random Intercepts; PROC GLIMMIX data=Dragon2 method=MMPL; class Cathedral; model DragonHit=Arrows_C/s; random Cathedral; output out=D3M2_pred pred lcl ucl; PROC SORT data=D3M2_pred; by Arrows_C; PROC SGPLOT data=D3M2_pred noautolegend; *band x=Arrows_C lower=lcl upper=ucl/group=Cathedral transparency=.90; scatter x=Arrows_C y=DragonHit; series x=Arrows_C y=pred/group=Cathedral; *Model 3: Arrow Level-2 Random Intercepts and Slopes; PROC GLIMMIX data=Dragon2 method=MMPL; class Cathedral; model DragonHit=Arrows_C/s; random intercept Arrows_C/subject=Cathedral; output out=D3M3_pred pred lcl ucl; PROC SORT data=D3M3_pred; by Arrows_C; PROC SGPLOT data=D3M3_pred noautolegend; *band x=Arrows_C lower=lcl upper=ucl/group=Cathedral transparency=.90; scatter x=Arrows_C y=DragonHit; series x=Arrows_C y=pred/group=Cathedral; *---------------------------------------------------------------------------------------------------------------------------; *EXAMPLE 4: Dragon Gold and Training; *Model 1: Training Standard Regression; PROC GLIMMIX data=Dragon3 method=MMPL; model DragonGold=TrainingTime_C/s; output out=D4M1_pred pred lcl ucl; PROC SORT data=D4M1_pred; by TrainingTime_C; PROC SGPLOT data=D4M1_pred noautolegend; band x=TrainingTime_C lower=lcl upper=ucl; scatter x=TrainingTime_C y=DragonGold; series x=TrainingTime_C y=pred; *Model 2: Training Level-2 Random Intercepts; PROC GLIMMIX data=Dragon3 method=MMPL; class Commander_2; model DragonGold=TrainingTime_C/s; random Commander_2; output out=D4M2_pred pred lcl ucl; PROC SORT data=D4M2_pred; by TrainingTime_C; PROC SGPLOT data=D4M2_pred noautolegend; band x=TrainingTime_C lower=lcl upper=ucl/group=Commander_2 transparency=.90; scatter x=TrainingTime_C y=DragonGold; series x=TrainingTime_C y=pred/group=Commander_2; *Model 3: Training Level-3 Random Intercepts; PROC GLIMMIX data=Dragon3 method=MMPL; class Commander_2 Cathedral; model DragonGold=TrainingTime_C/s; random Commander_2(Cathedral); output out=D4M3_pred pred lcl ucl; PROC SORT data=D4M3_pred; by TrainingTime_C; PROC SGPLOT data=D4M3_pred noautolegend; where Cathedral='C1'; band x=TrainingTime_C lower=lcl upper=ucl/group=Commander_2 transparency=.90; scatter x=TrainingTime_C y=DragonGold; series x=TrainingTime_C y=pred/group=Commander_2; yaxis ranges=(0-80); title "C1"; PROC SGPLOT data=D4M3_pred noautolegend; where Cathedral='C2'; band x=TrainingTime_C lower=lcl upper=ucl/group=Commander_2 transparency=.90; scatter x=TrainingTime_C y=DragonGold; series x=TrainingTime_C y=pred/group=Commander_2; yaxis ranges=(0-80); title "C2"; PROC SGPLOT data=D4M3_pred noautolegend; where Cathedral='C3'; title "C2"; band x=TrainingTime_C lower=lcl upper=ucl/group=Commander_2 transparency=.90; scatter x=TrainingTime_C y=DragonGold; series x=TrainingTime_C y=pred/group=Commander_2; yaxis ranges=(0-80); title "C3"; *Model 4: Training Level-3 Random Intercepts and Slopes; PROC GLIMMIX data=Dragon3 method=MMPL; class Commander Cathedral; model DragonGold=TrainingTime_C/s; random intercept TrainingTime_C/subject=Commander(Cathedral); random intercept TrainingTime_C/subject=Cathedral; output out=D4M4_pred pred lcl ucl; PROC SORT data=D4M4_pred; by TrainingTime_C; PROC SGPLOT data=D4M4_pred noautolegend; where Cathedral='C1'; band x=TrainingTime_C lower=lcl upper=ucl/group=Commander transparency=.90; scatter x=TrainingTime_C y=DragonGold; series x=TrainingTime_C y=pred/group=Commander; yaxis ranges=(0-80); title "C1"; PROC SGPLOT data=D4M4_pred noautolegend; where Cathedral='C2'; band x=TrainingTime_C lower=lcl upper=ucl/group=Commander transparency=.90; scatter x=TrainingTime_C y=DragonGold; series x=TrainingTime_C y=pred/group=Commander; yaxis ranges=(0-80); title "C2"; PROC SGPLOT data=D4M4_pred noautolegend; where Cathedral='C3'; band x=TrainingTime_C lower=lcl upper=ucl/group=Commander transparency=.90; scatter x=TrainingTime_C y=DragonGold; series x=TrainingTime_C y=pred/group=Commander; yaxis ranges=(0-80); title "C3";