You are on page 1of 35

Estágio II

Teoria e Aplicação Básica Sobre Regressão


Logı́stica para Modelagem de Risco

Modelagem de Risco de Crédito

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.

2 Etapas de Desenvolvimento do Modelo


A estrutura básica de desenvolvimento de modelos de Credit Scoring está re-
presentadada na Figura 1.

Figura 1: Estrutura de Desenvolvimento de Modelos Credit Score

2.1 Planejamento Amostral


O processo de amostragem para modelos de Credit Scoring possui uma estrutura
temporal de até 24 meses divididos em passado, presente e futuro onde cada
perı́odo desenvolve uma particularidade neste processo. Seja na escolha das
variáveis explicativas, nas informações geradas pelos sistemas das empresas e
na predição como resultado final do processo. Consideramos também que a
relação dos dados cadastrais dos clientes com o desempenho dos créditos seja
semelhante no passado e no futuro. A Figura 1 nos mostra um resuno deste
processo.

1
Figura 2: Estrutura de Amostragem Temporal de Modelos Credit Score

i) Dados desbalanceados: Quando há um desbalanceamento da ordem de


20 bons para 1 mau geralmente há uma dificuldade em detectar através
da modelagem a diferença de perfis, entre bons e maus pagadores, sendo
necessário aumenta a proporção evento menos frequente e estratificar a
amostra de forma aleatória em proporções de cada categoria, amostragem
do tipo Oversampling ou State Dependent.
ii) A sazonalidade: A seleção da amostra envolvendo momentos especı́ficos
no tempo em que o comportamento do evento é atı́pico, pode afetar e
comprometer diretamente o desempenho do modelo.
iii) Variabilidade do evento de interesse: Fatores externos, como a conjun-
tura econômica, que fazem com que a seleção da amostra envolva cenários
de não-representatividade da mesma com relação ao evento e assim uma
maior instabilidade do modelo.
iv) Amostragem por safras: No contexto de Credit Scoring a escolha de 12
safras ao longo de um ano minimiza consideravelmente a instabilidade do
modelo provocada pelos fatores descritos em i,ii e iii.

3 Estratégia Estatı́stica de Modelagem


Adotaremos como estratégia para a modelagem Credit Scoring, o método de
Regressão logı́stica, que consiste em modelar o parâmetro de proporção π da
variável de interesse da distribuição de Bernoulli com a função de ligação Logito,
obtida através da famı́lia de exponencial.

3.1 Famı́lia Exponencial


Diz-se que uma variável aleatória Y tem distribuição pertencente à famı̀lia ex-
ponencial se a sua função densidade de probabilidade (f.d.p.) puder ser escrita
na forma:

f (Y |θ) = h(y) exp{η(θ)t(y) − b(θ)}

Seja Y ∼ B(1, π) cuja forma na famı́lia exponêncial é dada por:

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η(θ)

4 Regressão Logı́stica Múltipla


No modelo de regressão logı́stico a variável resposta Y é binária assumindo os
valores 1 ou zero, denominados por ”sucesso”e ”fracasso”respectimavente. Em
nosso contexto o ”sucesso”ou evento de interesse será relacionado aos clientes
inadimplentes, ou seja, aqueles clientes cujo valor da variável resposta Y é igual
a um, Y = 1 e desta forma o ”fracasso ”será relacionado aos clientes adimplentes
cujo valor da variável resposta Y é igual zero, Y = 0 , temos que:
id
Y ∼ Bernoulli(π)
De modo que:
P (Y = 1) = π e P (Y = 0) = 1 − π

4.1 Modelo Estatı́stico


Desejamos modelar o resultado da variàvel aleatória Yi com base num conjunto
de k caracterı́sticas de cada cliente, descritas pelo vetor X = (x1 , x2 , ..., xk )0 ,
de modo a determinar um ranking de propabilidades de maus pagadores dada
por π(x), cujo topo deste ranking descreve o cliente com maior chances de
inadimplência, a função que descreve essa relação é dada por:
1−yi
P [Yi = yi |x1 , x2 , . . . , xk ] = πiyi (1 − πi ) (2)

Seja a relação lienar multipla dada por Y = X 0 β +  com  ∼ N (0, σ 2 I) , onde


