1 Les données - Université de Montpellier

publicité
Université de Montpellier 2
M2 MASS
TP5 : Introduction au logiciel SAS
Classification supervisée : Analyses Discriminantes et Régression Logistique
1
Les données
On étudie les données du fichier entreprises.txt qui présentent 46 entreprises dont certaines
ont fait faillite (valeur 1) et d’autres ont gardé une situation financière stable (valeur 2). On
dispose de 4 variables quantitatives X1 , X2 , X3 et X4 qui décrivent la situation des entreprises :
– X1 : Flux de trésorerie/Dette totale
– X2 : Revenu Net/ Total des actifs au bilan
– X3 : Actif réalisable et disponible/Passif courant
– X4 : Actif réalisable/Ventes nettes
Le passif représente ce que l’entreprise doit. Le passif courant regroupe les dettes des fournisseurs, les provisions, les emprunts. Ce sont des dettes dont l’échéance est inférieure à 12 mois
(court terme).
L’actif désigne l’ensemble du patrimoine de l’entreprise.
La variable X1 est un indicateur de la bonne santé de l’entreprise. Le Flux de trésorerie est
la différence entre les recettes et les dépenses. Si X1 est négative, c’est que le flux de trésorerie
est négatif : les dépenses de l’entreprise sont supérieures aux recettes.
La variable X2 mesure la performance de production de l’entreprise : c’est un indicateur de
la rentabilité globale de l’entreprise.
La variable X3 exprime la capacité de l’entreprise à rembourser ses dettes à court terme.
Deux ans après le recueil de ces données, on sait que 21 de ces entreprises ont fait faillite et
que 25 ont conservé une situation financière stable. On cherche à mettre en œuvre des méthodes
de classification supervisée afin de prédire à 2 ans la situation financière des entreprises.
Première Analyse des données
La procédure DISCRIM de SAS permet de faire une analyse discriminante des données.
1. Créer la table SAS des données à partir du fichier entreprise.txt disponible sur l’ENT. Ajouter
une variable qualitative situation dont les modalités sont "Faillite" ou "Stable" selon l’état
de l’entreprise (1 ou 2).
2. Réaliser une PROC MEANS de la table créée pour visualiser l’étendue de chacune des variables.
3. Représenter les couples de variables (X1 , X2 ) (X1 , X3 ) (X1 , X4 ) et (X2 , X3 ) en utilisant un
style différent pour les entreprises ayant fait faillite et les autres. Pour cela on définit un style
de graphique à l’aide de la PROC TEMPLATE et on utilise la procédure SGRENDER. Cette procédure
permet de faire des graphiques à partir de modèles qui ont été définis par la procédure TEMPLATE.
define statgraph scatter;
begingraph;
entrytitle ’Données de Faillites des entreprises’;
layout overlayequated / equatetype=fit; /* pour la légende */
scatterplot x=X1 y=X3 / group=situation name="malegende";
layout gridded / autoalign=(topleft);
discretelegend "malegende" /border=false opaque=false;
endlayout;
endlayout;
endgraph;
end;
run;
proc sgrender data=entreprise template=scatter;
run;
2
Régression Logistique
Nous allons utiliser la PROC LOGISTIC de SAS dans le cas d’une variable de classification
binaire (2 groupes).
1. Modèle complet. Nous commençons d’abord par le modèle avec toutes les variables pour
examiner les sorties fournies par la proc LOGISTIC :
π̂ = (P (Y = 1|X1 , X2 , X3 , X4 ) =
exp(â0 + â1 X1 + â2 X2 + â3 X3 + â4 X4 )
1 + exp(â0 + â1 X1 + â2 X2 + â3 X3 + â4 X4 )
PROC LOGISTIC data=entreprise;
model Y=X1 X2 X3 X4;
run;
On obtient différents tableaux en sortie. Notamment, des tests globaux de la nullité des paramètres, les estimations des paramètres avec tests de Wald (significativité). On peut voir que
seule la variable X3 a une influence significative (p-value inférieure à 0.05). Enfin, on a le
tableau des Odd-ratios ou rapports des cotes. Ainsi, on observe que l’Odd-ratio pour la
variable X1 est égal à 0.16 ou que celui de la variable X3 est de 0.043. Cela signifie que
exp(â3 ) = exp(−3.1577) = 0.043. On l’interprète de la façon suivante : si la variable X3 augmente
d’1 unité, les autres variables du modèles restant constantes, alors les chances de faire faillite sont
1/0.043=23 fois plus faibles pour l’entreprise. En revanche, pour la variable X4 , l’Odd-ratio est
de 18.8 donc les chances de faire faillite sont 18 fois plus élevées. Mais comme la variable X4 n’est
pas significative dans ce modèle, on n’interprète pas son Odd-ratio.
Le dernier tableau fournit des mesures d’associations entre les probabilités calculées et les valeurs
de Y observées :
– Pourcentage concordant : nc /T × 100 = 94.1 en % avec T nombre total de paires, ici
T = 21×25 = 525. nc est le nombre de paires concordantes telles que : (Yi < Yj ) et π̂i < π̂j .
Ce sont les paires bien prédites.
– Pourcentage disconcordant : nd /T ×100 = 5.9 en % Ce sont les paires bien mal prédites.
– Pourcentage lié : (T − nc − nd )/T × 100 = 0 car nc + nd = T dans notre exemple (pas
de paires avec π̂i = π̂j .
– D de Somers : (nc − nd )/T = 0.882
– Gamma :
nc − nd
= 0.882
nc + nd
– Tau-a :
n − c − nd
0.5N (N − 1)
– c:
nc + 0.5(T − nc − nd )
ici nc /T = 0.941
T
il représente l’aire sous la courbe ROC, c’est une mesure du pouvoir prédictif du modèle.
Les indices D de Somers et Gamma sont égaux ici car nc + nd = T , plus le nombre de paires
concordantes est proche du nombre total de paires, plus le pouvoir prédictif du modèle est bon.
Ici, 0.882 est proche de 1.
2. Sélection de variables : Comme pour la régression linéaire avec la procédure REG, nous
allons procéder à la recherche du meilleur modèle. Comparer les différentes méthodes à l’aide de
l’option selection= (backward, forward et score).
PROC LOGISTIC data=entreprise;
model Y=X1 X2 X3 X4/selection=score best=2;
run;
L’option selection=score choisit le modèle qui maximise la log-vraisemblance (le score) pour
chaque sous-modèle. Ici, le meilleur modèle à 2 variables, au sens du score de la log-vraisemblance
est le modèle estimé avce les variables X2 et X3 ce qui correspond à une log-vraisemblance de
22.0349. Les procédures de selections backward et forward choisissent plutôt les variables X1 et
X3 .
3. Représentation graphique : On représente ensuite les entreprises dans les plans (1, 3) avec
une droite frontière dont on trouve l’équation qui correspond à la probabilité de faire faillite égale
à 0.5 :
exp(6.1501 − 6.3915X1 − 3.1109X3 )
1 + exp(6.1501 − 6.3915X1 − 3.1109X3 )
exp(6.1501 − 6.3915X1 − 3.1109X3 ) = 1
P (Y = 1|X1 , X3 ) =
6.1501 − 6.3915X1 − 3.1109X3 = 0
Cette droite est appelée droite d’isoprobabilité. Créer une table entreprise2 qui contient la
variable X5 = (6.1501/3.0322) − (6.5887/3.0322) × X1 .
Représenter sur le même graphique les entreprises à l’aide des points (X1 , X3 ) et la droite
d’isoprobabilité pour la classification.
4. Table de Classification, probabilités estimées et résidus :
PROC LOGISTIC data=entreprise;
model Y=X2 X3 /ctable
pprob=(0 to 0.48 by 0.04, 0.5, 0.52 to 1 by 0.04);
output out=result predicted=predicted xbeta=xbeta lower=lower
upper=upper reschi=reschi resdev=resdev;
run;
Faire l’analyse des résidus. Examiner la table de classification.
5. Courbes ROC Représenter la courbe ROC de la sensibilité en fonction de (1-spécificité) à
l’aide de l’option plots=ROC.
3
Analyse discriminante
La procédure DISCRIM de SAS permet de faire une analyse discriminante des données.
1. On extrait un échantillon d’apprentissage (ou de calibration) et un échantillon de test :
/* échantillon test */
data plotdata;
set entreprise;
where (num<6 or num>40);
run;
/* échantillon calibration */
data entreprise1;
set entreprise;
where (num>5 and num<41);
run;
On peut regarder les fréquences de la variables X3 qui apparaissait comme la plus prédictive
de la situation financière dans la régression logistique :
proc freq data=entreprise noprint;
tables X3 * situation / out=freqout;
run;
proc sgplot data=freqout;
vbar X3 / response=count group=situation;
keylegend / location=inside;
run;
2. On fait l’analyse discriminante linéaire (option pool=yes) sur la table entreprise1 qui
contient l’échantillon d’apprentissage (n = 35)
title2 ’Densités gaussiennes avec variance égales dans les groupes’;
proc discrim data=entreprise1 method=normal pool=yes
/* pool=yes : pour l’analyse discriminante linéaire */
/* pool=no : pour l’analyse discriminante quadratique */
testdata=plotdata testout=plotp testoutd=plotd
short noclassify crosslisterr ;
class situation;
var X1 X3;
run;
Indiquer ce que produisent les différentes options short, noclassify, crosslisterr. Dire ce
que contiennent les tables plotdata, plotp et plotd. Donner la matrice de confusion.
Téléchargement