Analyse de régression logistique et scoring avec PROC PLM
En attente de validation
Le script commence par créer un jeu de données 'Neuralgia' via une étape DATA STEP avec des données en ligne (datalines). Il trie ensuite ces données par sexe. Une procédure LOGISTIC est exécutée pour modéliser la variable 'Pain' en fonction de 'Treatment', 'Age' et 'Duration', en utilisant une sélection descendante (backward) des variables. Le modèle est stocké dans l'item store 'painmodel'. Trois tables de scoring ('score1', 'score2', 'score3') sont créées. Enfin, PROC PLM restaure le modèle 'painmodel' et l'applique pour prédire les résultats sur ces trois tables, générant 'score1out', 'score2out', et 'score3out', qui sont ensuite affichés.
Analyse des données
Type : CREATION_INTERNE
Toutes les données sont créées au sein du script via des étapes DATA STEP et l'instruction DATALINES. Aucune lecture de source externe n'est effectuée.
1 Bloc de code
DATA STEP Data
Explication : Ce bloc de code crée la table SAS 'Neuralgia' dans la librairie WORK. Les données sont lues directement depuis le code grâce à l'instruction 'datalines'. L'instruction 'input' définit les variables à lire pour chaque enregistrement.
Copié !
Data Neuralgia;
input Treatment $ Sex $ Age Duration Pain $ @;
datalines;
P F 68 1 No B M 74 16 No P F 67 30 No
P M 66 26 Yes B F 67 28 No B F 77 16 No
A F 71 12 No B F 72 50 No B F 76 9 Yes
A M 71 17 Yes A F 63 27 No A F 69 18 Yes
B F 66 12 No A M 62 42 No P F 64 1 Yes
A F 64 17 No P M 74 4 No A F 72 25 No
P M 70 1 Yes B M 66 19 No B M 59 29 No
A F 64 30 No A M 70 28 No A M 69 1 No
B F 78 1 No P M 83 1 Yes B F 69 42 No
B M 75 30 Yes P M 77 29 Yes P F 79 20 Yes
A M 70 12 No A F 69 12 No B F 65 14 No
B M 70 1 No B M 67 23 No A M 76 25 Yes
P M 78 12 Yes B M 77 1 Yes B F 69 24 No
P M 66 4 Yes P F 65 29 No P M 60 26 Yes
A M 78 15 Yes B M 75 21 Yes A F 67 11 No
P F 72 27 No P F 70 13 Yes A M 75 6 Yes
B F 65 7 No P F 68 27 Yes P M 68 11 Yes
P M 67 17 Yes B M 70 22 No A M 65 15 No
P F 67 1 Yes A M 67 10 No P F 72 11 Yes
A F 74 1 No B M 80 21 Yes A F 69 3 No
;
/* Note: The file path in the original input statement was ignored as it is not valid SAS syntax and data is provided via 'datalines'. */
1
DATA Neuralgia;
2
INPUT Treatment $ Sex $ Age Duration Pain $ @;
3
DATALINES;
4
P F 681 No B M 7416 No P F 6730 No
5
P M 6626 Yes B F 6728 No B F 7716 No
6
A F 7112 No B F 7250 No B F 769 Yes
7
A M 7117 Yes A F 6327 No A F 6918 Yes
8
B F 6612 No A M 6242 No P F 641 Yes
9
A F 6417 No P M 744 No A F 7225 No
10
P M 701 Yes B M 6619 No B M 5929 No
11
A F 6430 No A M 7028 No A M 691 No
12
B F 781 No P M 831 Yes B F 6942 No
13
B M 7530 Yes P M 7729 Yes P F 7920 Yes
14
A M 7012 No A F 6912 No B F 6514 No
15
B M 701 No B M 6723 No A M 7625 Yes
16
P M 7812 Yes B M 771 Yes B F 6924 No
17
P M 664 Yes P F 6529 No P M 6026 Yes
18
A M 7815 Yes B M 7521 Yes A F 6711 No
19
P F 7227 No P F 7013 Yes A M 756 Yes
20
B F 657 No P F 6827 Yes P M 6811 Yes
21
P M 6717 Yes B M 7022 No A M 6515 No
22
P F 671 Yes A M 6710 No P F 7211 Yes
23
A F 741 No B M 8021 Yes A F 693 No
24
;
25
/* Note: The file path in the original input statement was ignored as it is not valid SAS syntax and data is provided via 'datalines'. */
2 Bloc de code
PROC SORT
Explication : Cette procédure trie la table 'Neuralgia' en fonction de la variable 'sex'. Ce tri est requis car la procédure 'PROC LOGISTIC' suivante utilise une instruction 'BY'.
Copié !
proc sort data=Neuralgia;
by sex;
run;
1
PROC SORTDATA=Neuralgia;
2
BY sex;
3
RUN;
3 Bloc de code
PROC LOGISTIC
Explication : Ce bloc exécute une régression logistique sur la table 'Neuralgia'. Le modèle cherche à prédire la variable binaire 'pain'. L'instruction 'class' définit 'Treatment' comme une variable catégorielle. L'option 'selection=backward' demande à la procédure de retirer itérativement les variables non significatives du modèle. L'analyse est effectuée séparément pour chaque valeur de la variable 'sex' (grâce à l'instruction 'by'). Enfin, 'store painmodel' sauvegarde les informations du modèle ajusté dans un item store nommé 'painmodel' pour une utilisation ultérieure.
Copié !
proc logistic data=Neuralgia;
class Treatment / param=glm;
model pain = Treatment Age Duration / selection=backward;
by sex;
store painmodel;
title 'Logistic Model on Neuralgia';
run;
1
PROC LOGISTICDATA=Neuralgia;
2
class Treatment / param=glm;
3
model pain = Treatment Age Duration / selection=backward;
4
BY sex;
5
store painmodel;
6
title 'Logistic Model on Neuralgia';
7
RUN;
4 Bloc de code
DATA STEP Data
Explication : Ces trois étapes DATA STEP créent les tables de données qui seront utilisées pour le scoring. 'score1' est créée avec de nouvelles données. 'score2' est une copie de 'score1' sans la variable 'sex'. 'score3' est une copie de 'score2' sans la variable 'Age'. Cela permet de tester le comportement du scoring avec des variables manquantes.
Copié !
data score1;
input Treatment $ Sex $ Age;
datalines;
A F 20
B F 30
P F 40
A M 20
B M 30
P M 40
;
data score2;
set score1(drop=sex);
run;
data score3;
set score2(drop=Age);
run;
1
DATA score1;
2
INPUT Treatment $ Sex $ Age;
3
DATALINES;
4
A F 20
5
B F 30
6
P F 40
7
A M 20
8
B M 30
9
P M 40
10
;
11
12
DATA score2;
13
SET score1(drop=sex);
14
RUN;
15
16
DATA score3;
17
SET score2(drop=Age);
18
RUN;
5 Bloc de code
PROC PLM Data
Explication : La procédure PLM (Post-Fitting Linear Models) est utilisée ici pour le scoring. Elle commence par restaurer le modèle sauvegardé 'painmodel'. Ensuite, l'instruction 'score' applique ce modèle aux trois tables 'score1', 'score2' et 'score3' pour calculer les prédictions. Les résultats (incluant la probabilité prédite) sont stockés dans les tables de sortie respectives 'score1out', 'score2out' et 'score3out'.
Explication : Ces trois procédures affichent simplement le contenu des trois tables de résultats ('score1out', 'score2out', 'score3out') générées par l'étape de scoring de PROC PLM.
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.
Informations de Copyright : S A S S A M P L E L I B R A R Y
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.