β é um vetor de parâmetros cuja relação com preditor linear é dada por:

η(θ) = 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:

e(β0 +β1 x1 +...+βk xk )


π=
1 + e(β0 +β1 x1 +...+βk xk )

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

A versão multivariada do método numérico iterativo de Newton-Raphson que é


baseado na aproximação de Taylor expandindo-se a função U (β β ) na vizinhança
do ponto inicial β (0) nos fornece a solução deste sistema de equações não lineares,
de modo que:

β (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.

β (m+1) = β (m) + [−U 0 (β


β (m) )]−1 U 0 (β
β (m) )

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.

6.1 Todos os modelos possı́veis


As medidas AIC (Akaike’s information criterion) e BIC (Bayesian In-
formation Criteric) são critérios para seleção de modelos dado um conjunto
finito de modelos. Ambos baseiam-se no valor da função de verossimilhança
do modelo ajustado e um valor K representando a quantidade de parâmetros
envolvidas no ajuste do modelo de modo a penalizar os modelos com a maior
quantidade de parâmetros, sendo assim , os melhores modelos são aqueles cujos
valores de AIC e BIC são menores. Essas medidas são calculadas da seguinte
forma.
 
AIC = 2 · k − 2 · log L(β̂|Y, X)

5
 
BIC = k · log(n) − 2 · log L(β̂|Y, X)

, em que k é o número de parâmetros do modelo. Com o auxı́lio do R chegamos


ao modelo de menor AIC.

Tabela 1: Variáveis Selecionadas


Variáveis Segmentação Df Deviance AIC
Interpcepto 602.59 628.59
Balance of Current Account D1.1 - No balance 677.46 701.46
Balance of Current Account D1.2 - >$300 633.71 657.71
Duration of Credit D2.1 - > 25 610.69 634.69
Payment of Previous Credits D3.4 - Problematic Running Accounts 627.60 651.60
Purpose of Credit D4.2 - household Appliances 608.49 632.49
Purpose of Credit D4.4 - Other 617.76 641.76
Amount of Credit D5.1 - 6.125<x<=12.500 614.80 638.80
Value of Savings D6.1 - <140 627.28 651.28
Employed by Current Employer D7.4 - >8 years 612.66 636.66
Installment in % of Available Income D8.1 - <15 616.39 640.39
Most Valuable Assests D12.1 - no assets 605.58 629.58
Type of Apartment D15.1 - owned 609.16 633.16

Na Tabela 1 temos o conjunto de covariáveis selecionadas pelo critério de


menor AIC.

7 Métricas de Predição, Desempenho e Com-


paração de Modelos
Há métodos estatı́sticos que avaliam se há diferênças significativas entre duas
populações dado uma métrica e um evento de interesse, neste sentido, iremos
utiliza-los a fim de medir o quanto os grupos de maus e bons pagadores são
diferentes.

7.1 Curva ROC e Cut-Off Point


Como os valores das probabilidades de π̂ estão entre 0 e 1, faz-se necessário
definirmos uma Regra de Predição baseada em um ponto de corte ”cut-
off point”de modo a classificar os clientes como Ŷ = 1 maus pagadores ou
Ŷ = 0 bons pagadores. Para determinar o ponto de corte recorremos a curva
ROC (Receiver Operating Characteristic Curve), de modo que otimizando a
relação entre os valores de sensibilidade P (Ŷ = 1|Y = 1) e 1-especificidade
1 − P (Ŷ = 0|Y = 0) obtemos o ponto de corte que é dado pelo ponto que
mais se aproxima do canto superior esquerdo do gráfico. Pela Figura 3 podemos
observar o ponto de corte (cut-off point) aém de outras medidas de desempenho
geral de nosso modelo.

6
Figura 3: Resultado da Classificação - Curva ROC

Pela Curva ROC podemos interpretar o desempenho do modelo, de modo


que quanto maior área acima da diagonal principal, melhor será o desempenho
do modelo.

7.2 Métricas de Desempenho


O processo de construção de um modelo passa necessariamente por critérios
cujos objetivos são validar a estrutura de modelagem, para isso, usa-se submeter
às classificações obtidas à uma métrica capaz de medir o quão bom é o modelo.
Commo estamos trabalhando com um modelo de predição binária e como já
sabemos determinar o cut-off tais critérios podem ser obtidos através da Matriz
de Confusão dada pela Figura 5.

Figura 4: Matriz de Confusão: Critérios de Desempenho do Modelo

onde

n - Quantidade total de clientes;


bB - Clientes Bons, classificados como Bons (acerto);

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;

Como vimos a curva ROC se utiliza de duas medias Sensibilidade e Especifici-


dade que podem ser obtidas pela Matriz de Confusão para os valores observados
dada pela Tabela 2.

Matriz de Confusão
Valores Da Amostra
Valores Preditos Mau Bom Total
Mau 180 158 338
Bom 30 332 362
Total 210 490 700

Tabela 2: Valores obtidos após a classificação

Sensibilidade: Probabilidade de classificar como o cliente como mau paga-


dor, dado que ele é mau pagador.
mM
P (Ŷ = 1|Y = 1) = = 85.71%
M
Especificidade:Probabilidade de classificar o cliente como bom pagador, dado
que ele é bom pagador.
bB
P (Ŷ = 0|Y = 0) = = 67.75%
B
Acurácia: É a proporção entre o número de acerto do modelo pelo número
total de clientes, sem levar em consideração se esses clientes possuem ou não ao
evento de interesse.
bB + mM
ACC = = 73.14%
n
Valor Preditivo Positivo (VPP): É a proporção entre as observações de
acerto do evento de interesse pelo total observações classificadas como evento
de interesse.
mM mM
V PP = = = 53.25%
mB + mM m
Valor Preditivo Negativo (VPN): É a proporção entre as observações de
acerto do não-evento de pelo total observações classificadas como não- evento
de interesse
bB bB
V PN = == = 91.71%
bB + bM b
Prevalência (PVL): É a proporção entre o número de acertos mais o número
de erros para o evento de interesse pelo total de obervações sem considerar os
eventos.
mM bM mM + bM
PV L = + = = 30%
n n n

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 )

