37
Guilherme Martins Dias Batista Túlio Tonini da Silva Regressão para Variáveis Categóricas Ordinais aplicado em indicadores financeiros CURITIBA 2009

Guilherme Martins Dias Batista Túlio Tonini da Silva · tanto para variáveis que não exista uma ordenação natural quanto para as que existem, ... Fazendo uma analogia com modelos

  • Upload
    vothu

  • View
    216

  • Download
    0

Embed Size (px)

Citation preview

Guilherme Martins Dias Batista

Túlio Tonini da Silva

Regressão para Variáveis Categóricas

Ordinais aplicado em indicadores

financeiros

CURITIBA

2009

2

Guilherme Martins Dias Batista

Túlio Tonini da Silva

Regressão para Variáveis Categóricas Ordinais

aplicado em indicadores financeiros

Trabalho apresentado à disciplina de Labora-

tório de Estatística II do curso de Estatística

do Departamento de Estatística do Setor de

Ciências Exatas da Universidade Federal do

Paraná.

Orientador: Prof. Fernando Lucambio Pérez

CURITIBA

2009

3

Sumário RESUMO ..........................................................................................................................4

1. INTRODUÇÃO ............................................................................................................5

2. MATERIAIS E MÉTODOS .........................................................................................6

2.1 Regressão Logística ..............................................................................................6

2.2 Razão Contínua .....................................................................................................7

2.3 Estereótipo ............................................................................................................7

2.4 Odds Proporcionais ...............................................................................................8

2.5 Odds Proporcionais Parciais .................................................................................9

2.6 Banco de Dados ..................................................................................................10

3. RESULTADOS ..........................................................................................................13

4. CONCLUSÕES ..........................................................................................................23

5. REFERÊNCIAS .........................................................................................................24

6. APÊNDICE....... .........................................................................................................24

4

RESUMO

Em muitos estudos as informações disponíveis são classificadas em mais do que

duas categorias, nessas situações modelos de regressão para variáveis ordinais

são interessantes.

Neste trabalho fez-se um apanhado e um resumo dos modelos existentes e

propostos na literatura, em seguida uma aplicação em dados financeiros é

mencionado com resultado e com mais detalhes sobre o modelo mais adequado

para a situação encontrada.

Palavras-chaves: Regressão Ordinal, variáveis ordinais

5

1. INTRODUÇÃO

No presente trabalho estuda-se a relação entre uma variável resposta Y com um

conjunto de covariáveis ou variáveis explicativas 1x , 2x ,..., px que podem ser contínuas

ou discretas. Discute-se aqui o caso da variável resposta Y ter mais do que dois níveis

de resposta (multinomial), caracterizando assim um modelo de regressão para variáveis

categóricas.

A ênfase deste trabalho será dada na chamada regressão ordinal, que nada mais é do que

uma extensão dos modelos de regressão logística (no qual as variáveis são dicotômicas,

univariadas).

Com a intenção de se fazer estudos que permitam trabalhar com mais do que dois níveis

para variáveis categóricas, surgem modelos como regressão logística politômica, que

permitem avaliar relações entre covariáveis e a variável resposta com mais de um nível

tanto para variáveis que não exista uma ordenação natural quanto para as que existem,

(modelos de regressão ordinais).

Quando a variável resposta possui mais de dois níveis e pela sua natureza seja ordenada,

existem algumas metodologias de análise, dentre elas o modelo de Odds Proporcionais,

modelo de Odds Proporcionais Parciais, modelo de Razão Contínua e o modelo

Estereótipo. Estes modelos pertencem à família logística, que contém uma hierarquia de

modelos tanto para dados ordenados quanto nominais.

A escolha do modelo depende de como foi construída a variável resposta e de algumas

suposições. A metodologia se encaixa tanto para X fixo e y aleatório quanto para

ambos aleatórios.

É importante comentar que a classes de modelos atualmente estudadas não cobrem

todos os tipos de problemas que surgem na prática. Apesar dessa diversidade e dessa

grande variedade de estudos sobre o assunto, a sua utilização ainda é escassa. Isto pode

ser atribuído não só a complexidade, mas especialmente à dificuldade da validação de

seus pressupostos. Outro fator que poderia estar relacionado a pouca utilização destes

modelos são as reduzidas opções de modelagem em pacotes estatísticos comerciais.

Mais a frente, para exemplificar o uso da metodologia de regressão para variáveis

categóricas ordenadas, optou-se por estudar o banco de dados ‘Financial Structure

Dataset’, que possui indicadores financeiros de vários bancos de vários países, que

medem entre outras coisas, tamanho, atividade, importância.

6

2. MATERIAIS E MÉTODOS

2.1 Regressão Logística

Segue uma pequena revisão que serve de base para o acompanhamento dos modelos

propostos na introdução (Giolo 2006). Experimentos e estudos em geral podem ser

modelados pela regressão logística quando a variável resposta de interesse é de natureza

dicotômica. Fazendo uma analogia com modelos de regressão linear podemos perceber

que [ ] +∞<<∞− xYE | e que Y é contínua e neste caso estimamos a média da variável

resposta dados as covariáveis. Na regressão Logística, [ ] 1|0 << xYE e estimamos a

probabilidade de se obter uma resposta positiva. Tem-se então o modelo:

++

+===

=

=

p

kkk

p

kkk

X

X

xYPx

10

10

exp1

