Archives pour octobre 2009

Macro SAS pour calculer le Omega total de McDonald

18 octobre 2009

Dernière, la littérature psychométrique semble en venir au consensus que le coefficient alpha (souvent attribué à tord à Cronbach, alors qu’il provient de Guttman) n’est pas le meilleur estimateur de la cohérence interne d’un test. Voici une macro SAS pour calculer un autre estimateur réputé comme meilleur que le Alpha de Cronbach :

/*
MACRO PAR DENIS TALBOT B.Sc.
denis.talbot3.1415@gmail.com

Dernière mise-à-jour 16 octobre 2009, SAS v9.2

Appeller la macro par
omega(data=,var=,out=);
Où var doit être une liste de variable sans raccourci (e.g. -, –).
Out est le nom SAS pour le fichier de sortie

RÉFÉRENCES:

Pour ne pas utiliser la alpha de Cronbach:

Sijtsma, K. (2009). On the use, the misuse, and the very limited usefulness of Cronbach’s alpha. Psychometrika, 74(1), 107-120.

Huysamen, G.K. (2006). Coefficient alpha: Unnecessarily ambiguous, unduly ubiquitous. SA Journal of Industrial Psychology, 32(4), 34-40.

Sur l’Omega total:

*Revelle, W., & Zinbarg, R.E. (2009). Coefficients alpha, beta, omega and the glb: comments on Sijtsma. Psychometrika. doi:10.1007/s11336-008-9102-z.

McDonald, R.P. (1999). Test theory: A unified treatment. Hillsdale: Erlbaum.

*Référence principale. La macro SAS présentée ici est inspirée du programme R du package psych
mentionnée dans cet article.
*/

%MACRO omega(data=,var=, out=);
%let _i=1;
%do %while (%scan(&var,&_i) ne %str() );
%let arg&_i=%scan(&var,&_i);
%let _i=%eval(&_i+1);
%end;
%let nvar=%eval(&_i-1);

PROC CALIS DATA = &data OUTEST = _cfa_ METHOD = ML NOPRINT;
VAR &var;
LINEQS
%DO _i=1 %TO (&nvar – 1);
&&arg&_i = f1 + e&_i,
%END;
&&arg&nvar =f1 + e&nvar;
std
f1 = 1,
e1 – e&nvar = ee:;
RUN;

DATA _cfa_;
SET _cfa_;
IF _TYPE_ = ‘PARMS’;
s_uniq = sum(of ee1-ee&nvar);
KEEP s_uniq;
RUN;
ODS LISTING CLOSE;
ODS OUTPUT PearsonCorr=PearsonCorr;
PROC CORR DATA = &data; VAR &var; RUN;
ODS LISTING;
DATA PearsonCorr;
SET PearsonCorr;
VT = sum(of &arg1–&&arg&nvar);
KEEP VT;
RUN;

PROC MEANS DATA = PearsonCorr NOPRINT; Var VT; OUTPUT OUT = PearsonCorr SUM=VT; RUN;

DATA &out; MERGE _cfa_ PearsonCorr; Omega = 1 – s_uniq/VT; KEEP Omega; RUN;

PROC PRINT DATA = &out; RUN;

%MEND;

Denis

D de Cohen

18 octobre 2009

Macro SAS pour calculer le D de Cohen

%macro D_COHEN(fichier=, var_class= , var= );

ods output ttests=ttest_proc(drop=method) statistics=stat_desc1 equality=equal1(drop=method);

proc ttest data= &fichier;

class &var_class;

var &var;

run;

proc sort data=ttest_proc;

by variable;

run;

proc sort data=equal1;

by variable;

run;

data d_cohen;

merge ttest_proc equal1;

by variable;

if Probf LT 0.05 then do;

if variances=’Equal’ then delete;

end;

if Probf GE 0.05 then do;

if variances=’Unequal’ then delete;

end;

D_COHEN=tvalue*(numdf+dendf+2)/(sqrt(DF)*sqrt((numdf+1)*dendf+1));

run;

proc print data=d_cohen;

var variable probt d_cohen;

run;

%mend;

Par Simon Olivier