7.3 O Método Kolmogorov-Smirnov (KS)


O Método Kolmogorov-Smirnov nos fornece uma estatı́stica capaz de medir a
distância absoluta entre dois grupos distintos, usando para isso as respectivas
funções empı́ricas de probabilidade acumuladas de cada grupo. Se considerar-
mos que com base no ponto de corte foram formados dois grupos, maus e bons
pagadores, idêntificados por m e b de modo que suas repectivias funções de
empı́ricas acumuladas são dadas por Fm e Fb então a estatı́stica KS é obtida da
seguitne forma:

KS(m,b) = sup |F (m) − F (b)| (3)

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.

Figura 5: Distribuição Empı́rica Após o Processo de Classificação

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:

D(m,b) = 1 e p − value < 2.2e − 16

Com isso, podemos dizer que há diferenças significativas entre as distribuições
das classes bons e maus pagadores.

8 Odds Ratio e Interpretação dos Parâmetros


Interpretar os parâmetros do modelo é um passo fundamental para medir a in-
fluência que cada covariável exerce sobre a probabilidade do evento de interesse,
em nosso caso, usaremos a função Odds Ratio - OR (razão de chances) que
compara a probabilidade de sucesso com a probabilidade de fracasso dado a
caraterı́stica que se desejar investigar.
Seja βj xij com j = 1, . . . , k o j-ésimo parâmetro de interesse associado a j-ésima
caracterı́stica xij do i-ésimo cliente a ser comparada, temos que ω(x) é dado
por:

eβ0 +βj xij eβ0 +βj xij


π(x) β +β x β0 +βj xij
= 1 + eβ0 +βj xij = 1+e
0 j ij
ω(x) = = eβ0 +βj xij (4)
[1 − π(x)] e 1
1− 1 + eβ0 +βj xij
1 + eβ0 +βj xij
De modo que ao fazermos xij+1 − xij = 1 , obtemos

ω(xj+1 ) eβ0 +βj xij+1


OR = = β0 +βj xij = eβ0 +βj xij+1 e−β0 −βj xij = eβj (5)
ω(xj ) e
então

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:

