L'utilisation du modèle COSAN au sein de la PROC CALIS représente l'approche la plus flexible et la plus rigoureuse pour tester des structures de covariance non conventionnelles. Contrairement aux modèles par défaut, COSAN vous permet de décomposer la matrice de corrélation selon votre propre logique mathématique, ici $D \cdot B + D \cdot \Psi$. Ce script est remarquable car il utilise des instructions de programmation SAS intégrées pour lier les paramètres entre eux. En définissant des dépendances strictes (comme b12 = alpha - b11), vous n'estimez pas simplement des poids factoriels : vous testez une hypothèse théorique précise sur la répartition de la variance entre deux facteurs, tout en forçant le respect de la structure unitaire de la diagonale via le calcul dynamique de la matrice Psi.
Type : CREATION_INTERNE
Les données sont une matrice de corrélation (TYPE=CORR) créée directement dans le script via un DATA STEP et des datalines.
| 1 | DATA kinzer(type=corr); |
| 2 | title "Data Matrix of Kinzer & Kinzer, see GUTTMAN (1957)"; |
| 3 | _type_ = 'corr'; |
| 4 | INPUT _name_ $ var1-var6; |
| 5 | DATALINES; |
| 6 | var1 1.00 . . . . . |
| 7 | var2 .51 1.00 . . . . |
| 8 | var3 .46 .51 1.00 . . . |
| 9 | var4 .46 .47 .54 1.00 . . |
| 10 | var5 .40 .39 .49 .57 1.00 . |
| 11 | var6 .33 .39 .47 .45 .56 1.00 |
| 12 | ; |
| 1 | PROC CALIS DATA=Kinzer nobs=326 nose; |
| 2 | cosan |
| 3 | var= var1-var6, |
| 4 | D(6,DIA) * B(2,GEN) + D(6,DIA) * Psi(6,DIA); |
| 5 | matrix B |
| 6 | [ ,1] = b11 b21 b31 b41 b51 b61, |
| 7 | [ ,2] = b12 b22 b32 b42 b52 b62; |
| 8 | matrix Psi |
| 9 | [1,1] = psi1-psi6; |
| 10 | matrix D |
| 11 | [1,1] = d1-d6; |
| 12 | parameters alpha (1.); |
| 13 | |
| 14 | /* SAS Programming Statements to Define Dependent Parameters*/ |
| 15 | /* 6 constraints on the factor loadings */ |
| 16 | b12 = alpha - b11; |
| 17 | b22 = alpha - b21; |
| 18 | b32 = alpha - b31; |
| 19 | b42 = alpha - b41; |
| 20 | b52 = alpha - b51; |
| 21 | b62 = alpha - b61; |
| 22 | |
| 23 | /* 6 Constraints on Correlation structures */ |
| 24 | psi1 = 1. - b11 * b11 - b12 * b12; |
| 25 | psi2 = 1. - b21 * b21 - b22 * b22; |
| 26 | psi3 = 1. - b31 * b31 - b32 * b32; |
| 27 | psi4 = 1. - b41 * b41 - b42 * b42; |
| 28 | psi5 = 1. - b51 * b51 - b52 * b52; |
| 29 | psi6 = 1. - b61 * b61 - b62 * b62; |
| 30 | vnames |
| 31 | D = [var1-var6], |
| 32 | B = [factor1 factor2], |
| 33 | Psi = D; |
| 34 | RUN; |