Le script commence par une étape DATA pour générer un jeu de données nommé `test_of_homogeneity`. Il simule des réponses catégorielles (faible, moyen, élevé) pour 175 panélistes (`subjid`) et 8 mesures répétées par panéliste, pour deux produits différents. La simulation utilise la distribution multinomiale 'random-clumped' pour introduire une corrélation intra-cluster. Ensuite, `PROC SURVEYLOGISTIC` est utilisée pour modéliser la réponse `y` en fonction du `product` en tenant compte de la structure en cluster via l'instruction `CLUSTER subjid`. Des estimations et comparaisons de probabilités sont réalisées avec `LSMEANS` et `ESTIMATE`. Enfin, `PROC SURVEYFREQ` calcule un test du chi-carré pour l'association entre `product` et `y`, également ajusté pour le clustering.
Analyse des données
Type : CREATION_INTERNE
Les données sont entièrement générées au sein du premier DATA STEP. Le script simule des résultats trinomiaux pour deux produits en utilisant des paramètres prédéfinis (nombre de clusters, taille des clusters, probabilités sous-jacentes, corrélation intra-cluster) et la fonction `uniform()` pour la génération de nombres aléatoires.
1 Bloc de code
DATA STEP Data
Explication : Ce bloc DATA STEP génère la table `test_of_homogeneity`. Il simule des données pour `n` sujets (clusters) et `m` observations par sujet, pour deux produits. Il utilise une méthode de simulation 'random-clumped multinomial' pour créer des réponses trinomiaux corrélées, en se basant sur des probabilités prédéfinies (`pi11`, `pi12`, etc.) et une corrélation intra-cluster (`rho2`). La graine (`seed`) est fixée pour la reproductibilité.
Copié !
data test_of_homogeneity;
n = 175; *--- Number of Panelists (Clusters) per Test Product;
m = 8; *--- Number of Repeated Measurements per Panelist;
rho2 = 0.15; *--- Intra Cluster Correlation;
pi11 = 0.880; *--- Probability Category 1, Product 1;
pi21 = 0.900; *--- Probability Category 1, Product 2;
pi12 = 0.110; *--- Probability Category 2, Product 1;
pi22 = 0.075; *--- Probability Category 2, Product 2;
seed = 1974; *--- Initial Seed;
rho = sqrt(rho2);
cpi12 = pi11 + pi12;
cpi22 = pi21 + pi22;
do j = 1 to n;
*--- Product 1;
Product = 1;
Subjid = j;
yy = 3;
u = uniform( seed );
if u < cpi12 then yy = 2;
if u < pi11 then yy = 1;
do i=1 to m;
Y = 3;
u = uniform( seed );
if u < rho then y = yy;
else do;
uu = uniform( seed );
if uu < cpi12 then y = 2;
if uu < pi11 then y = 1;
end;
output;
end;
*--- Product 2;
Product = 2;
Subjid = j + n;
yy = 3;
u = uniform( seed );
if u < cpi22 then yy = 2;
if u < pi21 then yy = 1;
do i=1 to m;
Y = 3;
u = uniform( seed );
if u < rho then y = yy;
else do;
uu = uniform( seed );
if uu < cpi22 then y = 2;
if uu < pi21 then y = 1;
end;
output;
end;
end;
keep subjid product y;
run;
1
DATA test_of_homogeneity;
2
n = 175; *--- Number of Panelists (Clusters) per Test Product;
3
m = 8; *--- Number of Repeated Measurements per Panelist;
4
rho2 = 0.15; *--- Intra Cluster Correlation;
5
pi11 = 0.880; *--- Probability Category 1, Product 1;
6
pi21 = 0.900; *--- Probability Category 1, Product 2;
7
pi12 = 0.110; *--- Probability Category 2, Product 1;
8
pi22 = 0.075; *--- Probability Category 2, Product 2;
9
seed = 1974; *--- Initial Seed;
10
rho = sqrt(rho2);
11
cpi12 = pi11 + pi12;
12
cpi22 = pi21 + pi22;
13
DO j = 1 to n;
14
*--- Product 1;
15
Product = 1;
16
Subjid = j;
17
yy = 3;
18
u = uniform( seed );
19
IF u < cpi12 THEN yy = 2;
20
IF u < pi11 THEN yy = 1;
21
DO i=1 to m;
22
Y = 3;
23
u = uniform( seed );
24
IF u < rho THEN y = yy;
25
ELSEDO;
26
uu = uniform( seed );
27
IF uu < cpi12 THEN y = 2;
28
IF uu < pi11 THEN y = 1;
29
END;
30
OUTPUT;
31
END;
32
*--- Product 2;
33
Product = 2;
34
Subjid = j + n;
35
yy = 3;
36
u = uniform( seed );
37
IF u < cpi22 THEN yy = 2;
38
IF u < pi21 THEN yy = 1;
39
DO i=1 to m;
40
Y = 3;
41
u = uniform( seed );
42
IF u < rho THEN y = yy;
43
ELSEDO;
44
uu = uniform( seed );
45
IF uu < cpi22 THEN y = 2;
46
IF uu < pi21 THEN y = 1;
47
END;
48
OUTPUT;
49
END;
50
END;
51
keep subjid product y;
52
RUN;
2 Bloc de code
PROC SURVEYLOGISTIC
Explication : Cette procédure ajuste un modèle de régression logistique pour données d'enquête. Elle modélise la variable de réponse nominale `y` en fonction du `product` avec un lien logit généralisé (`link=glogit`). L'instruction `CLUSTER subjid` est cruciale car elle ajuste les erreurs standard pour la corrélation intra-sujet. Les instructions `LSMEANS` et `ESTIMATE` sont utilisées pour obtenir les probabilités ajustées par catégorie et pour comparer les produits.
Copié !
ods html;
proc surveylogistic data=test_of_homogeneity;
class product subjid / param=glm;
model y (ref=First) = product / link=glogit varadj=morel;
cluster subjid;
lsmeans product / ilink;
estimate 'P12' int 1 product 1 0 / category='1' ilink;
estimate 'P22' int 1 product 0 1 / category='1' ilink;
estimate 'P13' int 1 product 1 0 / category='2' ilink;
estimate 'P23' int 1 product 0 1 / category='2' ilink;
estimate 'P12 Vs P22' product 1 -1 / category='1' exp;
estimate 'P13 Vs P23' product 1 -1 / category='2' exp;
run;
ods html close;
1
ods html;
2
PROC SURVEYLOGISTICDATA=test_of_homogeneity;
3
class product subjid / param=glm;
4
model y (ref=First) = product / link=glogit varadj=morel;
5
cluster subjid;
6
lsmeans product / ilink;
7
estimate 'P12' int 1 product 1 0 / category='1' ilink;
8
estimate 'P22' int 1 product 0 1 / category='1' ilink;
9
estimate 'P13' int 1 product 1 0 / category='2' ilink;
10
estimate 'P23' int 1 product 0 1 / category='2' ilink;
11
estimate 'P12 Vs P22' product 1 -1 / category='1' exp;
12
estimate 'P13 Vs P23' product 1 -1 / category='2' exp;
13
RUN;
14
ods html close;
3 Bloc de code
PROC SURVEYFREQ
Explication : Cette procédure calcule les fréquences et effectue un test du chi-carré (Rao-Scott) pour l'association entre la variable `product` et la réponse `y`. Comme `PROC SURVEYLOGISTIC`, elle utilise l'instruction `CLUSTER subjid` pour tenir compte de la conception de l'échantillonnage en grappes (clustering) et fournir des statistiques de test valides.
Copié !
ods html;
proc surveyfreq data=test_of_homogeneity;
cluster subjid;
tables product * y / chisq;
run;
ods html close;
1
ods html;
2
PROC SURVEYFREQDATA=test_of_homogeneity;
3
cluster subjid;
4
tables product * y / chisq;
5
RUN;
6
ods html close;
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
« Cette architecture de code est un standard de "best practice" pour les études sensorielles ou cliniques où un même sujet évalue plusieurs fois un produit. Elle assure que la significativité observée est bien due au produit et non à un artefact lié à la répétition des mesures. »
SAS et tous les autres noms de produits ou de services de SAS Institute Inc. sont des marques déposées ou des marques de commerce de SAS Institute Inc. aux États-Unis et dans d'autres pays. ® indique un enregistrement aux États-Unis. WeAreCAS est un site communautaire indépendant et n'est pas affilié à SAS Institute Inc.
Ce site utilise des cookies techniques et analytiques pour améliorer votre expérience.
En savoir plus.