βj > 0 ⇒ OR > 1 ⇒ π(xij+1 ) > π(xij )


βj < 0 ⇒ OR < 1 ⇒ π(xij+1 ) < π(xij )

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

A Tabela 3 refere-se aos dez clientes com as menores chances de inadimplência.


Nota-se que tais probabilidades podem estar relacionadas a ausência ou quase
ausência das caracterı́sticas D1.1, D1.2 , D6.1 ,D8.1 , D15.1, e se assim for,
podemos esperar que tais caracterı́sticas estejam presentes quando relacionadas
aos clientes com maiores chances de inadimplência. A saber tais caracterı́sticas
são:
Variável Segmentação
Balance of Current Account D1.1 no balance
Balance of Current Account D1.2 >$300
Value of Savings D6.1 <140
Installment in % of Available Income D8.1 15-25
Type of Apartment D15.1 owned

Tabela 4: As 10 maiores 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 π̂
80 1 0 1 0 0 0 0 1 1 0 1 0 0 0.765
459 1 0 1 0 0 0 0 1 1 0 1 0 0 0.765
213 1 0 1 0 0 0 0 1 1 0 1 0 0 0.765
359 1 0 1 0 0 0 0 1 1 0 1 0 0 0.765
172 1 1 0 1 0 1 0 1 1 0 1 0 1 0.769
634 1 1 0 0 0 0 0 1 1 1 1 1 1 0.776
883 1 1 0 0 0 1 0 1 1 0 1 0 0 0.782
41 1 1 0 0 0 1 0 1 1 0 1 0 0 0.783
164 1 0 1 0 0 0 0 0 1 1 1 0 0 0.791
952 0 1 0 1 0 0 0 0 1 0 0 0 0 0.793

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:

Tabela 5: Tabela Odds Ratio


Caracterı́stica Segmentação Estimate Odds Ratio
Interpcepto -1.1036 0.3317
Balance of Current Account D1.1 - No balance 2.1038 8.1973
Balance of Current Account D1.2 - >$300 1.4265 4.1643
Duration of Credit D2.1 - > 25 -0.7592 0.4680
Payment of Previous Credits D3.4 - Problematic Running Accounts -1.259 0.2839
Purpose of Credit D4.2 - household Appliances -0.5816 0.5590
Purpose of Credit D4.4 - Other -1.6321 0.1955
Amount of Credit D5.1 - 6.125<x<=12.500 -1.0316 0.3564
Value of Savings D6.1 - <140 1.1041 3.0165
Employed by Current Employer D7.4 - >8 years -0.8825 0.4138
Installment in % of Available Income D8.1 - <15 0.7852 2.1928
Most Valuable Assests D12.1 - no assets -0.4187 0.6579
Type of Apartment D15.1 - owned 0.6838 1.9814

A Tabela 5 nos mostra as caracterı́sticas recomendadas pelo nosso modelo,


suas repectivas segmentações, as estimativas dos parâmetros e as razões de chan-

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.

9 Desvio padrão estimado


