Sunteți pe pagina 1din 5

Pasul 1.

Introduceti urmatorul cod in Rstudio (aveti grija ca datele să fie citite iar librăriile instalate sa fie bifate):

#Suma_datorata:

Suma_datorata20p=quantile(data$Suma_datorata, probs=seq(0,1,0.20), na.rm=TRUE)

Suma_datorata20p.Breaks=as.vector(Suma_datorata20p)

Cuts.Suma_datorata20p=Suma_datorata20p.Breaks[2:(length(Suma_datorata20p.Breaks)-1)]

result_Suma_datorata=smbinning.custom(df=data,y="Status_Bun",x="Suma_datorata",cuts=Cuts.Suma_datorata20p)

View(result_Suma_datorata$ivtable)

#Se va obtine urmatorul output:

#Atunci cand ordonăm suma datorată crescător si o împărțim pe cinci cuantile aproximativ egale (a se vedea numarul de observatii de pe
#coloana 2) obtinem o valoare informațională egală cu 0.0934.
Pasul 2. Introduceti urmatorul cod in Rstudio:

Suma_datorata5p=quantile(data$Suma_datorata, probs=seq(0,1,0.05), na.rm=TRUE)

Suma_datorata5p.Breaks=as.vector(Suma_datorata5p)

Cuts.Suma_datorata5p=Suma_datorata5p.Breaks[2:(length(Suma_datorata5p.Breaks)-1)]

result1_Suma_datorata=smbinning.custom(df=data,y="Status_Bun",x="Suma_datorata",cuts=Cuts.Suma_datorata5p)

View(result1_Suma_datorata$ivtable)
#Atunci cand ordonăm suma datorată crescător si o împărțim pe douăzeci de cuantile aproximativ egale (a se vedea numarul de
#observatii de pe #coloana 2) obtinem o valoare informațională egală cu 0.2002 care este aproape dublă față de prima situație. Deci
#puterea de discriminare a acestei variabile crește pe măsură ce gradul de segmentare crește. Totuși, din punct de vedere al performanței
#posibilelor estimații, acest lucru este un neajuns major.

#Tema dumneavoastră este se impărțiți suma datorată in 4-5 intervale (nu trebuie să fie egale, pot avea de exemplu 7%, 18% etc din
#observații) astfel încat să maximizați valoarea informațională a sumei datorate. Va trebui să vă folosiți de următorul cod:

data$Suma_datorata<-as.factor(

ifelse(data$Suma_datorata<=1370,'0-1370',

ifelse(data$Suma_datorata<=3972,'1371-3972',

ifelse(data$Suma_datorata<=5969,'3973-5969',

ifelse(data$Suma_datorata<=9162,'5970-9162','9163+')))))

result0.Suma_datorata=smbinning.factor(df=data,y="Status_Bun",x="Suma_datorata")

View(result0.Suma_datorata$ivtable) 0,1590

#Ca să concluzionez, va trebui să modificați limitele intervalelor de mai sus astfel încat șă obșineti o valoare informațională cat mai
#apropiată de 0.2002. Cine obține cea mai mare valoare obține nota 10. Ca și recomndare, incercați sa nu uniți grapări cu WoE de semne
#contrare si care au o valoare informațională peste medie.

Succes,

Cosmin Cepoi
data$Suma_datorata<-as.factor(

ifelse(data$Suma_datorata<=708,'0-708',

ifelse(data$Suma_datorata<=1370,'709-1370',

ifelse(data$Suma_datorata<=3972,'1371-3972',

ifelse(data$Suma_datorata<=9162,'3973-9162','9163+')))))

result0.Suma_datorata=smbinning.factor(df=data,y="Status_Bun",x="Suma_datorata")

View(result0.Suma_datorata$ivtable)

data$Varsta<-as.factor(

ifelse(data$Varsta<=25,'0-25',

ifelse(data$Varsta<=30,'26-30',

ifelse(data$Varsta<=36,'31-36',

ifelse(data$Varsta<=51,'36-50','51+')))))

result0.Varsta=smbinning.factor(df=data,y="Status_Bun",x="Varsta")

View(result0.Varsta$ivtable)
Varsta5p=quantile(data$Varsta, probs=seq(0,1,0.05), na.rm=TRUE)

Varsta5p.Breaks=as.vector(Varsta5p)

Cuts.Varsta5p=Varsta5p.Breaks[2:(length(Varsta5p.Breaks)-1)]

result1_Varsta=smbinning.custom(df=data,y="Status_Bun",x="Varsta",cuts=Cuts.Varsta5p)

View(result1_Varsta$ivtable)

Varsta20p=quantile(data$Varsta, probs=seq(0,1,0.20), na.rm=TRUE)

Varsta20p.Breaks=as.vector(Varsta20p)

Cuts.Varsta20p=Varsta20p.Breaks[2:(length(Varsta20p.Breaks)-1)]

result_Varsta=smbinning.custom(df=data,y="Status_Bun",x="Varsta",cuts=Cuts.Varsta20p)

View(result_Varsta$ivtable)

levels(data$Suma_datorata)<-c("_1","_3","_2","_0","_4")

data$ Suma_datorata=factor(data$Suma_datorata,levels=c("_0","_1","_2","_3","_4"))

result.Suma_datorata=smbinning.factor(df=data,y="Status_Bun",x="Suma_datorata")

View(result.Suma_datorata$ivtable)

S-ar putea să vă placă și