Beruflich Dokumente
Kultur Dokumente
8 janvier 2013
Sommaire
1.1
1.2
Description . . . . . . . . . . . . . . . . . . . .
Enonc
e . . . . . . . . . . . . . . . . . . . . . . .
1.2.1 Preparation des donnees . . . . . . . . . . . .
1.2.2 Valeurs manquantes . . . . . . . . . . . . . .
1.2.3 Mod`ele de regression logistique . . . . . . . .
1.2.4 Decision : oui ou non . . . . . . . . . . . . . .
1.2.5 Validation par bootstrap . . . . . . . . . . . .
1.2.6 n-Validation croisee . . . . . . . . . . . . . .
1.2.7 Phase finale . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . . . . . . .
. . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1
2
2
3
5
7
10
11
13
Courbe de Roc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Courbe de Lift . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Statistiques estimees par bootstrap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
9
11
1.1
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2
2
3
6
6
7
7
8
10
12
Description
Une banque, dans le cadre de son service de prets, desire pouvoir predire la non solvabilite dun client demandant
pret en fonction des covariables explicatives. Pour ceci elle utilise sa base de donnees client`ele constituee de lhistorique
de 5960 clients ayant contracte au moins un pret. Le fichier de donnees est disponible aux formats
texte http://www.math.unicaen.fr/~kauffman/data/hmeq.txt
sas7bdat http://www.math.unicaen.fr/~kauffman/data/hmeq.sas7bdat la table sans aucun traitement.
sas7bdat http://www.math.unicaen.fr/~kauffman/data/hmeq1.sas7bdat la table avec les donnees manquantes
completees.
Cette base de donnees, sert dexemple pour SAS Entreprise Miner. Dans cet exercice nous allons utiliser SAS
(BASE,STAT,GRAPH) uniquement.
http://www.math.unicaen.fr/~kauffman/cours
francois.kauffmann@unicaen.fr
Bad
Loan
Mortdue
Value
Reason
Job
Yoj
Derog
Deling
Clage
Ninq
Clno
Debtinc
qualitatif
quantitatif
quantitatif
quantitatif
qualitatif
qualitatif
quantitatif
quantitatif
quantitatif
quantitatif
quantitatif
quantitatif
quantitatif
8 janvier 2013
Obs
1
2
3
4
5
bad
1
1
1
1
0
loan
1100
1300
1500
1500
1700
mortdue
25860
70053
13500
.
97800
value
39025
68400
16700
.
112000
reason
HomeImp
HomeImp
HomeImp
job
Other
Other
Other
HomeImp
Office
yoj
10.5
7.0
4.0
.
3.0
derog
0
0
0
.
0
delinq
0
2
0
.
0
clage
94.37
121.83
149.47
.
93.33
ninq
1
0
1
.
0
clno
9
14
10
.
14
debtinc
.
.
.
.
.
fold
3
4
3
3
3
R
ef
erences
[1] Robert C. Blattberg, Byung-Do Kim, and Scott A. Neslin. Database marketing, Analysing and Managing Custumers. Springer, 2008. 3
[2] Andrew Gelman and Jennifer Hill. Data Analysis using regression and Multilevel/Hierarchical models. Cambridge,
2007. 1.2.2
1.2
1.2.1
Enonc
e
Pr
eparation des donn
ees
http://www.math.unicaen.fr/~kauffman/cours
francois.kauffmann@unicaen.fr
Obs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Member
USER.HMEQ
USER.HMEQ
USER.HMEQ
USER.HMEQ
USER.HMEQ
USER.HMEQ
USER.HMEQ
USER.HMEQ
USER.HMEQ
USER.HMEQ
USER.HMEQ
USER.HMEQ
USER.HMEQ
USER.HMEQ
Num
2
11
13
14
10
9
7
3
4
12
6
1
5
8
Variable
bad
clage
clno
debtinc
delinq
derog
job
loan
mortdue
ninq
reason
validation
value
yoj
8 janvier 2013
Type
Num
Num
Num
Num
Num
Num
Alph
Num
Num
Num
Alph
Num
Num
Num
Len
8
8
8
8
8
8
6
8
8
8
7
8
8
8
Pos
8
64
80
88
56
48
103
16
24
72
96
0
32
40
Format
Label
Default or seriously delinquent
Age of oldest trade line in months
Number of trade (credit) lines
Debt to income ratio
Number of delinquent trade lines
Number of major derogatory reports
Prof/exec sales mngr office self other
Amount of current loan request
Amount due on existing mortgage
Number of recent credit inquiries
Home improvement or debt consolidation
VALID.
Value of current property
Years on current job
Valeurs manquantes
Dans cette question, on traite le cas des valeurs manquantes. Sur ce probl`eme difficile, on peut consulter le chapitre
Missing data imputation du livre dAndrew Gelman [2]. Ce chapitre est tr`es abordable et est illustre avec R. Dans
SAS des methodes de remplacement de valeurs manquantes sont disponibles dont les methodes dimputations multiples
avec la proc mi ou Entreprise Miner.
Ici nous allons utiliser deux methodes : la methode du remplacement des valeurs manquantes dune variable par
une seule valeur (la moyenne ou le mode) en anglais Single Imputation, conjointement avec lajout dune variable
binaire pour chacune des variables explicatives indiquant si la valeur est manquante ou pas en anglais Missing variable
dummies.
Plusieurs solutions sont possibles dans SAS pour calculer des valeurs moyennes, des modes ou des valeurs frequentes par exemple la proc univariate. On fait le choix de nutiliser que la proc sql couplee avec de la macro
programmation, pour calculer les moyennes ou des modes puis les remplacer les valeurs manquantes par ces valeurs
choisies.
1. Definir les macros type defaut comme etant des macros variables globales. Elles peuvent etre definies et modifiees `a linterieur de macros fonctions.
% global type defaut;
http://www.math.unicaen.fr/~kauffman/cours
francois.kauffmann@unicaen.fr
8 janvier 2013
2. Construire une requete SQL permettant de calculer la moyenne dune variable quantitative. Puis construire
un macro programme MACRO moyenne(nom,table=_LAST_); permettant de creer une macro variable nommee
d
efaut dont la valeur sera la moyenne de la variable quantitative nom de la table nommee table.
proc sql;
% MACRO MOYENNE(nom,table=_LAST_);
select mean(&nom) into :defaut from &table;
% let defaut=&defaut;
% MEND;
% MOYENNE(loan,table=hmeq)
% put &defaut;
quit;
3. Construire une requete ou plusieurs requetes SQL permettant dobtenir la modalite la plus frequente dune variable
qualitative. Puis construire un macro programme MACRO mode(nom,table=_LAST_); permettant de creer une
macro variable nommee defaut dont la valeur sera le mode de la variable qualitative nom de la table nommee
table.
proc sql;
% MACRO mode(nom,table=_LAST_);
select &nom into :defaut from
( select &nom,count(*) as freq
from &table
where &nom ^= ''
group by &nom
) having freq=max(freq);
% let defaut="&defaut";
% MEND;
% MODE(reason,table=hmeq)
% put &defaut;
quit;
4. Que fait la macro suivante ?
%MACRO DEFAUT(var,table=_LAST_,defaut= );
%let type=na;
%let m_existe=;
%if(&defaut= ) %THEN %DO;
select type into :type from dictionary.columns
where
upper(libname)='USER' and
upper(memname)=upper("&table") and
upper(name)=upper("&var");
select name into :m_existe from dictionary.columns
where
upper(libname)='USER' and
upper(memname)=upper("&table") and
upper(name)=upper("m_&var");
%IF &TYPE=num %THEN %MOYENNE(&var,table=&table);
%ELSE %MODE(&var,table=&table);
%IF(&m_existe= ) %THEN %DO;
alter table hmeq add m_&var num label="&var valeur manquante";
update hmeq set m_&var=case when &var IS MISSING then 1 else 0 end;
%END;
%END;
update hmeq set &var=&defaut where m_&var=1;
%put DEFAUT--> var="&var" m_existe=&m_existe type=&type defaut="&defaut";
%MEND;
/* essais */
proc sql;
%DEFAUT(loan,table=HMEQ);
%DEFAUT(yoj,table=HMEQ,defaut=14);
%DEFAUT(reason,table=HMEQ,defaut=na);
quit;
http://www.math.unicaen.fr/~kauffman/cours
francois.kauffmann@unicaen.fr
8 janvier 2013
5. Redefinir les valeurs manquantes des variables explicatives en leur mode si elles sont sont qualitatives et en leur
moyenne si elles sont quantitatives, ainsi que les variables indicatrices des valeurs manquantes.
/* DECOUPE CHAINE TRES GROS PB AVEC QSCAN BUG?*/
%MACRO DECOUPE(chaine,table=_LAST_);
%let count=1;
%let y=%scan(&chaine,&count);
%do %while(&y ne );
%put DECOUPE=&count "&y";
%DEFAUT(&y,table=&table)
%let count=%eval(&count+1);
%let y=%scan(&chaine,&count);
%end;
%MEND;
quit;
proc sql;
%DECOUPE(&names,table=HMEQ)
quit;
/* defaut pour na */
6. On traite maintenant les cas particuliers. A laide de la macro, definir la valeur manquante de debtinc `a 50
(expliquez ce choix de SAS). Redefinir les valeurs manquantes des variables job et reason `a la chane "na".
proc sql;
%DEFAUT(debtinc,table=HMEQ,defaut=50) /* debtinc def=50 */
%DEFAUT(job,table=HMEQ,defaut="na") /* job na */
%DEFAUT(reason,table=HMEQ,defaut="na")/* reason na */
quit;
1.2.3
Mod`
ele de r
egression logistique
Dans cette question, on estime un mod`ele de regression logistique (uniquement les effets principaux, pas de recherche
de mod`ele) grace `a la base dapprentissage ou de test validation =
^3.
proc logistic data=hmeq(where=(validation ^=3)) outmodel=modele;
class
reason(param=ref ref='na')
job(param=ref ref='na') ;
model bad(event='1')= loan--m_debtinc/
ctable pprob= (0.3, 0.5 to 0.8 by 0.1)
outroc=roc roceps=.01;
output out=logistic predprobs=(individual) l=lower95 u=upper95 /
alpha=.05;
run;
proc logistic inmodel=modele;
score data=hmeq out=valid(keep=validation loan bad P_1);
run;
Voici quelques resultats extraits des sorties de SAS.
http://www.math.unicaen.fr/~kauffman/cours
francois.kauffmann@unicaen.fr
Obs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Variable
Intercept
loan
mortdue
value
reason
reason
job
job
job
job
job
job
yoj
derog
delinq
clage
ninq
clno
debtinc
m validation
m bad
m loan
m mortdue
m value
m reason
m job
m yoj
m derog
m delinq
m clage
m ninq
m clno
m debtinc
8 janvier 2013
ClassVal0
DebtCon
HomeImp
Mgr
Office
Other
ProfEx
Sales
Self
DF
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
0
0
1
1
0
0
1
1
1
1
1
1
1
Estimate
7.2591
0.00001
3.23E6
4.063E6
0.1410
0.0152
2.2215
1.6262
2.4060
2.1180
3.5798
2.7540
0.0130
0.5226
0.7998
0.00631
0.1713
0.0110
0.0978
0
0
0
0.4077
5.1512
0
0
0.5261
2.1311
1.1000
0.9641
0.2792
3.3480
1.1599
StdErr
0.6283
5.356E6
1.86E6
1.293E6
0.3411
0.3458
0.4875
0.4904
0.4718
0.4838
0.5583
0.5504
0.00763
0.0684
0.0586
0.000764
0.0291
0.00594
0.00989
.
.
.
0.2330
0.5543
.
.
0.2171
0.3352
0.4472
0.3941
0.4199
0.7112
0.1678
WaldChiSq
133.4665
3.5818
3.0201
9.8775
0.1708
0.0019
20.7679
10.9959
26.0071
19.1642
41.1087
25.0373
2.9162
58.4341
186.4341
68.3873
34.5669
3.4171
97.7408
.
.
.
3.0615
86.3793
.
.
5.8695
40.4140
6.0489
5.9858
0.4422
22.1637
47.8013
ProbChiSq
<.0001
0.0584
0.0822
0.0017
0.6794
0.9649
<.0001
0.0009
<.0001
<.0001
<.0001
<.0001
0.0877
<.0001
<.0001
<.0001
<.0001
0.0645
<.0001
.
.
.
0.0802
<.0001
.
.
0.0154
<.0001
0.0139
0.0144
0.5061
<.0001
<.0001
Obs
1
2
3
4
Label1
Percent Concordant
Percent Discordant
Percent Tied
Pairs
cValue1
91.0
8.8
0.2
3643250
nValue1
90.961861
8.841090
0.197049
3643250
Label2
Somers D
Gamma
Taua
c
cValue2
0.821
0.823
0.261
0.911
nValue2
0.821208
0.822829
0.261396
0.910604
http://www.math.unicaen.fr/~kauffman/cours
francois.kauffmann@unicaen.fr
Obs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
8 janvier 2013
Effect
loan
mortdue
value
reason DebtCon vs na
reason HomeImp vs na
job Mgr vs na
job Office vs na
job Other vs na
job ProfEx vs na
job Sales vs na
job Self vs na
yoj
derog
delinq
clage
ninq
clno
debtinc
m mortdue
m value
m yoj
m derog
m delinq
m clage
m ninq
m clno
m debtinc
OddsRatioEst
1.000
1.000
1.000
0.869
1.015
9.221
5.085
11.089
8.315
35.865
15.705
0.987
1.686
2.225
0.994
1.187
0.989
1.103
1.503
172.646
0.591
0.119
0.333
2.623
0.756
28.446
3.190
LowerCL
1.000
1.000
1.000
0.445
0.516
3.547
1.945
4.399
3.221
12.007
5.340
0.972
1.475
1.984
0.992
1.121
0.978
1.082
0.952
58.261
0.386
0.062
0.139
1.211
0.332
7.058
2.296
UpperCL
1.000
1.000
1.000
1.695
2.000
23.971
13.295
27.956
21.462
107.132
46.189
1.002
1.928
2.496
0.995
1.257
1.001
1.124
2.374
511.608
0.904
0.229
0.800
5.677
1.723
114.648
4.431
Obs
1
2
3
4
5
6
7
8
9
10
validation
Test
Apprentissage
Apprentissage
Test
Apprentissage
Validation
Apprentissage
Apprentissage
Validation
Apprentissage
bad
1
1
1
1
1
1
1
1
1
1
loan
23300
2800
50000
40000
12000
22000
6500
15000
8000
37300
P1
1.00000
1.00000
1.00000
0.99999
0.99999
0.99999
0.99998
0.99998
0.99995
0.99994
D
ecision : oui ou non
Dans cette question, on sinteresse aux classiffieurs construits `a partir de la regression logistique.
1. Decrire la table suivante.
http://www.math.unicaen.fr/~kauffman/cours
francois.kauffmann@unicaen.fr
Obs
1
2
3
4
5
ProbLevel
0.300
0.500
0.600
0.700
0.800
TrueEvents
720
581
511
418
326
8 janvier 2013
TrueNevents
3483
3660
3732
3783
3808
FalseEvents
352
175
103
52
27
FalseNvents
230
369
439
532
624
Correct
87.8
88.6
88.7
87.8
86.4
Sensitivity
75.8
61.2
53.8
44.0
34.3
Specificity
90.8
95.4
97.3
98.6
99.3
FalsePos
32.8
23.1
16.8
11.1
7.6
Sensitivity
1.0
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0.0
0.0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1.0
1 - Specificity
francois.kauffmann@unicaen.fr
FalseNeg
6.2
9.2
10.5
12.3
14.1
8 janvier 2013
Le lift dun decile est simplement la probabilite moyenne detre un mauvais payeur pour ce decile, divise par la
probabilite moyenne detre un mauvais payeur de lensemble des clients. Un lift de 4 veut dire que lon a 4 fois
plus de chance detre un mauvais payeur que la moyenne.
On pourra consulter la partie Data Base marketing tool, statistical techniques du livre du Pr. Blattberg Data
Base Marketing [1].
lift
5
0
0
decile
predit
observe
http://www.math.unicaen.fr/~kauffman/cours
francois.kauffmann@unicaen.fr
Obs
1
2
3
4
5
6
7
8
9
10
decile
0
1
2
3
4
5
6
7
8
9
loan
16579.49
16281.13
16820.79
19800.00
18145.35
19799.72
20069.01
21115.17
18419.15
18063.38
prob min
0.71466
0.38500
0.16306
0.09772
0.06302
0.04385
0.03100
0.01775
0.00823
0.00047
8 janvier 2013
prob max
1.00000
0.71466
0.38479
0.16229
0.09759
0.06295
0.04381
0.03095
0.01775
0.00817
prob pred
0.89133
0.54356
0.25765
0.12418
0.07846
0.05218
0.03692
0.02431
0.01285
0.00397
prob obs
0.90449
0.54366
0.25000
0.10704
0.09014
0.05618
0.02254
0.01966
0.01408
0.01690
lift pred
4.39818
2.68214
1.27135
0.61274
0.38716
0.25750
0.18217
0.11996
0.06343
0.01960
lift obs
4.46468
2.68357
1.23403
0.52837
0.44494
0.27731
0.11124
0.09706
0.06952
0.08343
profit
3745.92
1896.29
425.85
338.73
565.03
774.28
877.62
1000.68
947.62
980.87
descending P_1
;run;
Une des methodes de validation dun mod`ele (pour les petits effectifs) est le methode de Boostrap. Dans cette
question, on realise cette methode assez simplement avec SAS.
1. La procedure surveyselect permet de tirer aleatoirement des lignes dune table. Loption metho=urs unrestricted random sampling permet de faire un tirage aleatoire avec remise de n=500 echantillons parmi ceux de la
table hmeq et de repeter rep=20 fois ce tirage, la table de sortie est nommee out=boot. Les colonnes de la table
boot sont celles de la table originale aux quelles sont ajoutees les colonnes
replicate numero de la repetition
numberhits nombre de fois ou cette ligne a ete tiree.
proc surveyselect data=hmeq method=urs n=500 rep=20 out=boot;
run;
2. Lappel `a la procedure logistic necessite de faire une regression par repetition by replicate;, et de prendre
en compte que certaines lignes ont ete tirees plusieurs fois freq numberhits;
proc logistic data=boot outest=estimates;
class
http://www.math.unicaen.fr/~kauffman/cours
10
francois.kauffmann@unicaen.fr
8 janvier 2013
reason(param=ref ref='na')
job(param=ref ref='na') ;
model bad(event='1')= loan--m_debtinc;
freq numberhits;
by replicate;
run;
3. La derni`ere etape consiste `
a calculer les estimateurs empiriques ecarts types des grace aux repetitions, on
verifie apr`es que less ecarts types estimes par la methode de bootstrap sont semblables `a ceux estimes par la
regression logistique (asymptotique).
proc means data=estimates n mean std ;
var intercept--m_debtinc;
run;
4. la sortie ods , ou output ne fonctionne pas comme la sortie des resultats en SAS9.1. Jai utilise la sortie rtf
puis la commande unix ps2eps pour definir la BoundingBox.
La procdure MEANS
Variable
Libell
Intercept
loan
mortdue
value
reasonDebtCon
reasonHomeImp
jobMgr
jobOffice
jobOther
jobProfEx
jobSales
jobSelf
yoj
derog
delinq
clage
ninq
clno
debtinc
m_validation
m_bad
m_loan
m_mortdue
m_value
m_reason
m_job
m_yoj
m_derog
m_delinq
m_clage
m_ninq
m_clno
m_debtinc
Intercept: bad=0
Amount of current loan request
Amount due on existing mortgage
Value of current property
Home improvement or debt consolidation DebtCon
Home improvement or debt consolidation HomeImp
Prof/exec sales mngr office self other Mgr
Prof/exec sales mngr office self other Office
Prof/exec sales mngr office self other Other
Prof/exec sales mngr office self other ProfEx
Prof/exec sales mngr office self other Sales
Prof/exec sales mngr office self other Self
Years on current job
Number of major derogatory reports
Number of delinquent trade lines
Age of oldest trade line in months
Number of recent credit inquiries
Number of trade (credit) lines
Debt to income ratio
validation valeur manquante
bad valeur manquante
loan valeur manquante
mortdue valeur manquante
value valeur manquante
reason valeur manquante
job valeur manquante
yoj valeur manquante
derog valeur manquante
delinq valeur manquante
clage valeur manquante
ninq valeur manquante
clno valeur manquante
debtinc valeur manquante
Nb
Moyenne
cart-type
20
20
20
20
20
20
20
20
20
20
20
20
20
20
20
20
20
20
20
20
20
20
20
20
20
20
20
20
20
20
20
20
20
-13.8955540
-0.000012971
-5.614754E-6
5.6378276E-6
1.6198681
1.6049881
6.8185745
5.9119376
6.8220173
6.7543728
7.1975425
7.5083114
-0.0086700
0.8068074
0.8631005
-0.0078995
0.1548393
-0.0202906
0.1122266
0
0
0
0.9338880
16.3456874
0
0
-0.5753616
-3.4033428
-4.1922645
-1.3667520
-1.7210031
12.1279715
1.2950100
9.5293649
0.000019322
0.000012035
9.7740588E-6
5.7619433
5.7901496
7.3249264
7.4413282
7.3661305
7.1815278
9.2744249
7.5607680
0.0373823
0.2718380
0.2014021
0.0039311
0.1147729
0.0210805
0.0607721
0
0
0
1.1119368
8.5309629
0
0
0.8171444
3.8426720
6.3898586
6.0051523
4.7657256
9.2801052
0.8309383
n-Validation crois
ee
11
francois.kauffmann@unicaen.fr
8 janvier 2013
bad=.;
P_1=.;
run;
%MACRO CROSSVALIDATION(n=10);
%DO NFOLD=1 %TO &n;
%put cross validation=&nfold/&n;
proc logistic data=hmeq(where=(fold^=&nfold)) outmodel=modele;
class
reason(param=ref ref='na')
job(param=ref ref='na') ;
model bad(event='1')= loan--m_debtinc;
score data=hmeq(where=(fold=&nfold)) out=tmp3(keep= fold bad P_1);
run;
data crossvalid;
set crossvalid tmp3;
run;
%END;
%MEND;
3. La derni`ere etape consiste `
a calculer la calsse predite et faire les comparaisons.
data crossvalid;
set crossvalid(where=(bad ^= .));
bad_chap=P_1> &prob_seuil;
run;
proc tabulate data=crossvalid;
class fold bad bad_chap;
table fold*bad,bad_chap;
run;
bad chap
0
1
N
N
fold
1
2
3
4
5
6
7
8
9
10
bad
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
321
14
376
19
286
13
350
13
350
19
342
14
356
15
365
17
316
7
315
8
122
107
144
93
151
103
137
98
128
114
150
103
142
109
123
94
155
122
142
107
http://www.math.unicaen.fr/~kauffman/cours
12
francois.kauffmann@unicaen.fr
1.2.7
8 janvier 2013
Phase finale
Il ne reste plus qu`a scorer les demandeurs de prets et ne retenir que ceux ayant un risque detre mauvais payeur
de moins de 9%.
R
ef
erences
[Collica(2010)] Randall S. Collica. CRM segmentation and clustering. SAS, 2010.
http://www.math.unicaen.fr/~kauffman/cours
13
francois.kauffmann@unicaen.fr