Escolar Documentos
Profissional Documentos
Cultura Documentos
Professor responsável:
Adriano Kamimura Suzuki
Aluno:
Sérgio O. Carvalho 6427466
SÃO CARLOS - SP
11 de novembro de 2014
1 Modelagem Credit Scoring
A modelagem de Credit Scoring tem por objetivo final gerar um ranking de
probabilidades referente à clientes que pleiteiam ser contemplados por uma
polı́tica de concessão de crédito de determinada instituição, de modo que ba-
seado neste ranking a empresa poderá decidir qual ou quais clientes serão con-
templados. Cada probabilidade deste ranking é o produto de uma modelagem
estatı́stica, matemática, computacional das informações cadastrais que cada cli-
ente possui junto a instituição, pode-se dizer que esta probabilidade é o resumo
socio-econômico das caracterı́sticas dos clientes. Esta estratégia de concessão
de crédito baseada em modelagem estatı́stica tem contribuı́do fortemente para
que instituições financeiras alcancem maior rentabilidade,e desta forma, a busca
por modelos capazes de proporcionar menor risco e maior lucro às instituições
financieras, é constante.
1
Figura 2: Estrutura de Amostragem Temporal de Modelos Credit Score
2
y
π
f (Y |π) = π y (1 − π)1−y = (1 − π)
1−π
π
= exp y log + log (1 − π)
1−π
Sabemos que E (Y ) = b0 (θ)
π
η (θ) = log , função de ligação logito (1)
1−π
eη(θ)
b (θ) = log 1 + eη(θ) , b0 (θ) =
=π
1 + eη(θ)
η(θ) = X 0 β
Como E(Y ) = π, temos então que:
π
η(θ) = log = X 0 β = β0 + β1 x1 +, . . . , +βk xk
1−π
Então as probabilidades relaionadas aos clientes maus pagadores são obtidas
por:
3
5 Estimação dos Parâmetros do Modelo
O ajuste do modelo se dá através das estimativas dos βj , j = 1, . . . , k vetor de
parâmetros β, sendo que os β̂j 0 s são obtidos pelas derivadas parciais do logaritmo
da função de máxima verossimilhança, da seguinte forma:
n
Y 1−yi
L[β|Y, X] = πi (x)yi (1 − πi (x))
i=1
n n
X πi (x) X
β) =
l(β yi log + log (1 − πi (x))
i=1
1 − πi (x) i=1
n n
e(β0 +β1 xi1 +...+βk xik )
X X
= yi (β0 + β1 xi1 + . . . + βk xik ) + log 1 −
i=1 i=1
1 + e(β0 +β1 xi1 +...+βk xik )
n n
X X 1
= yi (β0 + β1 xi1 + . . . + βk xik ) + log
i=1 i=1
1 + e(β0 +β1 xi1 +...+βk xik )
n
X n
X
= yi (β0 + β1 xi1 + . . . + βk xik ) − log 1 + e(β0 +β1 xi1 +...+βk xik )
i=1 i=1
0
como e(β0 +β1 x1 ,...,βk xk ) = eX βj
com j = 0, . . . , k , podemos escrever que:
n n
β) X
∂l(β X exij βj
= yi −
∂β0 i=1 i=1
1 + exij βj
.. ..
. .
n n
β) X
∂l(β X exij βj
= yi xik − xik
∂βk i=1 i=1
1 + exij βj
igualando a zero , temos:
n n
X X exij β̂j
yi − =0
i=1 i=1 1 + exij β̂j
n n
X X exij β̂j
yi xij − xij =0
i=1 i=1 1 + exij β̂j
β (0) ) + U 0 (β
β ) ≈ U (β
U (β β (0) )(β
β − β (0) )
4
β)
∂l(β ∂ 2 l(β
β)
β) =
Onde U (β e U 0 (β
β) =
∂ββ ∂β β2
Assim o processo iterativo é obtido repetindo a aproximação acima em m passos.
Como a matriz −U 0 (β β ) pode não ser positiva definida, e portanto não invertı́vel,
ela é substituı́da pela matriz de informação de Fisher, dada por:
2 β
∂ l(β ) ∂ 2 l(β ∂ 2 l(β
β) β)
∂β02 ∂β0 β1 . . . ∂β0 βk
2
∂ l(ββ ) ∂ 2 l(ββ ) 2
β)
∂β β0 ∂β 2 . . . ∂∂βl(β
1 βk
I(βb ) = −E .
1 1
.. .. .. ..
. . .
∂ 2 l(β
β) ∂ 2 l(β
β) ∂ 2 l(β
β)
∂βk β0 ∂βk β1 ... ∂βk2
P n n n
exij β̂j exij β̂j exij β̂j
P P
xi1 ... xik
i=1 (1+exij β̂j )2 i=1 (1+exij β̂j )2 i=1 (1+exik β̂j )2
n x n n
P
exij β̂j exij β̂j xij β̂j
x2i2 xi1 xik e xik β̂j 2
P P
i1 xij β̂j 2
...
(1+exij β̂j )2
(1+e ) (1+e )
= E i=1
i=1 i=1
.. .. .. ..
. . . .
n xij β̂j n n
exij β̂j exij β̂j
P
xik e xij β̂j 2 2
P P
xik xi2 . . . x ik
i=1 (1+e ) i=1 (1+exij β̂j ) 2
i=1 (1+e xik β̂j 2
)
6 Seleção de Variáveis
De forma geral, os critérios de seleção de modelos baseiam-se no conceito do
modelo mais parcimonioso, ou seja, o modelo com menor número de covariáveis
capaz de explicar a variável resposta, pois quanto maior o número de covariáveis
no modelo , maior também será a estimativa do erro e mais dependente o modelo
será dos dados observados. Há enumeras técnicas para seleção de variáveis,
iremos utilizar o método de Todos os Modelos Possı́veis.
5
BIC = k · log(n) − 2 · log L(β̂|Y, X)
6
Figura 3: Resultado da Classificação - Curva ROC
onde
7
mM - Clientes maus, classificados como Maus (acerto);
mB - Clientes Bons, classificados como maus (erro);
bM - Clientes maus, classificados como Bons (erro);
B - Total de bons clientes;
M - Total de maus clientes;
b - Total de clientes classificados como bons;
m - Total de cliente classificados como maus;
Matriz de Confusão
Valores Da Amostra
Valores Preditos Mau Bom Total
Mau 180 158 338
Bom 30 332 362
Total 210 490 700
8
Correlação de Mathews (MCC): Como nos caso do coeficiente de Correlação
de Pearson, mede-se o quanto as variáveis que indicam a classificação original
do evento de interesse e as que correspondem a classificação do modelo obtida
por meio do ponto de corte adotado, ambas variáveis assumindo valores 0 e
1, tendem a apresentar o mesmo sinal de magnitude após serem padronizadas
(Baldi et al., 2000).
mM bB − mB bM
M CC = p = 49.03%
(mM + bM )(mM + mB )(bB + bM )(bB + mB )
Esta função corresponde a distância máxima entre F (m) e F (b) de modo que
%0 < KS < 100% sendo que 100% indica máxima diferença entre os grupos,
como ilustrado pela Figura 5.
Pela Figura 5 podemos observar que há diferenças nas distribuições empı́ricas
para as classificações entre bons e maus pagadores com base no cut-off point
9
dada pela curva ROC.
Com o teste de Kolmogorov-Smirnov podemos testar se há essas diferenças são
confirmadas.
H0 : Fm (maus) = Fb (bons)
Com o auxı́lio do R , temos que:
Com isso, podemos dizer que há diferenças significativas entre as distribuições
das classes bons e maus pagadores.
ln(OR) = ln(eβj ) = βj .
Desta forma, podemos investigar a influência que determinada caracterı́stica xij
exerce sobre a probabilidade de determinado cliente ser bom ou mau pagador,
portanto, temos que:
10
Tabela 3: As 10 menores probabilidades de inadimplência
y D1.1 D1.2 D2.1 D3.4 D4.2 D4.4 D5.1 D6.1 D7.4 D8.1 D12.1 D15.1 π̂
822 0 0 0 1 1 0 1 1 0 1 1 0 0 0.002
865 0 0 0 1 1 0 1 1 0 0 0 0 0 0.003
590 0 0 0 1 1 0 1 1 0 0 0 0 0 0.003
493 0 0 0 1 1 0 1 1 1 1 0 0 0 0.003
72 0 0 0 1 0 0 1 1 0 1 0 0 0 0.004
740 0 0 0 1 0 0 1 1 0 1 0 0 0 0.004
133 0 0 0 1 1 1 0 1 0 0 0 1 0 0.005
252 0 0 0 1 1 1 0 1 0 0 0 1 0 0.005
389 0 0 0 1 1 0 0 1 0 1 0 0 0 0.006
320 0 0 0 1 0 0 1 1 0 0 0 1 0 0.007
De fato, notemos a presença das caracterı́sticas D1.1, D1.2 , D6.1 ,D8.1 com
excessão à caracterı́stica D15.1 (Type of Apartment). Essas caracterı́sticas nos
dão indı́cios de que determinado cliente tem grande chance de ser inadimplente.
Podemos mensurar essa proporção através da razão de chances (Odds Ratio),
da seguitne forma:
11
ces (Odds Ratio) para cada caracterı́stica. Com isso, observa-se que a carac-
terı́stica Balance of Current Account - No Balance aumenta em 8.20
vezes as chances de um cliente ser inadimplente comparado a ausência desta
caracterı́stica. De forma geral podemos dizer que a presença de determinada
caracterı́stica aumenta a chance de inadimplência quando o valor de Odds Ra-
tio é maior que 1, de modo que, para valores de Odds Ratio menores que 1 a
presença de certa caracterı́stica diminue a chance inadimplência.
Dadas as matrizes:
π̂( 1 − π̂n )
1 xn1 ... xnk n×(k+1)
0 0 ... n×n
10 Inferência no modelo
Uma vez que ja estimamos os parâmetros β̂j 0 s , surge a necessidade de sabermos
se as covariáveis xj associadas a estes parâmetros são importantes para explicar
o modelo. Em estatı́stica há um conjunto de técnicas que podem nos auxilar a
responder essa questão, dentre elas estão:
i) Teste de Wald
ii) Teste da Razão de Verossimilhança (TRV)
12
10.1 O Teste de Wald
O teste de Wald é obtido por comparação entre a estimativa de máxima ve-
rossimilhança do parâmetro (βbj ) e a estimativa de seu erro padrão. A razão
resultante, sob a hipótese H0 : βj = 0, é dada por:
βbj
Wj = q
V ar(βbj )
d
onde Wj tem distribuição aproximada normal padrão e seu valor-p é dado por
P (|Z|>|Wj |), sendo que Z denota a variável aleatória da distribuição normal
padrão. O teste Wald também pode ser obtido da seguinte forma:
h i−1
ˆ β̂)
W = β̂ 0 I( β̂ = β̂ 0 (X 0 V X)−1 β̂
Pela tabela 6 podemos verificar através dos valores de p-valores que as co-
variáveis xj , j = 1, . . . , 12 associadas aos parâmetros β̂j , j = 1, . . . , 12 , são
importantes para explicar o modelo, desta forma, podemos rejeitar a hipótese
de que β̂j = 0. Observamos também que o teste w11 possui p-valor = 0.08654
> 0.05, porém não iremos retirar-la a caracterı́stica correspondente do modelo
uma vez que sua importância possui certa relevancia além de ela ajudar compor
um valor de AIC mı́nimo em uma série considerada de simulações.
13
L β̂|Y, X
D = −2 log
L (β 0 |Y )
então, " #
n
Y
yi 1−yi
D = −2 log π̂i (x) (1 − π̂i (x))
i=1
( n
)
X
= −2 [yi log(π̂i ) + (1 − π̂i ) log(1 − π̂i )]
i=1
14
TRV gl p-value
β̂0 10.30 1.00 0.00
β̂1 74.87 1.00 0.00
β̂2 31.12 1.00 0.00
β̂3 8.10 1.00 0.00
β̂4 25.01 1.00 0.00
β̂5 5.90 1.00 0.02
β̂6 15.17 1.00 0.00
β̂7 12.21 1.00 0.00
β̂8 24.69 1.00 0.00
β̂9 10.07 1.00 0.00
β̂10 13.80 1.00 0.00
β̂11 2.99 1.00 0.01
β̂12 6.57 1.00 0.01
15
11 Intervalos de Confiança na Regressão Logı́stica
Múltipla
Com os parâmetros β̂j 0 s estimados, desejamos agora criar intervalos de confiança
para tais parâmetros de modo que:
h i
P r β ∈ β̂ − , β̂ + = 1 − α
16
Estimativa 2.5 % 97.5 %
β̂0 -1.10 -1.80 -0.43
β̂1 2.10 1.61 2.62
β̂2 1.43 0.92 1.95
β̂3 -0.76 -1.29 -0.24
β̂4 -1.26 -1.80 -0.75
β̂5 -0.58 -1.06 -0.11
β̂6 -1.63 -2.58 -0.78
β̂7 -1.03 -1.62 -0.45
β̂8 1.10 0.66 1.56
β̂9 -0.88 -1.47 -0.33
β̂10 0.79 0.37 1.21
β̂11 -0.42 -0.90 0.06
β̂12 0.68 0.16 1.21
Figura 7: IC - Para os Parâmetros
17
11.3 Intervalo de Confiança para os valores ajustados
Como o logito e seu intervalo de confiança estimados, podemos criar um intervalo
de confiança para evento e interesse π da seguinte forma:
" #
eΨ̂(x)−z1−α/2 DP [Ψ̂(x)] eΨ̂(x)+z1−α/2 DP [Ψ̂(x)]
IC(π, 1 − α) = ;
1 + eΨ̂(x)−z1−α/2 DP [Ψ̂(x)] 1 + eΨ̂(x)+z1−α/2 DP [Ψ̂(x)]
18
12 Medidas da qualidade do ajuste do modelo
Após ajustar um modelo podemos comparar as estimativas deste modelo
com os valores observados sendo que um modelo com bom ajuste (goodness of
fit) possui valores estimados próximos aos valores observados. Medidas como
a Deviance e Qui-Quadrada de Pearson ajudam a verificar a qualidade dos
modelos.
Seja a hipótese:
rpears<-residuals(ajust,type=’pearson’)
(QP<-sum(rpears^2))
p2<-1-pchisq(QP,698)
cbind(QP,p2)
QP p2
[1,] 622.2603 0.9815767
12.2 Deviance
A soma dos quadrados dos resı́duos no modelo logı́stico é denominada devi-
ance (D), e mede o quão distante as estimativas do modelo estão dos dados
obeservados, comparando o modelo ajustado com o modelo saturado.
"Q #
n yi 1−yi
i=1 π̂i (x) (1 − π̂i (x))
D = −2 · log Qn yi 1−yi
i=1 yi (1 − yi )
( n n
)
X X
= 2· [yi log(yi ) + (1 − yi ) log(1 − yi )] − [yi log(π̂i ) + (1 − yi ) log(1 − π̂i )]
i=1 i=1
n
X yi 1 − yi
=2· yi log − (1 − yi ) log
i=1
π̂i 1 − π̂i
Podemos observar que a estatı́stica Deviance compara o i-ésimo valor de yi com
π̂i de modo que a estatı́stica D tem distribuição qui-quadrado D ∼ χ21,1−α
19
Df Deviance Resid. Df Resid. Dev Pr(>Chi)
NULL 699 855.21
D1.1 1 76.98 698 778.23 0.0000
D1.2 1 50.04 697 728.20 0.0000
D2.1 1 26.68 696 701.52 0.0000
D3.4 1 19.69 695 681.83 0.0000
D4.2 1 4.37 694 677.46 0.0366
D4.4 1 12.86 693 664.60 0.0003
D5.1 1 7.38 692 657.22 0.0066
D6.1 1 21.75 691 635.47 0.0000
D7.4 1 9.07 690 626.40 0.0026
D8.1 1 14.20 689 612.20 0.0002
D12.1 1 3.04 688 609.16 0.0811
D15.1 1 6.57 687 602.59 0.0104
13 Diagnóstico do Modelo
13.1 Resı́duo de Pearson
O resı́duo de Pearson é dado por:
yi − π̂i
rπ̂ = p
π̂i (1 − π̂i )
O resı́duo de Pearson Studentizado tem a seguinte forma:
yi − π̂i
rS π̂ = p
π̂i (1 − π̂i )(1 − hi )
em que hi é a diagonal principal da matriz chapéu H dada por:.
H = X(X 0 X)−1 X 0 .
20
Figura 12: Resı́duos de Pearson
21
14 Aplicação
Para realizar esta aplicação utilizamos o banco de dados CreditScoring extraı́do
do software Statistica, cujas covariáveis estão descritas na tabela abaixo.
Variáveis Descrição
Credit Rating Flag: Bom ou Mau pagador
<= 300/ >300 / no balance
Balance of Current Account
/ no running account
Duration of Credit In Months
Hesitant / No previous Credits /
Payment of Previous Credits No problems with current Credits /
Paid Back / Problematic running accounts
business / furniture / household appliances /
Purpose of Credit new car / other / repair /
retraining / television / used car / vacation
Amount of Credit Valor do crédito entre: $350 e $25793, 6
No Savings / <140 / 140 - 700 /
Value of Savings
700 - 1400 / >1400
unemployed / <1 year / 1-5 years /
Employed by Current Employer for
5-8 years / >8 years
Installment in % of Available Income <15 / 15- 25 / 25-35 / >35
Marital Status single / divorced / married / widowed
Gender Female / Male
Living in Current Household for <1 year / 1-5 years / 5-8 years / >8 years
no assets / car /
Most Valuable Assets
life insurance / house or land
Age 18-73
no further running credits /
Further running credits at department store
/ at other banks
Type of Apartment free / owned / rented
Number of previous credits at this bank 1 / 2- 4 / 5- 6 / 7 or more
skilled employee / self-employed /
Occupation unskilled with no permanant residence /
unskilled with permanant residence
15 Referências
Apêndice
A Categorização de Covariáveis
22
X2-Duration of Credit
Categorização D2.1 Total
<= 25 months 0 770
> 25 months 1 230
X4-Purpose of Credit
Categorização D4.1 D4.2 D4.3 D4.4 D4.5 D4.6 D4.7 D4.8 D4.9 Total
business 0 0 0 0 0 0 0 0 0 12
furniture 1 0 0 0 0 0 0 0 0 280
household appliances 0 1 0 0 0 0 0 0 0 22
new car 0 0 1 0 0 0 0 0 0 103
other 0 0 0 1 0 0 0 0 0 234
repair 0 0 0 0 1 0 0 0 0 50
retraining 0 0 0 0 0 1 0 0 0 97
television 0 0 0 0 0 0 1 0 0 12
used car 0 0 0 0 0 0 0 1 0 181
vacation 0 0 0 0 0 0 0 0 1 9
X5-Amount of Credit
Categorização D5.1 D5.2 Total
<= $6125,00 0 0 778
6125 <x <= 12500 1 0 167
>12500 0 1 55
23
X6-Value of Savings X7-Employed by Current Employer
Categorização D6.1 D6.2 D6.3 D6.4 Total Categorização D7.1 D7.2 D7.3 D7.4 Total
Sem Poupança 0 0 0 0 603 unemployed 0 0 0 0 62
<140 1 0 0 0 103 <1 year 1 0 0 0 172
140 - 700 0 1 0 0 63 1-5 years 0 1 0 0 339
700 - 1400 0 0 1 0 48 5-8 years 0 0 1 0 174
>1400 0 0 0 1 183 >8 years 0 0 0 1 253
X10-Gender
Categorização D10.1 Total
Female 0 690
Male 1 310
X13-Age
X14-Further running credits
Categorização D13.1 D13.2 D13.3 Total
Categorização D14.1 D14.2 Total
<= 20 0 0 0 57
no further running credits 0 0 814
20 <= Age <= 35 1 0 0 599
at department store 1 0 47
35 <Age <= 50 0 1 0 248
at other banks 0 1 139
>50 0 0 1 96
24
X15-Type of Apartment
Categorização D15.1 D15.2 Total
free 0 0 179
owned 1 0 107
rented 0 1 714
X17-Occupation
Categorização D17.1 D17.2 D17.3 Total
skilled employee 0 0 0 630
self-employed 1 0 0 148
unskilled with no permanant residence 0 1 0 22
unskilled with permanant residence 0 0 1 200
B Código em R
# ------------------------------- Pacotes --------------------------------
library(MASS)
require(stats)
library(ROCR)
library(Epi)
require(xtable)
library(xtable)
# ---------------------------- Dados ------------------
dados<-read.table("DataCreditScoring_D.txt",header=T,sep="")
dim(dados)
attach(dados)
x0<-1 ; x<-cbind(x0,dados[,2:71])
dados1<-dados
segm<-read.table("segmentacao.txt",header=T,sep="")
attach(segm)
min(x2) ; max(x2)
hist(x2, xlim=c(0,75), col=c( rep("cyan",5), rep("yellow",7) ),
main="Duration of Credit - segmented", xlab = "In Months")
min(x5) ; max(x5)
hist(x5,col=c( rep("green",3), rep("yellow",3), rep("cyan",7)),
25
main="Amount of Credit - segmented", xlab = "In Dollar")
min(x13) ; max(x13)
hist(x13,xlim=c(10,80),col=c( rep("cyan",1), rep("yellow",3),
rep("green",3), rep("pink",5)),main="Age - segmented",
xlab = "In Years")
# cont<-0 ; a.i.c<-vector()
# while(modelo.train$aic>658){
# Cliente Maus
# bad<-which(dados1[,1]==1)
# train_bad<-bad[sample.int(300,210)]
# # Clientes Bons
# good<-which(dados1[,1]==0)
# train_good<-good[sample.int(700,490)]
# posi<-c(train_bad,train_good)[sample.int(700,700)]
# test<-dados1[-posi,] ; train<-dados1[posi,]
# fit.model<-modelo.train
# source("http://www.ime.usp.br/~giapaula/envelr_bino")
summary(modelo.train)
anova(modelo.train,test= "Chisq")
A.I.C<-stepAIC(modelo.train)
# cont<-cont+1
# a.i.c[cont]<-modelo.train$aic
# cat(" ",cont)
# }
xtable(A.I.C)
min(a.i.c)
par(mfrow=c(1,1))
ROC(form = modelo.train$y ~ modelo.train$fitted.values,
plot="ROC",PV=T, MX=T, AUC=T, data=train, main="ROC - Data Train")
26
clientes<-modelo.train$model
clientes<-cbind(clientes, pi)
head(clientes)
pi.mn<-sort(pi)[1:10]
pi.mr<-sort(pi)[650:700]
clientes[pi.mn,]
which(clientes[,14]==pi.mn[4])
xi__1<-c(1,1,0,1,0,0,0,0,1,0,0,0,0)
xi<-c(1,1,0,1,0,0,0,0,1,0,0,1,1)
w<-function(v){
v<-as.vector(v)
print(v)
return(exp(v%*%bts))
}
(OR<-w(xi__1)/w(xi))
# ------------ Matriz de Confus~
ao --------------------
classif<-modelo.train$fitted.values
classif[classif>0.210]<-1 ; classif[classif<1]<-0
tt<-cbind(train[,1],classif)
tt[1:20,]
(Sensibilidade = mm/M)*100
(Especificidade = bb/B)*100
27
(ACC = (bb+mm)/n)*100
(VPP = mm/m)*100
(VPN =bb/b)*100
(PVL = (mm + bm)/n)*100
(MCC = (mm*bb - mb*bm) / sqrt((mm+bm)*(mm+mb)*(bb+bm)*(bb+mb)))*100
cl<-modelo.train$fitted.values
x_bad<-cl[cl>0.210]
x_good<-cl[cl<=0.210]
win.graph()
plot(ecdf(x_bad), xlim=range(c(x_bad,x_good)), col="cyan",
lty=5, pch=16, main="Distr. Empı́rica Das Classes" )
plot(ecdf(x_good), add=TRUE, lty="dashed",col="green",pch=16)
legend("bottomright", lty=c(5,2), col=c("cyan","green"),pch=16 ,
legend= c("Maus Pagadores", "Bons Pagadores"), bty="n" )
ks.test(x_bad, x_good, alternative="t")
par(mfrow=c(1,1))
plot(0,0,type="n", xlim= c(0,1), ylim=c(0,7),
xlab="Cutoff", ylab="Density",main="Classes")
# ------------ Infer^
encia sobre os Par^
ametros ---------
# Teste De Wald #
# H0: bj = 0
install.packages("lmtest")
library(lmtest)
28
modelo.w2 <-glm(y ~ D1.1 + D2.1 + D3.4 + D4.2 + D4.4 +
D5.1 + D6.1 + D7.4 + D8.1 + D12.1 + D15.1,data=train,family=binomial(link="logit"))
modelo.w3 <-glm(y ~ D1.1 + D1.2 + D3.4 + D4.2 + D4.4 +
D5.1 + D6.1 + D7.4 + D8.1 + D12.1 + D15.1,data=train,family=binomial(link="logit"))
modelo.w4 <-glm(y ~ D1.1 + D1.2 + D2.1 + D4.2 + D4.4 +
D5.1 + D6.1 + D7.4 + D8.1 + D12.1 + D15.1,data=train,family=binomial(link="logit"))
modelo.w5 <-glm(y ~ D1.1 + D1.2 + D2.1 + D3.4 + D4.4 +
D5.1 + D6.1 + D7.4 + D8.1 + D12.1 + D15.1,data=train,family=binomial(link="logit"))
modelo.w6 <-glm(y ~ D1.1 + D1.2 + D2.1 + D3.4 + D4.2 +
D5.1 + D6.1 + D7.4 + D8.1 + D12.1 + D15.1,data=train,family=binomial(link="logit"))
modelo.w7 <-glm(y ~ D1.1 + D1.2 + D2.1 + D3.4 + D4.2 + D4.4 +
D6.1 + D7.4 + D8.1 + D12.1 + D15.1,data=train,family=binomial(link="logit"))
modelo.w8 <-glm(y ~ D1.1 + D1.2 + D2.1 + D3.4 + D4.2 + D4.4 +
D5.1 + D7.4 + D8.1 + D12.1 + D15.1,data=train,family=binomial(link="logit"))
modelo.w9 <-glm(y ~ D1.1 + D1.2 + D2.1 + D3.4 + D4.2 + D4.4 +
D5.1 + D6.1 + D8.1 + D12.1 + D15.1,data=train,family=binomial(link="logit"))
modelo.w10<-glm(y ~ D1.1 + D1.2 + D2.1 + D3.4 + D4.2 + D4.4 +
D5.1 + D6.1 + D7.4 + D12.1 + D15.1,data=train,family=binomial(link="logit"))
modelo.w11<-glm(y ~ D1.1 + D1.2 + D2.1 + D3.4 + D4.2 + D4.4 +
D5.1 + D6.1 + D7.4 + D8.1 + D15.1,data=train,family=binomial(link="logit"))
modelo.w12<-glm(y ~ D1.1 + D1.2 + D2.1 + D3.4 + D4.2 + D4.4 +
D5.1 + D6.1 + D7.4 + D8.1 + D12.1 ,data=train,family=binomial(link="logit"))
(WW<-waldtest(modelo.train,modelo.w1,test = "Chisq"))
# Ou desta forma
W<-vector()
Sxx<-vector()
coeftest(modelo.train)
Betas<-coef(modelo.train)
Sigma<-vcov(modelo.train)
for(i in 1:13) Sxx<-(Sigma[i,i])
for(i in 1:13) W[i]<- Betas[i]^2 / (Sigma[i,i])
(valor_p<-pchisq(W,688))
#Teste da Raz~
ao de Verossimilhança#
# H0: bj = 0
# Sem o j-ésimo beta ; j=1,2
29
D5.1 + D6.1 + D7.4 + D8.1 + D12.1 + D15.1,data=train,family=binomial(link="logit"))
modelo.w5 <-glm(y ~ D1.1 + D1.2 + D2.1 + D3.4 + D4.4 +
D5.1 + D6.1 + D7.4 + D8.1 + D12.1 + D15.1,data=train,family=binomial(link="logit"))
modelo.w6 <-glm(y ~ D1.1 + D1.2 + D2.1 + D3.4 + D4.2 +
D5.1 + D6.1 + D7.4 + D8.1 + D12.1 + D15.1,data=train,family=binomial(link="logit"))
modelo.w7 <-glm(y ~ D1.1 + D1.2 + D2.1 + D3.4 + D4.2 + D4.4 +
D6.1 + D7.4 + D8.1 + D12.1 + D15.1,data=train,family=binomial(link="logit"))
modelo.w8 <-glm(y ~ D1.1 + D1.2 + D2.1 + D3.4 + D4.2 + D4.4 +
D5.1 + D7.4 + D8.1 + D12.1 + D15.1,data=train,family=binomial(link="logit"))
modelo.w9 <-glm(y ~ D1.1 + D1.2 + D2.1 + D3.4 + D4.2 + D4.4 +
D5.1 + D6.1 + D8.1 + D12.1 + D15.1,data=train,family=binomial(link="logit"))
modelo.w10<-glm(y ~ D1.1 + D1.2 + D2.1 + D3.4 + D4.2 + D4.4 +
D5.1 + D6.1 + D7.4 + D12.1 + D15.1,data=train,family=binomial(link="logit"))
modelo.w11<-glm(y ~ D1.1 + D1.2 + D2.1 + D3.4 + D4.2 + D4.4 +
D5.1 + D6.1 + D7.4 + D8.1 + D15.1,data=train,family=binomial(link="logit"))
modelo.w12<-glm(y ~ D1.1 + D1.2 + D2.1 + D3.4 + D4.2 + D4.4 +
D5.1 + D6.1 + D7.4 + D8.1 + D12.1 ,data=train,family=binomial(link="logit"))
TRV0<- 2*(logLik(modelo.train)-logLik(modelo.w0))
gl0 <- length(coef(modelo.train))-length(coef(modelo.w0)); p0<-1-pchisq(TRV0,gl0)
TRV1<- 2*(logLik(modelo.train)-logLik(modelo.w1))
gl1 <- length(coef(modelo.train))-length(coef(modelo.w1)); p1<-1-pchisq(TRV1,gl1)
TRV2<- 2*(logLik(modelo.train)-logLik(modelo.w2))
gl2 <- length(coef(modelo.train))-length(coef(modelo.w1)); p2<-1-pchisq(TRV2,gl2)
TRV3<- 2*(logLik(modelo.train)-logLik(modelo.w3))
gl3 <- length(coef(modelo.train))-length(coef(modelo.w3)); p3<-1-pchisq(TRV3,gl3)
TRV4<- 2*(logLik(modelo.train)-logLik(modelo.w4))
gl4 <- length(coef(modelo.train))-length(coef(modelo.w4)); p4<-1-pchisq(TRV4,gl4)
TRV5<- 2*(logLik(modelo.train)-logLik(modelo.w5))
gl5 <- length(coef(modelo.train))-length(coef(modelo.w5)); p5<-1-pchisq(TRV5,gl5)
TRV6<- 2*(logLik(modelo.train)-logLik(modelo.w6))
gl6 <- length(coef(modelo.train))-length(coef(modelo.w6)); p6<-1-pchisq(TRV6,gl6)
TRV7<- 2*(logLik(modelo.train)-logLik(modelo.w7))
gl7 <- length(coef(modelo.train))-length(coef(modelo.w7)); p7<-1-pchisq(TRV7,gl7)
TRV8<- 2*(logLik(modelo.train)-logLik(modelo.w8))
gl8 <- length(coef(modelo.train))-length(coef(modelo.w8)); p8<-1-pchisq(TRV8,gl8)
TRV9<- 2*(logLik(modelo.train)-logLik(modelo.w9))
gl9 <- length(coef(modelo.train))-length(coef(modelo.w9)); p9<-1-pchisq(TRV9,gl9)
TRV10<- 2*(logLik(modelo.train)-logLik(modelo.w10))
30
gl10 <- length(coef(modelo.train))-length(coef(modelo.w10)); p10<-1-pchisq(TRV10,gl10)
TRV11<- 2*(logLik(modelo.train)-logLik(modelo.w11))
gl11 <- length(coef(modelo.train))-length(coef(modelo.w11)); p11<-1-pchisq(TRV11,gl11)
TRV12<- 2*(logLik(modelo.train)-logLik(modelo.w12))
gl12 <- length(coef(modelo.train))-length(coef(modelo.w12)); p12<-1-pchisq(TRV12,gl12)
TRV<-c(TRV0,TRV1,TRV2,TRV3,TRV4,TRV5,TRV6,TRV7,TRV8,TRV9,TRV10,TRV11,TRV12)
p<-c(p0,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12)
gl<-c(gl0,gl1,gl2,gl3,gl4,gl5,gl6,gl7,gl8,gl9,gl10,gl11,gl12)
A<-cbind(TRV, gl, p)
IC_p<-confint(modelo.train)
cb<-cbind(coef(modelo.train),IC_p)
xtable(cb)
IC_p<-confint(modelo.train)
I.n.f<-as.vector(IC_p[,1])
S.u.p<-as.vector(IC_p[,2])
par(mfrow=c(1,1))
plot(coef(modelo.train),col="black",main=expression(hat(beta))
,ylab="IC",
ylim=c(min(I.n.f),max(S.u.p)),pch=16
,lty = 3 , type=’l’)
names(modelo.train)
head(modelo.train$model)
phi<-modelo.train$linear.predictors
S_ii<-c() ; S_ij<-c()
X<-cbind(x0,modelo.train$model[,-1])
head(X)
31
for(i in 1:13) {
S_ii[i]<-(sum((X[,i]^2)*Sigma[i,i]) )
for(j in 1:13){
if(i!=j) {
cat("i = ",i,"\n j = ", j, "\n")
S_ij[i]<-sum(2*X[,i]*X[,j]*Sigma[i,j])}
}
}
cbind(S_ii,S_ij)
Var.phi<-sum(S_ii + S_ij )
I.n.f.L<-phi-1.96*sqrt(Var.phi)
S.u.p.L<-phi+1.96*sqrt(Var.phi)
par(mfrow=c(1,1))
plot(phi,col="black",main=expression(hat(Psi(x)))
,ylab="IC",
ylim=c(min(I.n.f.L),max(S.u.p.L)),pch=16
,lty = 3 , type=’l’)
IC.log<-cbind(I.n.f.L,phi,S.u.p.L)
par(mfrow=c(1,1))
plot(pi,col="black",main=expression(hat(pi(x))) ,ylab="IC",
ylim=c(min(I.n.f.pi),max(S.u.p.pi)),pch=16 ,lty = 3 , type=’l’)
lines(I.n.f.pi, col="blue", pch=16, lty = 1 , type=’l’)
lines(S.u.p.pi, col="red", pch=16, lty = 4 , type=’l’)
(IC.log<-cbind(I.n.f.pi,pi,S.u.p.pi))
IC_p<-confint(modelo.train)
I.n.f<-as.vector(IC_p[,1])
S.u.p<-as.vector(IC_p[,2])
I.n.f.odds<- exp(I.n.f)
32
S.u.p.odds<- exp(S.u.p)
bts<-as.vector(coef(modelo.train))
par(mfrow=c(1,1))
plot(exp(bts),col="black",main=expression(exp(hat(beta))) ,ylab="IC",
ylim=c(min(I.n.f.odds),max(S.u.p.odds)),pch=16 ,lty = 3 , type=’l’)
lines(I.n.f.odds, col="blue", pch=16, lty = 1 , type=’l’)
lines(S.u.p.odds, col="red", pch=16, lty = 4 , type=’l’)
(IC.odds<-cbind(I.n.f.odds,exp(bts),S.u.p.odds))
xtable(IC.odds)
ajust<-modelo.train
plot(anova(ajust,test="Chisq"))
summary(ajust)
xtable(anova(ajust,test="Chisq"))
cbind(ajust$fitted.values,ajust$y)
ajust$residuals
dev<-residuals(ajust,type=’deviance’)
plot(dev, main = "Resı́duos de Deviance")
abline(h=0,lty=4, col="blue")
QL<-sum(dev^2)
p1<-1-pchisq(QL,698)
cbind(QL,p1)
rpears<-residuals(ajust,type=’pearson’)
QP<-sum(rpears^2)
p2<-1-pchisq(QP,698)
cbind(QP,p2)
par(mfrow=c(1,1))
plot(rpears, ylab="resı́duos Pearson",main="Resı́duos de Pearson" ,pch=1, ylim=c(-5,5))
abline(h=0,lty=1, col="red")
plot(dev, ylab="resı́duos deviance",main="Resı́duos de Deviance" ,pch=1, ylim=c(-3,3))
abline(h=0,lty=3, col="red")
par(mfrow=c(1,1))
ntot<-c(10,15,12,15,13,8,17,10)
fit.model<-ajust
source("http://www.ime.usp.br/~giapaula/envelr_bino")
33
win.graph()
par(mfrow=c(1,1))
# Resı́duos da regress~
ao:
abline(plot(resid(modelo.train),main="Resı́duos do Modelo") ,col="red", h=0)
# Resı́duos padronizados da regress~
ao:
abline(plot(rstandard(modelo.train),main="Resı́duos Padronizados") ,col="red", h=0)
# Resı́duos de student da regress~
ao:
abline(plot(rstudent(modelo.train),main="Resı́duos Studentizados"),col="red", h=0)
save.image ("Credit_Score.RData")
#Limpar a áreade trabalho da seç~
ao ativa:
rm(list = ls(all = TRUE))
34