exp

)|1()(

ββ

ββθ

Onde 1=Y significa presença da resposta e x as variáveis independentes considerando

o logito como função de ligação. Em seguida pode-se estudar a relação entre presença e

ausência de resposta através de OR (odds ratio) onde uma odds é da forma:

( )( )x

x

θθ−1

Tomando-se o logaritmo neperiano da odds acima se encontra uma equação linear:

Logito = ( )

( ) ∑=

+=

p

kkk X

x

x

101

ln ββθ

θ

Esse é o modelo linear para o Logito da relação acima. O Logito, pensando em modelos

lineares generalizados, é uma função de ligação canônica. A função de ligação

estabelece a relação entre a média e o preditor linear.

A estimação dos parâmetros é feita através da função de verossimilhança. Dada uma

amostra aleatória ),,( ii xy ni ,...,1= a função de verossimilhança é definida por:

7

( ) ( )[ ] ( )[ ] ii yi

n

i

yi xxL −

=

−= ∏ 1

1

1 θθβ

A solução para as equações dos valores dos coeficientes é através de métodos

numéricos como por exemplo Newton-Raphson

2.2 Razão contínua

Este modelo permite comparar a probabilidade de uma resposta igual a categoria com

determinado escore, digamosjy , JY = , com a probabilidade de uma resposta

maior,Y>J. Este modelo possui diferentes interceptos e coeficientes para cada

comparação e poder ser ajustado por k modelos de regressão logística binária. É mais

apropriado quando existe interesse em uma categoria específica da variável resposta.

( ) ( )( ) ( )

( )( )

=

==

=+++===

∑+

k

j

j

xjY

xjY

xkYxjY

xjYx

1

|Pr

|Prln

|Pr...|1Pr

|Prlnλ

( ) ( ) kjxxxx pjpjjjj ,...1,...2211 =++++= βββαλ

kαααα ≤≤≤≤ ...321

Com k categorias na resposta

2.3 Estereótipo

O Modelo Estereótipo pode ser considerado uma extensão do modelo multinomial.

Compara cada categoria da variável resposta com uma categoria de referência,

normalmente a primeira ou a última. Devido ao caráter ordinal dos dados são atribuídos

pesos aos coeficientes. Os pesos são diretamente relacionados com os efeitos das

covariáveis. Este modelo é adequado para situações que temos resposta ordinal discreta,

8

por exemplo, situação de um paciente após tomar uma medição, ele pode ter melhora,

não ter reação ou piora e neste caso seriam três níveis de resposta.

( ) ( )( )

===

xY

xjYxj |0Pr

|Prlnλ

( ) ( ) kjxxx ppjjj ,...,1,...11 =+++= ββωαλ

kαααα ≤≤≤≤ ...321

kϖϖϖϖ ≤≤≤≤ ...321

Com k cateogrias na resposta.

2.4 Odds Proporcionais

Como dito na introdução, um dos fatores que se deve levar em conta na escolha do

modelo é como foi construída a variável resposta. O modelo de Odds Proporcionais é

apropriado para analisar variáveis ordinais provenientes de uma variável contínua que

foi agrupada. Por exemplo, imagine que em um estudo a variável resposta seja renda por

família, inicialmente ela é contínua, porém, podemos agrupá-las em faixas (0-1000;

1001-2000,...) a fim de facilitar alguma análise. O pressuposto de proporcionalidade

consiste em considerar que os coeficientes das covariáveis são os mesmos em todas as

categorias da resposta, ou seja, as relação entre x e y é indepente dos níveis de resposta.

Quando nos encontramos nessa situação, o interesse está em calcular a probabilidade

acumulada até o j-ésimo nível de da variável resposta levando em consideração o

seguinte modelo.

[ ] ( )

+++

=≤ηα

ηαi

iXjYPexp1

exp|

Onde,

+= ∑

=

p

kkk X

10 ββη

9

Nesse modelo são considerados 1−k pontos de corte das categorias sendo que o

ésimoj − ( )1,...,1 −= kj ponto de corte é baseado na comparação de probabilidades

acumuladas como mostrado a seguir.

( ) ( ) ( )( ) ( )

( )

( )

=

==

=+++==++==

+

k

j

j

j

xjY

xjY

xkYxjY

xjYxYx

1

1

|Pr

|Prln

|Pr...|1Pr

|Pr...|1Prlnλ

( ) ( ) 1,...,1,...2211 −=++++= kjxxxx ppjj βββαλ

kαααα ≤≤≤≤ ...321

2.5 Odds Proporcionais Parciais

Como a suposição de odds proporcionais é difícil de ser encontrada na prática, pode ser

utilizado o modelo de Odds Proporcionais Parciais que permite que algumas covariáveis

possam ser modeladas sem que essa suposição seja satisfeita, colocando assim um

coeficiente γ que é o efeito associado a cada ésimoj − logito cumulativo ajustado

pelas demais covariáveis.

( ) ( ) ( )( ) ( )

( )

( )

=

==

=+++==++==

+

k

j

j

j

xjY

xjY

xkYxjY

xjYxYx

1

1

|Pr

|Prln

|Pr...|1Pr

|Pr...|1Prlnλ

( ) ( ) ( ) ( ) ( )[ ] 1,...,1,...... 11111 −=++++++++= ++ kjxxxxx ppqqqjqqjjj ββγβγβαλ

kαααα ≤≤≤≤ ...321

10

2.6 Banco de Dados

Neste capítulo, estuda-se o banco de dados utilizado no desenvolvimento do presente

trabalho, dissertando sobre sua estrutura, objetivos e descrevendo alguns dos principais

indicadores existentes.

O banco de dados aqui utilizado foi desenvolvido por Thorsten Beck, Asli Demirgüç-

Kunt e Ross Levine, tendo sido publicado inicialmente no ano de 1999, sofrendo

atualizações com o passar dos anos. Esses pesquisadores encontravam dificuldades em

encontrar informações referentes à estrutura de mercado dos variados países, bem como

a inexistência de diversos indicadores. O objetivo ao desenvolver tal banco de dados era

permitir aos analistas econômicos uma ampla visão sobre tamanho, atividade e

eficiência dos variados mercados financeiros, numa visão macroeconômica, permitindo

uma avaliação global do desenvolvimento, estrutura e desempenho do setor financeiro.

Para tanto, buscaram informações no IFS (International Financial Statistics) do FMI

(Fundo Monetário Internacional) e a partir disso construíram 22 indicadores financeiros,

de 211 países. Na versão utilizada neste estudo, encontravam-se dados dos anos de 1960

até 2005. Além dos indicadores, foram associadas aos países suas respectivas

classificações quanto ao grupo de renda, de acordo com os critérios do Banco Mundial.

A seguir, será apresentado de uma maneira mais detalhada a estrutura do banco de

dados, dividindo os indicadores em grupos e detalhando a classificação quanto ao grupo

de renda.

2.6.1 Indicadores da dimensão e atividade financeiras

Este grupo de indicadores tem como objetivo definir como se dá a distribuição do total

de ativos de um determinado país entre suas instituições financeiras. Esses ativos são

então divididos em três grupos:

• Ativos do Banco Central: correspondem a ativos pertencentes ao Banco central e

instituições que exerçam funções de autoridade financeiras;

• Ativos depositados em bancos: O total depositado em bancos é definido como o

total de ativos de instituições financeiras na forma de depósitos transferíveis por

cheque ou outro meio de pagamento;

11

• Ativos de outras instituições financeiras: são referentes aos ativos de todas as

instituições não compreendidas nos dois primeiros grupos. Como exemplo,

seguradoras integram esse grupo de instituições.

A partir desta definição, são construídos indicadores, conforme exemplos:

- Central Bank Assets: razão entre os ativos do Banco Central pelo total de ativos do

país

- Deposit Money Bank Assets: razão entre ativos depositados em bancos pelo total de

ativos do país.

Outra forma de analisar os ativos é construir indicadores utilizando o PIB (Produto

Interno Bruto) como denominador.

- Central Bank Assets to GDP: razão entre os ativos do Banco Central pelo PIB

- Deposit Money Bank Assets to GDP: razão entre ativos depositados em bancos pelo

PIB

2.6.2 Indicadores de eficiência e estrutura de mercado dos bancos comerciais

Neste grupo de indicadores encontram-se informações a respeito da estrutura bancária

das nações. Seguem alguns exemplos:

- NIM (Net Interest Margin): medida da diferença entre os juros gerados por bancos ou

outras instituições financeiras menos o montante pago aos seus credores.

- Concentration: refere-se à razão da soma dos ativos depositados nos três maiores

bancos do país pelo total de ativos depositado, medindo assim a concentração bancária.

12

2.6.3 Indicadores de outras Instituições Financeiras

Nesta seção, deseja-se ter uma visão mais ampla sobre o grupo de indicadores referentes

a “outras instituições”, conforme descrito no primeiro grupo de indicadores.

Primeiramente defini-se essas instituições em sub-grupos, conforme descritos a seguir:

• ‘Banklike’: integram esse grupo Bancos Cooperativos, Bancos Hipotecários, etc.

Essas são especializadas em atividades específicas, seja por seu histórico ou por

razões fiscais;

• Seguradoras: empresas de seguros, divididas entre companhias de seguro de

vida e demais companhias de seguro. Não inclui os seguros de fundos de

instituições governamentais;

• Fundos de Pensão e Previdência Privada: assim como empresas de seguro de

vida, servem para agregação de risco e acumulo de riqueza. Não incluem fundos

de pensão que fazem parte do sistema de segurança social do governo.

• Investimento Conjunto: instituições que investem em nome de seus acionistas

em um determinado tipo de ativos

• Bancos de Desenvolvimento: instituições financeiras cujos fundos provêm

principalmente do governo ou organizações supranacionais. Tem como principal

objetivo fomentar o desenvolvimento econômico.

Para todos os cinco grupos descritos acima foram construídas medidas relativas ao seu

tamanho em relação ao PIB.

2.6.4 Indicadores de tamanho, atividade e eficiência da Bolsa de Valores

Por fim, observam-se indicadores relativos ao mercado de ações. Como exemplo

podemos citar:

- Stock Market capitalization to GDP: razão entre o valor da cotação das ações pelo PIB

- Stock Market turnover ratio: razão entre o total de ações negociadas na bolsa e no

mercado de capitalização

13

2.6.5 Classificação em Grupos de Renda

Outra variável importante é o Grupo de Renda. Para fins analíticos e operacionais, o

Banco Mundial utiliza como critério de classificação das economias o Rendimento

Nacional Bruto (RNB) per capita. O PIB corresponde ao valor da riqueza criada

anualmente no país, e o RNB corresponde ao valor que permanece no país ao fim do

mesmo período, adicionando-se ao PIB os rendimentos recebidos dos demais países e

subtraindo os rendimentos pagos ao exterior. Sendo assim, as economias são

classificadas em seus respectivos grupos de renda conforme tabela abaixo:

Tabela 1: Classificação dos Grupos de Renda pelas faixas de RNB per capita

3. Resultados

Tendo conhecimento do banco de dados, o objetivo foi utilizar os indicadores

financeiros disponíveis na criação de um modelo que pudesse classificar os países em

seus grupos de renda de acordo com o definido pelo Banco Mundial.

Para tal fim, trabalhou-se no ajuste de um modelo de Regressão Ordinal de Odds

Proporcionais, tendo os indicadores como covariáveis e o grupo de renda como a

variável resposta. A utilização de um modelo de Regressão Ordinal de Odds

Proporcionais se justifica pela natureza de sua variável resposta, sendo esta categórica

de quatro níveis e construída a partir de uma variável contínua (RNB per capita).

Primeiramente, foi realizada uma análise das informações contidas nos indicadores, e

percebeu-se rapidamente que alguns destes não se encontravam disponíveis,

especialmente em países pequenos ou de menor economia. Sendo assim, decidiu-se por

excluir da análise aqueles países que encontravam poucas informações e também

indicadores não observados em muitas situações. Desta forma iniciaram-se as

verificações dos resultados com 88 países e 10 indicadores como covariáveis. Foi

Grupo de Renda RNB per capita Low Income < $ 935 Lower Middle Income $ 936 - $ 3705 Upper Middle Income $ 3706 - $ 11455 High Income > $ 11455

14

escolhido o ano de 2005 para análise, por conter as informações mais recentes. Neste

momento foi decidido um nível de significância de 10%, e todas as análises foram

realizadas utilizando o software R.

Com o banco de dados ajustado, fez-se uma breve análise descritiva dos dados, onde se

pode observar algumas tendências, mas nada conclusivo, conforme observado nos

gráficos Box-plot abaixo:

Gráfico 1: Box-plot do indicador DMBAD por Grupo de Renda

Gráfico 2: Box-plot do indicador LL por Grupo de Renda

15

Gráfico 3: Box-plot do indicador CBA por Grupo de Renda

Gráfico 4: Box-plot do indicador DMBA por Grupo de Renda

Gráfico 5: Box-plot do indicador PCDMB por Grupo de Renda

16

Gráfico 6: Box-plot do indicador PCDMBOFI por Grupo de Renda

Gráfico 7: Box-plot do indicador BD por Grupo de Renda

Gráfico 8: Box-plot do indicador FSD por Grupo de Renda

17

Gráfico 9: Box-plot do indicador BOC por Grupo de Renda

Gráfico 10: Box-plot do indicador NIM por Grupo de Renda

Na sequência realizou-se uma análise de correlação entre as covariáveis. Como pode ser

visto no gráfico 11, algumas covariáveis eram altamente correlacionadas. Uma das

explicações para isso seria justamente o modo como os indicadores foram construídos,

sendo estes muitas vezes complementares aos outros.

18

Gráfico 11: Correlograma das covariáveis em estudo

Sendo assim, iniciou-se a construção de modelos com o cuidado de não utilizar

covariáveis que fossem correlacionadas. Utilizou-se para tanto a função polr do pacote

MASS do software R. Esta função é utilizada para ajustar modelos de regressão ordinal

de odds proporcionais entre outras, com uma determinada função de ligação. Aqui

utilizou-se as funções logito, probito ou complemento loglog.

Foram ajustados diversos modelos, com diferentes funções de ligação para cada

conjunto de covariáveis. Definiu-se como melhor modelo aquele que apresentasse um

menor valor no Critério de Akaike (AIC). E com um valor de AIC de 176,34, o melhor

modelo foi construído foi:

IncomeGroup~CBA+DMBA+NIM

Com funçã de ligação probito.

19

Onde:

IncomeGroup – Grupo de Renda, nossa variável resposta;

CBA – Central Bank Assets

DMBA – Deposit Money Bank Assets

NIM – Net Interest Margin

A partir disso, verificou-se na tabela 2 os coeficientes do modelo e a significância das

três covariáveis em conjunto. Na tabela 3 vemos a significância dos denominados

“saltos” entre os níveis da variável resposta, ou seja, se faz sentido existir o número de

níveis estabelecido.

COVARIÁVEL COEFICIENTE P-VALOR

CBA -3,19 0,02

DMBA 3,28 < 0,01

NIM -7,12 0,17

Tabela 2: Teste t para significância das covariáveis do modelo

GRUPOS ALFA P-VALOR

Low – Lower mid. -0,143 0,97

Lower mid.- Upper mid. 1,034 0,03

Upper mid. - High 2,449 < 0,01

Tabela 3: Teste t para significância das classificações da variável resposta

Conforme observado, o teste t mostrou não ser significativa a contribuição da covariável

NIM no modelo. O mesmo teste também demonstrou não ser significativo o valor de

α para os níveis ‘low’ e ‘lower middle’. Em outras palavras, segundo o modelo

sugerido não haveria evidências da necessidade de classificar os países pertencentes a

esses dois grupos de maneira diferenciada. Mas como se observou uma covariável não

significativa no modelo, foi realizado outro modelo apenas com os indicadores CBA e

DMBA. Desta forma, foram observados os valores para o teste t nas tabelas seguintes:

20

COVARIÁVEL COEFICIENTE P-VALOR

CBA -3,23 0,02

DMBA 3,66 < 0,01

Tabela 4: Teste t para significância das covariáveis do modelo

GRUPOS ALFA P-VALOR

Low – Lower mid. 0,44 0,095

Lower mid.- Upper mid. 1,591 < 0,01

Upper mid. - High 2,985 < 0,01

Tabela 5: Teste t para significância das classificações da variável resposta

Observou-se então que as duas covariáveis obtiveram p-valores significativos. Os p-

valores para os níveis da variável resposta também foram significativos neste modelo, e

o valor encontrado na Informação de Akaike ficou semelhante ao primeiro modelo

selecionado (176,32).

Nos gráficos A e B será visto as probabilidades de um país ser classificado em

determinado grupo de acordo com os valores das covariáveis. No primeiro, fixou-se o

valor da covariável DMBA na média, e observaram-se as probabilidades de um país ser

classificado em determinado grupo de renda conforme aumentasse o valor de CBA. Vê-

se então que quanto maior o valor de CBA, dado DMBA fixo, cai a probabilidade de

um país pertencer ao grupo ‘low’ enquanto aumentam as probabilidades de pertencer a

um grupo de renda maior. No segundo, fixamos desta vez o valor de CBA na média, e

observamos que quanto maior o valor de DMBA, a probabilidade de um país ser

classificado como ‘low’ chega próxima a 1.

21

Gráfico 12: Probabilidade de pertencer a um determinado grupo de renda conforme variação de CBA, tendo DMBA

fixo na média

Gráfico 13: Probabilidade de pertencer a um determinado grupo de renda conforme variação de DMBA, tendo CBA

fixo na média

22

Para analisar a precisão do modelo, construiu-se uma tabela de concordância, onde

podemos observar um bom nível de acerto entre a classificação predita pelo

modelo(coluna) e o observado na classificação do Banco Mundial (linha) em quase

todos os níveis, porém no nível ‘upper middle’ obteve-se 36,4% de acerto, o que pode

indicar problemas na classificação nesse determinado grupo.

Low Low Mid. Upper Mid High

Low 78,3% 15,4% 9,1% 0,0%

Low Mid. 13,0% 65,4% 45,5% 5,9%

Upper Mid. 8,7% 15,4% 36,4% 17,6%

High 0,0% 3,8% 9,1% 76,5%

Tabela 6: Tabela de concordância entre valores preditos (colunas) e observados (linhas)

3.1 Análise de Resíduos

Depois do modelo construído uma validação é necessária e isso se faz através da análise

dos resíduos.

A análise dos resíduos para dados categóricos ordinais ainda é escassa e abre portas para

novos estudos. Embora ainda não se tenha um método claro e completo para analisar os

resíduos foi utilizado a proposta de McCullagh, P. (1980), que considera como resíduo a

a contribuição para a verossimilhança da i-ésima observação do banco de dados. A

verossilhança do modelo nulo é subtraída da verossimilhança do modelo com as

covariáveis sem a i-ésima observação, a diferença é considerada como resíduo. Esse

resíduo será sempre positivo.

Abaixo segue o gráfico de resíduos onde pode-se observar homocedasticidade

inidicando assim que o modelo ajustado tem grandes possibilidades de bom ajuste e

pressupostos satisfeitos.

23

Gráfico 14: Gráfico de Resíduos propostos por McCullagh, P. (1980)

4. Conclusão

Considerando todos os procedimentos percebe-se a importância de se trabalhar com

modelos que consideram em suas análises o fator de ordenação em variáveis categóricas

ordinais, tratá-las sem levar em conta este fato certamente levará à perda de informações

prestigiosas acerca do seu objeto de estudo

O modelo ajustado tem uma boa assertividade como mostrado na tabela 6, porém não

deixa de ser apenas uma maneira descritiva de análise. Numa primeira etapa o modelo

de odds proporcionais parece se encaixar bem para descrever a relação entre a variável

resposta e as covariáveis embora ainda alguns testes sejam necessários.

Nas próximas etapas serão feitos testes para o pressuposto de proporcionalidade além de

análise de resíduos mais profunda, ambos com poucas referências em artigos e literatura

em geral, por fim, um estudo mais aprofundado sobre o motivo da baixa proporção de

acerto na classe upper middle deve ser realizado.

24

5. Referências Bibliográficas

Anderson, J.A. (1984). Regression and ordered categorical variable. Journal of the

Royal Statistical Society, Series B, vol. 46, Nº 01, PP. 1-30.

McCullagh, P. (1980). Rgression models for ordinal data. Journal of the Royal

Statistical Society, Series B, vol. 42, Nº 02, PP. 109-142.

David G. Kleinbaum, Mitchel Klein (2002) Statistics for Biology

Revista de saúde pública 2008. Mery Natali Silva Abreu, Arminda Lucia Siqueira,

Waleska Teixeira Caiaffa.

GIOLO, Suely Ruiz. Introdução a Análise de Dados Categóricos, 2006

The World Bank, disponível em: < http://www.worldbank.org/>.

6. Apêndice

Comandos Utilizados:

#

# Leitura dos dados

#

dados=read.table('dados.dat',h=T)

#

require(relimp)

names(dados)

#

# Eliminando variaveis com poucas observacoes

#

dados1=dados[,1:12]

#

# Eliminando observacoes faltantes

#

dados2=na.omit(dados1)

#

25

showData(dados2)

attach(dados2)

names(dados2)

#

# Variaveis de interesse: Resposta=IncomeGroup

# Explicativas: DMBAD, LL, CBA, DMBA, PCDMB, PCDMBOFI, BD, FSD, BOC, NIM

#

# Definindo a ordem dos niveis de IncomeGroup

#

IncomeGroup=factor(IncomeGroup,levels=c('Low','Lower middle','Upper middle','High'),labels=c("Low","Lower \n middle","Upper \n middle","High"))

levels(IncomeGroup)

#

# Estudo descritivo

#

X11()

par(mfrow=c(2,2),mar=c(5,4,1,1),pch=16)

plot(DMBAD~IncomeGroup,col=c('salmon','purple1','plum1','sienna'))

plot(LL~IncomeGroup,col=c('salmon','purple1','plum1','sienna'))

#

plot(CBA~IncomeGroup,col=c('salmon','purple1','plum1','sienna'))

plot(DMBA~IncomeGroup,col=c('salmon','purple1','plum1','sienna'))

#

# Observamos que quanto maiores os valores de DMBAD e LL maior a categoria de IncomeGroup

# e que quando maior o valor de CBA menor o IncomeGroup e quanto maior o DMBA maior o IncomeGroup

#

X11()

par(mfrow=c(2,2),mar=c(5,4,1,1),pch=16)

plot(PCDMB~IncomeGroup,col=c('salmon','purple1','plum1','sienna'))

plot(PCDMBOFI~IncomeGroup,col=c('salmon','purple1','plum1','sienna'))

#

plot(BD~IncomeGroup,col=c('salmon','purple1','plum1','sienna'))

plot(FSD~IncomeGroup,col=c('salmon','purple1','plum1','sienna'))

26

#

# Observamos que quanto maiores os valores de PCDMB, PCDMBOFI, BS e FSD maior a categoria de IncomeGroup

#

X11()

par(mfrow=c(2,2),mar=c(5,4,1,1),pch=16)

plot(BOC~IncomeGroup,col=c('salmon','purple1','plum1','sienna'))

plot(NIM~IncomeGroup,col=c('salmon','purple1','plum1','sienna'))

#

# Observamos que quanto maiores os valores de BD e FSD menor a categoria de IncomeGroup

#

plot(IncomeGroup,col=c('salmon','purple1','plum1','sienna'))

box()

#

# A quantidade de observacoes por categoria e aprox. igual

#

# Funcoes auxiliares

#

panel.hist = function(x, ...){

usr = par("usr"); on.exit(par(usr))

par(usr = c(usr[1:2], 0, 1.5) )

h = hist(x, plot = FALSE)

breaks = h$breaks; nB = length(breaks)

y = h$counts; y = y/max(y)

rect(breaks[-nB], 0, breaks[-1], y, col="cyan", ...)}

#

panel.cor = function(x, y, digits=2, prefix="", cex.cor, ...){

usr = par("usr"); on.exit(par(usr))

par(usr = c(0, 1, 0, 1))

r = abs(cor(x, y))

txt = format(c(r, 0.123456789), digits=digits)[1]

txt = paste(prefix, txt, sep="")

if(missing(cex.cor)) cex.cor = 0.8/strwidth(txt)

text(0.5, 0.5, txt, cex = cex.cor * r)}

#

27

# Correlacoes entre as variaveis

#

X11()

pairs(cbind(DMBAD,LL,CBA,DMBA,PCDMB,PCDMBOFI,BD,FSD,BOC,NIM), pch=24, bg='light blue', lower.panel=panel.smooth, upper.panel=panel.cor, diag.panel=panel.hist)

#

# Observamos que a correlacao entre algumas das variaveis explicativas e quase perfeita ou perfeita,

# isso inviabiliza o modelo. Por esse motivo devemos escolher quais delas devem permanecer

#

# DMBAD: e altamente correlacionada com quase todas as outras variaveis, logo podemos prescindir dela

#

X11()

pairs(cbind(CBA,FSD,NIM), pch=24, bg='light blue', lower.panel=panel.smooth, upper.panel=panel.cor, diag.panel=panel.hist)

#

# MODELOS

#

require(MASS)

#

# Explicativas: CBA, FSD, NIM

#

ajuste01 = polr(IncomeGroup ~ CBA+FSD+NIM, method='logistic')

#

ajuste02 = update(ajuste01, method = "probit")

#

ajuste03 = update(ajuste01, method = "cloglog")

#

AIC(ajuste01,ajuste02,ajuste03)

#

summary(ajuste02)

#

# Explicativas: CBA, FSD, BOC

#

28

ajuste04 = polr(IncomeGroup ~ CBA+FSD+BOC, method='logistic')

#

ajuste05 = update(ajuste04, method = "probit")

#

ajuste06 = update(ajuste04, method = "cloglog")

#

AIC(ajuste04,ajuste05,ajuste06)

#

# Explicativas: LL, CBA, BOC

#

ajuste07 = polr(IncomeGroup ~ LL+CBA+BOC, method='logistic')

#

ajuste08 = update(ajuste07, method = "probit")

#

ajuste09 = update(ajuste07, method = "cloglog")

#

AIC(ajuste07,ajuste08,ajuste09)

#

# Explicativas: LL, CBA, NIM

#

ajuste10 = polr(IncomeGroup ~ LL+CBA+NIM, method='logistic')

#

ajuste11 = update(ajuste10, method = "probit")

#

ajuste12 = update(ajuste10, method = "cloglog")

#

AIC(ajuste10,ajuste11,ajuste12)

#

# Explicativas: DMBAD, LL, BOC

#

ajuste13 = polr(IncomeGroup ~ DMBAD+LL+BOC, method='logistic')

#

ajuste14 = update(ajuste13, method = "probit")

#

ajuste15 = update(ajuste13, method = "cloglog")

29

#

AIC(ajuste13,ajuste14,ajuste15)

#

# Explicativas: DMBAD, LL, NIM

#

ajuste16 = polr(IncomeGroup ~ DMBAD+LL+NIM, method='logistic')

#

ajuste17 = update(ajuste16, method = "probit")

#

ajuste18 = update(ajuste16, method = "cloglog")

#

AIC(ajuste16,ajuste17,ajuste18)

#

# Explicativas: CBA, DMBA, BOC

#

ajuste19 = polr(IncomeGroup ~ CBA+DMBA+BOC, method='logistic')

#

ajuste20 = update(ajuste19, method = "probit")

#

ajuste21 = update(ajuste19, method = "cloglog")

#

AIC(ajuste19,ajuste20,ajuste21)

#

# Explicativas: CBA, DMBA, NIM

#

ajuste22 = polr(IncomeGroup ~ CBA+DMBA+NIM, method='logistic')

#

ajuste23 = update(ajuste22, method = "probit")

#

ajuste24 = update(ajuste22, method = "cloglog")

#

AIC(ajuste22,ajuste23,ajuste24)

#

# Explicativas: CBA, PCDMA, BOC

#

30

ajuste25 = polr(IncomeGroup ~ CBA+PCDMB+BOC, method='logistic')

#

ajuste26 = update(ajuste25, method = "probit")

#

ajuste27 = update(ajuste25, method = "cloglog")

#

AIC(ajuste25,ajuste26,ajuste27)

#

# Explicativas: CBA, PCDMA, NIM

#

ajuste28 = polr(IncomeGroup ~ CBA+PCDMB+NIM, method='logistic')

#

ajuste29 = update(ajuste28, method = "probit")

#

ajuste30 = update(ajuste28, method = "cloglog")

#

AIC(ajuste28,ajuste29,ajuste30)

#

# Explicativas: CBA, PCDMBOFI, BOC

#

ajuste31 = polr(IncomeGroup ~ CBA+PCDMBOFI+BOC, method='logistic')

#

ajuste32 = update(ajuste31, method = "probit")

#

ajuste33 = update(ajuste31, method = "cloglog")

#

AIC(ajuste31,ajuste32,ajuste33)

#

# Explicativas: CBA, PCDMBOFI, NIM

#

ajuste34 = polr(IncomeGroup ~ CBA+PCDMBOFI+NIM, method='logistic')

#

ajuste35 = update(ajuste34, method = "probit")

#

ajuste36 = update(ajuste34, method = "cloglog")

31

#

AIC(ajuste34,ajuste35,ajuste36)

#

# Explicativas: CBA, BD, BOC

#

ajuste37 = polr(IncomeGroup ~ CBA+BD+BOC, method='logistic')

#

ajuste38 = update(ajuste37, method = "probit")

#

ajuste39 = update(ajuste37, method = "cloglog")

#

AIC(ajuste37,ajuste38,ajuste39)

#

# Explicativas: CBA, BD, NIM

#

ajuste40 = polr(IncomeGroup ~ CBA+BD+NIM, method='logistic')

#

ajuste41 = update(ajuste40, method = "probit")

#

ajuste42 = update(ajuste40, method = "cloglog")

#

AIC(ajuste40,ajuste41,ajuste42)

#

# CONCLUSAO: ajuste mais adequado ajuste23

#

# Intervalos confidenciais dos estimadores dos parametros

#

ajuste23.hess = update(ajuste23, Hess=TRUE)

#

ajuste23.profile = profile(ajuste23.hess)

#

confint(ajuste23.profile)

#

# Verificando a significancia das covariaveis

#

32

2*pt(abs(coef(ajuste23)[1]/sqrt(solve(ajuste23.hess$Hessian)[1,1])),ajuste23$df.residual,lower.tail=F)

2*pt(abs(coef(ajuste23)[2]/sqrt(solve(ajuste23.hess$Hessian)[2,2])),ajuste23$df.residual,lower.tail=F)

2*pt(abs(coef(ajuste23)[3]/sqrt(solve(ajuste23.hess$Hessian)[3,3])),ajuste23$df.residual,lower.tail=F)

#

# Observamos que a variavel NIM nao e significativa, logo nao contribui para o modelo

#

step(ajuste23)

#

ajuste23a = polr(IncomeGroup ~ CBA+DMBA, method = "probit")

#

summary(ajuste23a)

#

ajuste23a.hess = update(ajuste23a, Hess = TRUE)

#

# Verificando a significancia das covariaveis

#

2*pt(abs(coef(ajuste23a)[1]/sqrt(solve(ajuste23a.hess$Hessian)[1,1])),ajuste23a$df.residual,lower.tail=F)

2*pt(abs(coef(ajuste23a)[2]/sqrt(solve(ajuste23a.hess$Hessian)[2,2])),ajuste23a$df.residual,lower.tail=F)

#

# Verificando a significancia dos niveis da resposta

#

2*pt(abs(ajuste23a$zeta[1]/sqrt(solve(ajuste23a.hess$Hessian)[3,3])),ajuste23a$df.residual,lower.tail=F)

2*pt(abs(ajuste23a$zeta[2]/sqrt(solve(ajuste23a.hess$Hessian)[4,4])),ajuste23a$df.residual,lower.tail=F)

2*pt(abs(ajuste23a$zeta[3]/sqrt(solve(ajuste23a.hess$Hessian)[5,5])),ajuste23a$df.residual,lower.tail=F)

#

# Significa que todos os niveis esta bem preditos

#

# Preditos. Variaveis fixadas nos seus valores medios

#

CBA.m = mean(CBA)

33

DMBA.m = mean(DMBA)

#

CBA.x = seq(min(CBA),max(CBA),by=0.01)

eta = coef(ajuste23a)[1]*CBA.x+coef(ajuste23a)[2]*DMBA.m

Low.pred = pnorm(ajuste23a$zeta[1]+eta)

LowM.pred = pnorm(ajuste23a$zeta[2]+eta)

UppM.pred = pnorm(ajuste23a$zeta[3]+eta)

High.pred = 1-UppM.pred

#

X11()

par(mfrow=c(2,1),mar=c(5,4,1,1))

#

matplot(CBA.x,cbind(Low.pred,LowM.pred-Low.pred,UppM.pred-LowM.pred,High.pred), type='l',

ylab='Probabilidades estimadas',xlab='CBA',col=c('green','sienna','purple','navy'),lty=1:4)

legend(0.0,0.8,legend=c('Low','Low middle','Upper middle','High'),ncol=2,lty=1:4,col=c('green','sienna','purple','navy'))

#

DMBA.x = seq(min(DMBA),max(DMBA),by=0.01)

eta = coef(ajuste23a)[1]*CBA.m+coef(ajuste23a)[2]*DMBA.x

Low.pred = pnorm(ajuste23a$zeta[1]+eta)

LowM.pred = pnorm(ajuste23a$zeta[2]+eta)

UppM.pred = pnorm(ajuste23a$zeta[3]+eta)

High.pred = 1-UppM.pred

#

matplot(DMBA.x,cbind(Low.pred,LowM.pred-Low.pred,UppM.pred-LowM.pred,High.pred), type='l',

ylab='Probabilidades estimadas',xlab='DMBA',col=c('green','sienna','purple','navy'),lty=1:4)

#

# Preditos. Variaveis fixadas no primeiro e terceiro quantis

#

CBA.q = quantile(CBA,c(0.25,0.75))

DMBA.q = quantile(DMBA,c(0.25,0.75))

#

CBA.x = seq(min(CBA),max(CBA),by=0.01)

34

eta = coef(ajuste23a)[1]*CBA.x+coef(ajuste23a)[2]*DMBA.q[1]

Low.pred = pnorm(ajuste23a$zeta[1]+eta)

LowM.pred = pnorm(ajuste23a$zeta[2]+eta)

UppM.pred = pnorm(ajuste23a$zeta[3]+eta)

High.pred = 1-UppM.pred

#

X11()

par(mfrow=c(2,2),mar=c(5,4,1,1))

#

matplot(CBA.x,cbind(Low.pred,LowM.pred-Low.pred,UppM.pred-LowM.pred,High.pred), type='l',

ylab='Probabilidades estimadas',xlab='CBA, DMBA fixa no seu primeiro quantil',col=c('green','sienna','purple','navy'),lty=1:4)

#

CBA.x = seq(min(CBA),max(CBA),by=0.01)

eta = coef(ajuste23a)[1]*CBA.x+coef(ajuste23a)[2]*DMBA.q[2]

Low.pred = pnorm(ajuste23a$zeta[1]+eta)

LowM.pred = pnorm(ajuste23a$zeta[2]+eta)

UppM.pred = pnorm(ajuste23a$zeta[3]+eta)

High.pred = 1-UppM.pred

#

matplot(CBA.x,cbind(Low.pred,LowM.pred-Low.pred,UppM.pred-LowM.pred,High.pred), type='l',

ylab='Probabilidades estimadas',xlab='CBA, DMBA fixa no seu terceiro quantil',col=c('green','sienna','purple','navy'),lty=1:4)

legend(0.0,0.8,legend=c('Low','Low middle','Upper middle','High'),ncol=1,lty=1:4,col=c('green','sienna','purple','navy'))

#

DMBA.x = seq(min(DMBA),max(DMBA),by=0.01)

eta = coef(ajuste23a)[1]*CBA.q[1]+coef(ajuste23a)[2]*DMBA.x

Low.pred = pnorm(ajuste23a$zeta[1]+eta)

LowM.pred = pnorm(ajuste23a$zeta[2]+eta)

UppM.pred = pnorm(ajuste23a$zeta[3]+eta)

High.pred = 1-UppM.pred

#

matplot(DMBA.x,cbind(Low.pred,LowM.pred-Low.pred,UppM.pred-LowM.pred,High.pred), type='l',

35

ylab='Probabilidades estimadas',xlab='DMBA, CBA fixa no seu primeiro quantil',col=c('green','sienna','purple','navy'),lty=1:4)

#

DMBA.x = seq(min(DMBA),max(DMBA),by=0.01)

eta = coef(ajuste23a)[1]*CBA.q[2]+coef(ajuste23a)[2]*DMBA.x

Low.pred = pnorm(ajuste23a$zeta[1]+eta)

LowM.pred = pnorm(ajuste23a$zeta[2]+eta)

UppM.pred = pnorm(ajuste23a$zeta[3]+eta)

High.pred = 1-UppM.pred

#

matplot(DMBA.x,cbind(Low.pred,LowM.pred-Low.pred,UppM.pred-LowM.pred,High.pred), type='l',

ylab='Probabilidades estimadas',xlab='DMBA, CBA fixa no seu terceiro quantil',col=c('green','sienna','purple','navy'),lty=1:4)

#

# Podemos perceber que as probabilidades estimadas nao diferem muito quando mostradas em relacao a DMBA,

# mas sao de comportamento muito diferentes quando comparadas em relacao a CBA. Ou seja, o valor de DMBA

# influencia bastante no comportamento dos resultados, nao sendo assim com os valores de CBA.

#

DMBA.q = rep(0,4)

DMBA.q[c(1,2,4)] = quantile(DMBA,c(0.25,0.50,0.75))

DMBA.q[3] = mean(DMBA)

DMBA.q

#

CBA.x = seq(min(CBA),max(CBA),by=0.01)

eta = coef(ajuste23a)[1]*CBA.x+coef(ajuste23a)[2]*DMBA.q[1]

Low.pred = pnorm(ajuste23a$zeta[1]+eta)

LowM.pred = pnorm(ajuste23a$zeta[2]+eta)

UppM.pred = pnorm(ajuste23a$zeta[3]+eta)

High.pred = 1-UppM.pred

#

X11()

par(mfrow=c(2,2),mar=c(5,4,1,1))

#

36

matplot(CBA.x,cbind(Low.pred,LowM.pred-Low.pred,UppM.pred-LowM.pred,High.pred), type='l',

ylab='Probabilidades estimadas',xlab=paste('CBA, DMBA = ', DMBA.q[1]),col=c('green','sienna','purple','navy'),lty=1:4)

#

eta = coef(ajuste23a)[1]*CBA.x+coef(ajuste23a)[2]*DMBA.q[2]

Low.pred = pnorm(ajuste23a$zeta[1]+eta)

LowM.pred = pnorm(ajuste23a$zeta[2]+eta)

UppM.pred = pnorm(ajuste23a$zeta[3]+eta)

High.pred = 1-UppM.pred

#

matplot(CBA.x,cbind(Low.pred,LowM.pred-Low.pred,UppM.pred-LowM.pred,High.pred), type='l',

ylab='Probabilidades estimadas',xlab=paste('CBA, DMBA = ', DMBA.q[2]),col=c('green','sienna','purple','navy'),lty=1:4)

legend(0.0,0.7,legend=c('Low','Low middle','Upper middle','High'),ncol=1,lty=1:4,col=c('green','sienna','purple','navy'))

#

eta = coef(ajuste23a)[1]*CBA.x+coef(ajuste23a)[2]*DMBA.q[3]

Low.pred = pnorm(ajuste23a$zeta[1]+eta)

LowM.pred = pnorm(ajuste23a$zeta[2]+eta)

UppM.pred = pnorm(ajuste23a$zeta[3]+eta)

High.pred = 1-UppM.pred

#

matplot(CBA.x,cbind(Low.pred,LowM.pred-Low.pred,UppM.pred-LowM.pred,High.pred), type='l',

ylab='Probabilidades estimadas',xlab=paste('CBA, DMBA = ', DMBA.q[3]),col=c('green','sienna','purple','navy'),lty=1:4)

#

eta = coef(ajuste23a)[1]*CBA.x+coef(ajuste23a)[2]*DMBA.q[4]

Low.pred = pnorm(ajuste23a$zeta[1]+eta)

LowM.pred = pnorm(ajuste23a$zeta[2]+eta)

UppM.pred = pnorm(ajuste23a$zeta[3]+eta)

High.pred = 1-UppM.pred

#

matplot(CBA.x,cbind(Low.pred,LowM.pred-Low.pred,UppM.pred-LowM.pred,High.pred), type='l',

37

ylab='Probabilidades estimadas',xlab=paste('CBA, DMBA = ', DMBA.q[4]),col=c('green','sienna','purple','navy'),lty=1:4)

#

# Residuos

#

ajuste0 = update(ajuste22, .~ 1, method = "probit")

LR.geral = anova(ajuste0,ajuste23a,test='Chisq')$"LR stat."[2]

#

n = dim(dados2)[1]

LR.ind = seq(1,n)

for(i in 1:n){

ajuste0i = update(ajuste22, .~ 1, method='probit', data=dados2[-i,])

ajuste23ai = update(ajuste23a, method='probit', data=dados2[-i,])

LR0.ind = anova(ajuste0,ajuste23ai,test='Chisq')$"LR stat."[2]

LR.ind[i] = LR.geral-LR0.ind

}

#

plot(sqrt(LR.ind),pch=19,xlab='Observação',ylab=as.expression(substitute(sqrt('Razão de verossimilhanças'))))

#