TP SAS 6 : Régression logistique binomiale - Lsta
TP SAS 6 : Régression logistique binomiale - Lsta
TP SAS 6 : Régression logistique binomiale - Lsta
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
M2 IFMA et MPE<br />
<strong>TP</strong> <strong>SAS</strong> : Régression <strong>logistique</strong> <strong>binomiale</strong><br />
Dans ce <strong>TP</strong>, on s’intéresse à une population de limules (Horseshoe crab). Des biologistes ont observé<br />
que l’on trouve parfois plusieurs mâles (appelés satellites) à proximité du nid d’une femelle limule où<br />
un mâle est déjà installé. Il s’agit de déterminer quelles variables peuvent expliquer la présence ou<br />
non de satellites près d’un nid. Les données sont disponibles dans le fichier Limule.txt. On dispose des<br />
variables suivantes :<br />
– la variable couleur de la carapace, codée du plus clair au plus foncé de 2 à 5 ;<br />
– la variable épine qui décrit l’état des deux épines mobiles :<br />
1 : les deux épines sont en bon état,<br />
2 : une épine abîmée,<br />
3 : deux épines abîmées ;<br />
– la variable largeur de la carapace ;<br />
– la variable nombre de satellites relevés près du nid ;<br />
– la variable poids de la carapace.<br />
Créez un répertoire consacré à cette séance <strong>SAS</strong> et associez ce répertoire à une librairie <strong>SAS</strong> que<br />
vous nommerez RegLog. Importez les données du fichier Limule.dat dans une table <strong>SAS</strong> RegLog.Limule.<br />
Décalez le code pour la couleur de la carapace de 1 à 4. Divisez par 1000 le poids des carapaces :<br />
data RegLog.Limule;<br />
infile ’’;<br />
input couleur epine largeur satellite poids;<br />
couleur = couleur - 1;<br />
poids = poids/1000;<br />
run;<br />
Liaisons de la variables Satellite avec des variables catégorielles<br />
1. Effectuez un test d’indépendance du χ 2 entre la variable satellite et la variable couleur :<br />
proc freq data = RegLog.Limule;<br />
tables couleur *satellite / chisq;<br />
run;<br />
1
2. Proposez un test du χ 2 plus raisonnable pour tester l’hypothèse d’indépendance entre couleur<br />
et satellite. Pour cela, définissez :<br />
– une nouvelle variable dark qui prend la valeur 1 si la couleur de la carapace vaut 4 est 0 sinon,<br />
– une nouvelle variable satellite01 qui prend la valeur 1 si un satellite est observé près du nid et<br />
qui vaut 0 sinon.<br />
Effectuez un test du χ 2 entre les deux nouvelles variables satellite01 et dark.<br />
3. Effectuez un test du χ 2 entre les variables satellite01 et epine.<br />
Liaisons de la variable Satellite01 avec des variables continues<br />
Dans cette section, on étudie les liaisons éventuelles entre la présence de satellites et le poids ou<br />
la largeur de la carapace de la limule.<br />
4. Pour chacune de ces deux variables continues, comparez les distributions en présence ou non de<br />
satellites. On pourra dresser des nuages de points, des boxplots et des histogrammes.<br />
5. Utilisez une procédure ttest pour discuter l’existence d’une liaison entre la présence d’un satellite<br />
et la valeur prise par l’une ou l’autre des deux variables poids et largeur.<br />
6. Que dire de l’information apportée par les deux variables poids et largeur <br />
Probabilités a posteriori<br />
Dans cette section, on cherche à modéliser la présence d’un satellite (variable satellite01) à l’aide<br />
de la variable continue poids. Le code correspondant à cette section est disponible ici.<br />
7. Affichez le nuage de des couples (poids,satellite01) :<br />
title ’Présence d’’un satellite expliqué par le poids de la limule’;<br />
proc gplot data= RegLog.Limule;<br />
symbol color=brown value=dot;<br />
plot satellite01 * poids ;<br />
label satellite01=’Présence d’’un satellite’<br />
poids=’Poids de la limule (en kg)’;<br />
run;<br />
8. On préfère au graphique précédent une représentation des probabilités a posteriori<br />
p ↦→ P(présence d’un satellite | poids = p).<br />
Pour représenter ces probabilités a posteriori, nous allons définir une partition en classes de poids<br />
et estimer les probabilités sur ces classes. Une partition de la variable poids s’obtient facilement<br />
en utilisant un format défini par l’utilisateur. Le code suivant définit un nouveau format qui, une<br />
fois appliqué à la variable poids crée une partition des observations en 6 catégories de poids :<br />
proc format;<br />
value fpoids<br />
0-1.5=’inf 1.5’<br />
1.5-2=’1.5-2’<br />
2-2.5=’2-2.5’<br />
2.5-3=’2.5-3’<br />
3-3.5=’3-3.5’<br />
3.5-100=’sup 3.5’;<br />
run;<br />
data RegLog.Limulebis;<br />
set RegLog.Limule;<br />
format poids fpoids. ;<br />
run;<br />
2
Vérifiez que le format a été correctement affecté à la variable poids dans la tableRegLog.Limulebis<br />
à l’aide d’une proc print. Il est maintenant possible de calculer les moyennes dans chaque classe<br />
à l’aide d’une proc means :<br />
proc means data=RegLog.Limulebis mean;<br />
class poids;<br />
var satellite01 poids;<br />
output out=RegLog.Limulemean mean=presencesat poidsmean;<br />
run;<br />
Affichez la table RegLog.Limulemean dans laquelle les moyennes ont été enregistrées. Quel est le<br />
format de la variable poidsmean de cette table Affectez un format numérique à cette variable<br />
et dressez le graphique des probabilités a posteriori.<br />
9. Le logarithme des côtes :<br />
Ω : p ↦→<br />
P(présence d’un satellite | poids = p)<br />
P(pas de satellite | poids = p)<br />
est-il linéaire en la variable poids Proposez une première estimation rudimentaire des coefficients<br />
du modèle de régression <strong>logistique</strong> de la variable Satellite01 par la variable poids.<br />
Régression <strong>logistique</strong> de Satellite01 par le poids<br />
10. Effectuez la régression <strong>logistique</strong> de la présence d’un satellite par le poids de la limule :<br />
proc logistic data = RegLog.Limule plot(only) = (roc effect);<br />
title ’Régression <strong>logistique</strong> par le poids’;<br />
model satellite01(event = ’1’) = poids / expb ctable pprob= 0.5;<br />
run;<br />
Analysez le code et interprétez les sorties.<br />
Régression <strong>logistique</strong> de Satellite01 par une variable catégorielle<br />
11. Cas dichotomique : effectuez la régression <strong>logistique</strong> de la présence d’un satellite par le variable<br />
dark :<br />
proc logistic data = RegLog.Limule plots(only) = oddsratio ;<br />
title ’Régression <strong>logistique</strong> avec dark’;<br />
class dark;<br />
model satellite01(event = ’1’) = dark / expb ctable pprob= 0.5;<br />
oddsratio dark;<br />
run;<br />
12. Cas polytomique : effectuez la régression <strong>logistique</strong> de la présence d’un satellite par le variable<br />
épine :<br />
proc logistic data = RegLog.Limule plots(only) = oddsratio;<br />
title ’Régression <strong>logistique</strong> avec epine’;<br />
class epine (param=ref ref=’1’);<br />
model satellite01(event = ’1’) = epine / expb ctable pprob= 0.5;<br />
oddsratio epine;<br />
run;<br />
3
Régression <strong>logistique</strong> de Satellite01 par le poids et la couleur<br />
13. Définir formellement le modèle de régression <strong>logistique</strong> qui explique la présence d’un satellite<br />
par les variables poids et dark.<br />
14. Utilisez le code ci-dessous pour ajuster ce modèle de régression <strong>logistique</strong> sur les données. Y-at-il<br />
un ≪ effet carapace foncée ≫ Comparez graphiquement les probabilités a posteriori pour les<br />
carapaces foncées et claires.<br />
proc logistic data = RegLog.Limule plots(only) = (roc oddsratio effect);<br />
title ’Régression <strong>logistique</strong> avec poids et dark’;<br />
class dark;<br />
model satellite01(event = ’1’ ) = poids dark / expb ctable pprob= 0.5;<br />
oddsratio dark;<br />
oddsratio poids;<br />
run;<br />
Régression <strong>logistique</strong> et sélection de variable<br />
15. Discutez les sorties fournies par la code ci-dessous :<br />
proc logistic data = RegLog.Limule plots(only) = (roc oddsratio effect);<br />
title ’Régression <strong>logistique</strong> avec les quatre variables’;<br />
class epine dark;<br />
model satellite01 = poids largeur epine dark / ctable pprob= 0.5;<br />
oddsratio dark;<br />
oddsratio poids;<br />
oddsratio largeur;<br />
oddsratio epine;<br />
effectplot slicefit(sliceby=epine plotby=dark);<br />
run;<br />
16. Effectuez une sélection de variable par un algorithme backward pour identifier un modèle de<br />
régression <strong>logistique</strong> parcimonieux en utilisant l’option selection = stepwise dans l’instruction<br />
model :<br />
proc logistic data = RegLog.Limule plots(only) = (roc oddsratio effect);<br />
title ’Régression <strong>logistique</strong> et sélection de variable’;<br />
class epine dark;<br />
model satellite01 = poids largeur epine dark / ctable pprob= 0.5<br />
selection = backward ;<br />
run;<br />
4