This example illustrates using various methods in SAS Software to compute the
reliability statistics presented in MacLennan (1993).
- MacLennan, R.N. (1993), "Interrater Reliability
With SPSS for Windows 5.0," The American Statistician, 47(4), 292-296.
In data set TABLE1, each score on page 293 of the article is referenced
by a JUDGE / PAIR combination. This is the format that PROC GLM
will need. The data set will be transposed later for PROC CORR.
data table1;
length pair $ 6;
input judges $ 1-7 @@;
do pair='first','second','third','fourth','fifth','sixth';
input score @;
output;
end;
datalines;
France 5.9 5.8 5.5 5.6 5.4 5.5
Czech 5.9 5.7 5.7 5.8 5.5 5.2
Austl 5.9 5.8 5.7 5.6 5.4 5.2
USA 5.9 5.7 5.8 5.7 5.4 5.3
Germany 5.8 5.7 5.3 5.4 5.4 5.1
Canada 5.8 5.7 5.6 5.6 5.4 5.4
Italy 5.9 5.8 5.5 5.3 5.4 5.2
Unified 5.9 5.8 5.7 5.6 5.4 5.2
UK 5.9 5.8 5.3 5.7 5.5 5.3
;
proc print noobs;
title 'Interrater Reliability with the %INTRACC macro';
run;
The following statements invoke the %INTRACC macro and compute the following:
- (1b) is given automatically as type III MS for Judges
- (4b) = S-F fixed set
- (3b) = S-F fixed set mean
/* Define the INTRACC macro */
%inc "<location of your file containing the INTRACC macro>";
%intracc(data=table1,target=pair,depvar=score,rater=judges,print=3);
Abbreviated output from the %INTRACC macro call follows:
Interrater Reliability with the %INTRACC macro
Intraclass Correlations for Inter-Rater Reliability
The GLM Procedure
Dependent Variable: score
Sum of
Source DF Squares Mean Square F Value Pr > F
Model 13 2.35796296 0.18138177 16.14 <.0001
Error 40 0.44962963 0.01124074
Corrected Total 53 2.80759259
R-Square Coeff Var Root MSE score Mean
0.839852 1.900168 0.106022 5.579630
Source DF Type I SS Mean Square F Value Pr > F
pair 5 2.18537037 0.43707407 38.88 <.0001
judges 8 0.17259259 0.02157407 1.92 0.0838
Source DF Type III SS Mean Square F Value Pr > F
pair 5 2.18537037 0.43707407 38.88 <.0001
judges 8 0.17259259 0.02157407 1.92 0.0838
Interrater Reliability with the %INTRACC macro
Intraclass Correlations for Inter-Rater Reliability
Calculate all reliabilities in one fell swoop
_NAME_ msw msb wms ems edf bms bdf jms jdf
score 0.012963 0.43707 0.012963 0.011241 40 0.43707 5 0.021574 8
Winer
Winer reliability: Shrout-Fleiss Shrout-Fleiss
reliability: mean of reliability: reliability:
_NAME_ k theta single score k scores single score random set
score 9 3.63524 0.78426 0.97034 0.78426 0.78495
Shrout-Fleiss Shrout-Fleiss Shrout-Fleiss Shrout-Fleiss
reliability: reliability: rel: rand set rel: fxd set
_NAME_ fixed set mean k scores mean k scrs mean k scrs
score 0.80803 0.97034 0.97046 0.97428
Compute (2b) from the output data set.
(3b) as above can be computed here too.
data alpha;
set _stats_;
if upcase(_source_)='JUDGES' and _type_='SS1' then do;
alpha=1-(1/f);
stat='reliability/consistency across skaters';
output;
end;
if upcase(_source_)='PAIR' and _type_='SS1' then do;
alpha=1-(1/f);
stat='reliability/consistency across judges';
output;
end;
run;
proc print data=alpha noobs;
var alpha stat;
title;
run;
The above statements produce the following output:
alpha stat
0.47897 reliability/consistency across skaters
0.97428 reliability/consistency across judges
title 'Another approach pp. 294-5: Transpose and use PROC CORR ALPHA';
proc transpose data=table1 out=out(where=(upcase(_name_) eq 'SCORE'));
id pair;
by judges notsorted;
run;
proc print data=out noobs;
title2 'examine the skaters';
run;
proc corr alpha data=out;
var first -- sixth;
run;
The above statements produce the following abbreviated output:
Another approach pp. 294-5: Transpose and use PROC CORR ALPHA
examine the skaters
judges _NAME_ first second third fourth fifth sixth
France score 5.9 5.8 5.5 5.6 5.4 5.5
Czech score 5.9 5.7 5.7 5.8 5.5 5.2
Austl score 5.9 5.8 5.7 5.6 5.4 5.2
USA score 5.9 5.7 5.8 5.7 5.4 5.3
Germany score 5.8 5.7 5.3 5.4 5.4 5.1
Canada score 5.8 5.7 5.6 5.6 5.4 5.4
Italy score 5.9 5.8 5.5 5.3 5.4 5.2
Unified score 5.9 5.8 5.7 5.6 5.4 5.2
UK score 5.9 5.8 5.3 5.7 5.5 5.3
Cronbach Coefficient Alpha
Variables Alpha
----------------------------
Raw 0.478970
Standardized 0.537838
proc sort data=table1 out=table1; by pair; run;
proc transpose data=table1 out=out(where=(upcase(_name_) eq 'SCORE'));
id judges;
by pair;
run;
proc print data=out noobs;
title2 'examine the judges';
run;
proc corr alpha data=out;
var france -- uk;
run;
The above statements produce the following abbreviated output:
Another approach pp. 294-5: Transpose and use PROC CORR ALPHA
examine the judges
pair _NAME_ France Czech Austl USA Germany Canada Italy Unified UK
fifth score 5.4 5.5 5.4 5.4 5.4 5.4 5.4 5.4 5.5
first score 5.9 5.9 5.9 5.9 5.8 5.8 5.9 5.9 5.9
fourth score 5.6 5.8 5.6 5.7 5.4 5.6 5.3 5.6 5.7
second score 5.8 5.7 5.8 5.7 5.7 5.7 5.8 5.8 5.8
sixth score 5.5 5.2 5.2 5.3 5.1 5.4 5.2 5.2 5.3
third score 5.5 5.7 5.7 5.8 5.3 5.6 5.5 5.7 5.3
Cronbach Coefficient Alpha
Variables Alpha
----------------------------
Raw 0.974282
Standardized 0.977863