*** Alpha.sas ***;
options pageno=min nodate formdlim='-';
title 'Computing Cronbach''s alpha with SAS.'; run;
data Kevin; infile 'D:/StatData/kj.dat'; input (q1-q10) (1.);
proc corr nosimple nocorr nomiss alpha; var q1-q10;
title2 'The easy way, let Proc Corr do it.'; run;
****************************************************************************;
data alpha; set Kevin;
if nmiss (of Q1-Q10) > 0 then delete;
TOT=Q1+Q2+Q3+Q4+Q5+Q6+Q7+Q8+Q9+Q10;
proc means var; var q1-q10 tot;
  OUTPUT OUT=VarOut VAR=VQ1-VQ10 VTot;
title 'Computing alpha from item variances.';
DATA _NULL_; FILE PRINT; SET VAROUT;
SUMVAR = SUM(OF VQ1-VQ10);
Alpha = (10/9)*(1-SUMVAR/VTOT); 
put;
put Alpha = ;
run;
***************************************************************************;
data lambda4; set Kevin;
if nmiss (of Q1-Q4) > 0 then delete;
A1=Q1+Q2; B1=Q3+Q4;  A2=Q1+Q3; B2=Q2+Q4;  A3=Q1+Q4; B3=Q2+Q3;
TOT=Q1+Q2+Q3+Q4;
proc corr nosimple nocorr nomiss alpha; var Q1-Q4;
title 'Alpha on just the first four items';
proc corr nosimple nomiss; var A1; with B1;
title 'The first split half correlation'; run;
proc corr nosimple nomiss; var A2; with B2;
title 'The second split half correlation'; run;
proc corr nosimple nomiss; var A3; with B3;
title 'The third split half correlation'; run;
proc means var; var a1 -- tot;
  output out=Var4 var=vA1 vB1 vA2 vB2 vA3 vB3 vTot;
title 'Computing maximized lambda4 and alpha from all possible split-halves';
DATA _NULL_; FILE PRINT; SET Var4;
Lam1=2*(1-(vA1+vB1)/vTot); Lam2=2*(1-(vA2+vB2)/vTot); Lam3=2*(1-(vA3+vB3)/vTot);
Alpha=(Lam1 + Lam2 + Lam3)/3;
put;
put lam1=  lam2=  lam3= ;
put Alpha=  ; run;