Das derivadas parciais de 2º ordem da função `(Lβ) podemos obter as estima-
tivas de varância e covariância dos β̂j 0 s .

∂ 2 L(β) Pn xij β̂j


= − i=1 x2ij e xij β̂j 2
∂βj2 (1+e )
, para j=0,1,...,k (6)
∂ 2 L(β) Pn xij β̂j
= − i=1 xij xil e xij β̂j 2
∂βj ∂βl (1+e )

Com isso temos que:

Σ = I −1 (β̂), com I(β̂) = X 0 V X


d d
V ar(β̂j ) = diag(V ar(β̂)j th ) = π̂ij (1 − π̂ij ), j th elemento da diagonal da matriz.
Cov(β̂j , β̂l ) = Cov(β̂l , β̂j ) = V ar(β̂)(j,l)

Dadas as matrizes:

1 x11 ... x1k  π̂1 (1 − πb1 ) 0 ... 0


   
  
1 x21 ... x2k  0 π̂2 (1 − π̂2 ) . . . 0
   
  
  
  
X= .. ;V = .. .. ..
   
 
.
   


 . 




 . . 

π̂( 1 − π̂n )
   
1 xn1 ... xnk n×(k+1)
0 0 ... n×n

Então temos que o desvio padrão do coeficiente βj é dado por:


q
DP (β̂j ) = V ˆar(βˆj )
ˆ

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 β̂

Hauck e Donner (1977) recomendam no caso do teste de Wald não rejeitar


H0 que se a utilize o teste TRV para testar se realmente o coeficiente não é
significativo.

Wj Df Chisq P r(> Chisq)


w1 688 66.371 3.736e-16 ***
w2 688 29.588 5.342e-08 ***
w3 688 8.0531 0.004542 **
w4 688 22.220 2.431e-06 ***
w5 688 5.7457 0.01653 *
w6 688 12.784 0.0003496 ***
w7 688 12.135 0.0004949 ***
w8 688 23.027 1.597e-06 ***
w9 688 9.3313 0.002253 **
w10 688 13.437 0.0002468 ***
w11 688 2.9376 0.08654 .
w12 688 6.5953 0.01023 *

Tabela 6: Tabela do Teste de wald

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.

10.2 O Teste da Razão de Verossimilhança


É necessário comparar os valores observados da variável resposta com valores
preditos a partir de modelo com e sem a variável de interesse. Para isso utiliza-
se na compração o log da função de verossimilhança. A comparação dos valores
observados com os valores preditos é realizado através da razão de verossimi-
lhanças da por:

13
  
L β̂|Y, X
D = −2 log  
L (β 0 |Y )

onde L(β̂)|Y, X) é a função de verossimilhança do modelo ajustado e L(β 0 |Y )


é a função de verossimilhança do modelo saturado, ou seja, do modelo em que
a estimativa da proporção π é a variável resposta y. A estatı́stica D(Deviance)
tem distribuição assintótica qui-quadrado com graus de liberdade de acordo com
a hipótese formulada , ela nos auxilia a verificar o ajuste do modelo, de modo
que:
"Q #
n yi 1−yi
i=1 π̂ i (x) (1 − π̂ i (x))
D = −2 log Qn yi 1−yi
i=1 yi (1 − yi )

Neste caso, como a variável reposta é binária, a verossimilhança do modelo


saturado é igual a 1. Segue da definição de modelo saturado que pi ˆ = yi ,
vejamos.
n
Y 1−yi
L(β 0 |Y ) = yiyi (1 − yi ) =1
i=1

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

Para testar a significância da variável independênte deve-se comparar o valor


de D no modelo com e sem a variável independente na equação.

G = D(modelo sem a variável) − D(modelo com a variável).


Pode-se escrever G como:
  
L β̂−i |Y, X
G = −2 log    
L β̂|Y, X
 
tal teste é chamado Teste da Razão de Verossimilhança(TRV), onde que L β̂|Y, X
é 
a função de
 verossimilhança do modelo com todas as variáveis em estudo e
L β̂−i |Y, X é a função de verossimilhança do modelo com todas as variáveis
exceto a variável a ser testada xi .
Desejamos testar a seguinte hipótese:

H0 : βi = 0
H1 : βi 6= 0
de modo que a estatı́stica G ∼ χ21,1−α , tem distribuição assintótica qui-quadrado
com 1 grau de liberdade.

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

Tabela 7: Teste Da Razão de Verossimilhança

Pela Tabela 7 podemos verificar através dos valores de p-valores que as


covariá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.

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 − α

Então um nı́vel de confiança


h 1 − αi = 0.95, implica que em 95% das possı́veis
amostras, o intervalo β̂ −  ; β̂ +  obtido conterá o verdadeiro valor do parâmetro
de modo que cada amostra resulta em um intervalo diferente, porém, em 95%
das amostras, o intervalo contém o verdadeiro valor do parâmtro β. Na Figura
6 há dois intervalos que não contém o parâmetro β

Figura 6: Interpretação dos Intervalos de Confiança

11.1 Intervalo de Confiança Para os Parâmetros


Tomando como base o teste de Wald, temos que o intervalo de confiança de
100(1 − α)% para um parâmetro βj é dado por:
h i
IC(βj , 1 − α) = βˆj − z1−α/2 DP (βˆj ) ; βˆj + z1−α/2 DP (βˆj ) .

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

11.2 Intervalo de Confiança para Logito


Podemos também obter um estimador para a parte linear do modelo de regressão
logı́stica, o logito, que é dado por:
 
π̂
log = Ψ̂(X) = β̂0 + β̂1 x1 + β̂2 x2 + . . . + β̂k xk
1 − π̂
De modo que o caso geral para obtermos uma estimativa da variância de Ψ̂(X)
é dado por:
k
X k
X k
X
V ˆar[Ψ̂(x)] = x2j V ˆar(β̂j ) + ˆ β̂j , β̂l )
2xj xl Cov(
j=0 j=0 l=j+1

O intervalo de confiança para a logito é:

IC(Ψ(x), 1 − α) = [Ψ̂(x) − z1−α/2 DP [Ψ̂(x)]; Ψ̂(x) + z1−α/2 DP [Ψ̂(x)]],

Figura 8: Intervalo de Confiança para Logito

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)]

Figura 9: IC para os valores preditos

11.4 Intervalo de Confiança para a Odds Ratio


Sabemos que os limites do intervalo de confiança para βj é dado por:

βI,S = βˆj ∓ z1− α2 DP (βˆj ) para j=1,2,...,k

Então um intervalo de confiança para o Odds Ratio é dado por:

IC(Odds Ratio, 1 − α) = [eβI ; eβS ]

eβ̂inf eβ̂ eβ̂sup


0.17 0.33 0.65
4.99 8.20 13.76
2.51 4.16 7.02
0.28 0.47 0.79
0.17 0.28 0.47
0.34 0.56 0.89
0.08 0.20 0.46
0.20 0.36 0.64
1.94 3.02 4.78
0.23 0.41 0.72
1.45 2.19 3.35
0.40 0.66 1.06
1.18 1.98 3.34
Figura 10: IC - Odds Ratio

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:

H0 : O Modelo Ajustado é Satisfatório

12.1 Qui-Quadrado de Pearson


As medidas da qualidade do ajuste são funções dos resı́duos definido como a
diferença entre o observado e valores ajustados (y − π̂). A medida de Pearson
para a diferença entre o observado e predito é:
n
X (yi − π̂i )2
Q= ∼ χ21,1−α
i=1
π̂ i (1 − π̂ i )
Com o auxı́lio do R , temos :

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:

Figura 11: Resı́duos de Pearson

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

13.2 Resı́duo Deviance


O resı́duo deviance é pela seguinte fórmula:
p
di = ± −2 [yi log(π̂i ) + (1 − yi )log(1 − π̂i )].

Figura 13: Resı́duos de Deviance

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

X1-Balance of Current Account


Categorização D1.1 D1.2 D1.3 Total
no running account 0 0 0 274
no balance 1 0 0 269
>$300 0 1 0 394
<= $300 0 0 1 63

22
X2-Duration of Credit
Categorização D2.1 Total
<= 25 months 0 770
> 25 months 1 230

Figura 14: Segmentação - Duração de


Crédito

X3-Payment of Previous Credits


Categorização D3.1 D3.2 D3.3 D3.4 Total
Hesitant 0 0 0 0 40
No previous Credits 1 0 0 0 530
No problems with current Credits 0 1 0 0 88
Paid Bac 0 0 1 0 293
Problematic running accounts 0 0 0 1 49

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

Figura 15: Segmentação para Amount Cre-


dit

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

X8-Installment in % of Available Income X9-Marital Status


Categorização D8.1 D8.2 D8.3 Total Categorização D9.1 D9.2 D9.3 Total
<15 0 0 0 476 single 0 0 0 548
15- 25 1 0 0 157 divorced 1 0 0 50
25-35 0 1 0 231 married 0 1 0 310
>35 0 0 1 136 widowed 0 0 1 92

X10-Gender
Categorização D10.1 Total
Female 0 690
Male 1 310

X11-Living in Current Household for X12-Most Valuable Assets


Categorização D11.1 D11.2 D11.3 Total Categorização D12.1 D12.2 D12.3 Total
<1 year 0 0 0 130 no assets 0 0 0 282
1-5 years 1 0 0 308 car 1 0 0 232
5-8 years 0 1 0 149 life insurance 0 1 0 332
>8 years 0 0 1 413 house or land 0 0 1 154

Figura 16: Segmentação por Idade

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

X16-Number of previous credits at this bank


Categorização D16.1 D16.2 D16.3 Total
1 0 0 0 633
2 até 4 1 0 0 333
5 até 6 0 1 0 28
7 or more 0 0 1 6

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

#---------------------- Segmentaçoes ----------------------

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")

# ---------- Amostra de Treinamento ---------------- #

# 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,]

#write.table(train, file="train.txt", row.names=F, sep=" ", quote=F)

# modelo.train<-glm(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,data=train,family=binomial(link="logit"))

# 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")

# ----------------- Odds Ratio ------------------------


names(modelo.train)
head(modelo.train$model)

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])

for(i in 1:10) print(clientes[clientes$pi==pi.mn[i],])


for(i in 1:10) print(clientes[clientes$pi==pi.mr[i],])

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,]

mm<-0; bm<-0 ; mb<-0 ; bb<-0


for(i in 1:length(tt[,1])){ifelse( tt[i,1]==1 & tt[i,2]==1, mm<-mm+1, mm<-mm)}
for(i in 1:length(tt[,1])){ifelse( tt[i,1]==0 & tt[i,2]==0, bb<-bb+1, bb<-bb)}
for(i in 1:length(tt[,1])){ifelse( tt[i,1]==1 & tt[i,2]==0, bm<-bm+1, bm<-bm)}
for(i in 1:length(tt[,1])){ifelse( tt[i,1]==0 & tt[i,2]==1, mb<-mb+1, mb<-mb)}

M<-mm+bm ; B<-mb+bb ; n<- M+B


m<-mm+mb
b<-bm+bb

c1<-c("Prediçoes", "Mau", "Bom", "Total" )


c2<-c("Mau",mm ,bm , M )
c3<-c("Bom",mb , bb, B )
c4<-c("Total",m ,b , n)
(mc<-data.frame(c1,c2,c3,c4))

(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

# ----------------------- Teste KS ------------------


require(stats)
library(stats)

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")

#------------------- Gráficos ----------------------#


pp <- modelo.train$fitted.values
ll <- modelo.train$y

pred <- prediction(pp,ll)


#perf <- performance(pred,’tpr’,’fpr’)

par(mfrow=c(1,1))
plot(0,0,type="n", xlim= c(0,1), ylim=c(0,7),
xlab="Cutoff", ylab="Density",main="Classes")

for (runi in 1:length(pred@predictions)) {


lines(density(pred@predictions[[runi]][pred@labels[[runi]]=="0"]), col= "blue")
lines(density(pred@predictions[[runi]][pred@labels[[runi]]=="1"]), col="red")
}

# ------------ Infer^
encia sobre os Par^
ametros ---------

# Teste De Wald #

# H0: bj = 0

install.packages("lmtest")
library(lmtest)

modelo.w1 <-glm(y ~ D1.2 + 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"))

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

modelo.w0 <-glm(y ~ -1 + D1.1 + D1.2 + 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.w1 <-glm(y ~ D1.2 + 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.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 +

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)

# INTERVALO DE CONFIANÇA PARA Os Par^


ametros

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’)

lines(I.n.f, col="blue", pch=16, lty = 1 , type=’l’)


lines(S.u.p, col="red", add=T, pch=16, lty = 4 , type=’l’)

# INTERVALO DE CONFIANÇA PARA O LOGITO

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’)

lines(I.n.f.L, col="blue", pch=16, lty = 1 , type=’l’)


lines(S.u.p.L, col="red", add=T, pch=16, lty = 4 , type=’l’)

IC.log<-cbind(I.n.f.L,phi,S.u.p.L)

# Intervalo de confiança para proporçao pi


I.n.f.pi<- exp(I.n.f.L)/ (1 + exp(I.n.f.L) )
S.u.p.pi<- exp(S.u.p.L)/ (1 + exp(S.u.p.L) )
cat("IC(L)=(",I.n.f.pi,",",S.u.p.pi,")" )

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))

# Intervalo de confiança para Odds Ratio

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)

# ---------- Medidas da Qualidade do modelo ----------------

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

You might also like