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 X 1, X 2, X 3 et X 4 qui décrivent la situation des entreprises : X 1 : Flux de trésorerie/dette totale X 2 : Revenu Net/ Total des actifs au bilan X 3 : Actif réalisable et disponible/passif courant X 4 : 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 X 1 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 X 1 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 X 2 mesure la performance de production de l entreprise : c est un indicateur de la rentabilité globale de l entreprise. La variable X 3 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 (X 1, X 2 ) (X 1, X 3 ) (X 1, X 4 ) et (X 2, X 3 ) 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; proc sgrender data=entreprise template=scatter; 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 X 1, X 2, X 3, X 4 ) = exp(â 0 + â 1 X 1 + â 2 X 2 + â 3 X 3 + â 4 X 4 ) 1 + exp(â 0 + â 1 X 1 + â 2 X 2 + â 3 X 3 + â 4 X 4 ) model Y=X1 X2 X3 X4; 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 X 3 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 X 1 est égal à 0.16 ou que celui de la variable X 3 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 X 3 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 X 4, l Odd-ratio est de 18.8 donc les chances de faire faillite sont 18 fois plus élevées. Mais comme la variable X 4 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 : n c /T 100 = 94.1 en % avec T nombre total de paires, ici T = 21 25 = 525. n c est le nombre de paires concordantes telles que : (Y i < Y j ) et ˆπ i < ˆπ j. Ce sont les paires bien prédites. Pourcentage disconcordant : n d /T 100 = 5.9 en % Ce sont les paires bien mal prédites. Pourcentage lié : (T n c n d )/T 100 = 0 car n c + n d = T dans notre exemple (pas de paires avec ˆπ i = ˆπ j. D de Somers : (n c n d )/T = 0.882 Gamma : n c n d = 0.882 n c + n d Tau-a : n c n d 0.5N(N 1)
c : n c + 0.5(T n c n d ) ici n c /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 n c + n d = 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). model Y=X1 X2 X3 X4/selection=score best=2; 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 X 2 et X 3 ce qui correspond à une log-vraisemblance de 22.0349. Les procédures de selections backward et forward choisissent plutôt les variables X 1 et X 3. 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 : P (Y = 1 X 1, X 3 ) = exp(6.1501 6.3915X 1 3.1109X 3 ) 1 + exp(6.1501 6.3915X 1 3.1109X 3 ) exp(6.1501 6.3915X 1 3.1109X 3 ) = 1 6.1501 6.3915X 1 3.1109X 3 = 0
Cette droite est appelée droite d isoprobabilité. Créer une table entreprise2 qui contient la variable X 5 = (6.1501/3.0322) (6.5887/3.0322) X 1. Représenter sur le même graphique les entreprises à l aide des points (X 1, X 3 ) et la droite d isoprobabilité pour la classification. 4. Table de Classification, probabilités estimées et résidus : 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; 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 */ /* échantillon calibration */ data plotdata; data entreprise1; set entreprise; set entreprise; where (num<6 or num>40); where (num>5 and num<41);
On peut regarder les fréquences de la variables X 3 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; proc sgplot data=freqout; vbar X3 / response=count group=situation; keylegend / location=inside; 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; 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.