• Nenhum resultado encontrado

A fim de ilustrar o uso do pacote proposto neste trabalho e facilitar a reprodutibi- lidade para outros conjuntos de dados, foram descritos todos os c´odigos utilizados para an´alise dos dados apresentada na se¸c˜ao 6.3. Todas as an´alises foram realizadas no software R vers˜ao 3.2.2 para o sistema operacional Windows 64 bits.

AP ˆENDICE C. Descri¸c˜ao e exemplo do uso do pacote flexcure 89

No bloco de c´odigo R que segue, s˜ao carregados os pacotes ggplot2 (WICKHAM,

2009) para constru¸c˜ao de gr´aficos, dplyr (WICKHAM; FRANCOIS,2015) para manipula- ¸c˜ao de dados e o flexcure que ´e a nossa proposta para ajustar modelos param´etricos de sobrevivˆencia com/sem fra¸c˜ao de cura. Al´em disso, ´e feita a importa¸c˜ao dos dados e as descri¸c˜oes das vari´aveis estudas.

# Carregando pacotes:

require(ggplot2) # Pacote para gr´aficos

require(dplyr) # Pacote para manipula¸c~ao de dados

require(flexcure) # Pacote para ajuste dos modelos com/sem fra¸c~ao de cura # Importando os dados "finance":

df <- read.table("finance.txt", head = TRUE)

# Descri¸c~ao das vari´aveis:

str(df)

## ✬data.frame✬: 65535 obs. of 6 variables:

## $ time : int 477 65 93 151 311 151 393 65 122 374 ... ## $ status: int 0 1 1 1 1 1 1 1 1 1 ...

## $ x1 : Factor w/ 2 levels "F","M": 1 1 1 1 1 1 1 1 1 1 ...

## $ x2 : Factor w/ 6 levels "C","D","E","N",..: 1 1 1 1 1 1 1 1 1 ... ## $ x3 : Factor w/ 10 levels "FX1","FX10","FX2",..: 1 1 1 1 1 1 1 ... ## $ x4 : Factor w/ 5 levels "IS1","IS2","IS3",..: 1 2 2 2 2 2 2 2 ...

# time: tempo at´e o indiv´ıduo deixar de ser cliente da institui¸c~ao

# financeira (em dias)

# status: indica se o tempo ´e de censura ou de falha # x1 - Sexo: # F ("Feminino") # M ("Masculino") # x2 - Estado civil: # C ("Casado") # D ("Divorciado") # E ("Uni~ao est´avel") # S ("Solteiro") # V ("Vi´uvo")

# x3 - Idade: # FX1 ("18 |- 21") # FX2 ("21 |- 25") # FX3 ("25 |- 30") # FX4 ("30 |- 35") # FX5 ("35 |- 40") # FX6 ("40 |- 45") # FX7 ("45 |- 50") # FX8 ("50 |- 60") # FX9 ("60 |- 70") # FX10 ("70 |- ") # x4 - N´ıvel de escolaridade: # IS1 ("Ensino m´edio incompleto") # IS2 ("Ensino m´edio")

# IS3 ("Gradua¸c~ao incompleta/completa") # IS4 ("Mestrado")

# IS5 ("Doutorado/P´os-doutorado")

Para os dados disponibilizados, tˆem-se a presen¸ca de 41787 censuras que representam 63,76% dos clientes, ou seja, h´a evidˆencia de que uma propor¸c˜ao de indiv´ıduos s˜ao imunes ao evento de interesse, que neste caso, ´e interromper o relacionamento com a institui¸c˜ao. Al´em disso, como pode ser visto nas Figuras4,6,7,8e9, a sobrevivˆencia estimada pelo m´etodo de Kaplan-Meier se mant´em a um n´ıvel aproximadamente constante e estritamente maior do que zero, durante um per´ıodo de tempo razo´avel (tempo m´aximo observado no estudo foi de 2770 dias e o m´ınimo foi de 14 dias) para os n´ıveis de todas as covari´aveis, apontando fortes evidˆencias de que existe uma propor¸c˜ao de indiv´ıduos n˜ao suscept´ıveis ao evento de interesse. Para a constru¸c˜ao desses gr´aficos foram utilizados os pacotes ggplot2, dplyr e a fun¸c˜ao qplot_survival, esta dispon´ıvel atrav´es do pacote aqui proposto (flexcure), por´em, originalmente, apresentada em (SACCILOTTO,2010). Note que, a fun¸c˜ao survfit ´e do pacote survival que foi carregado automaticamente, pois o flexcure depende deste e tamb´em do pacote flexsurv. O primeiro bloco de c´odigo que segue ´e referente a Figura

4apresentada na se¸c˜ao 6.3.

# Kaplan-Meier geral:

Skm1 <- survfit(Surv(time, status)~1, data = df) p1 <- qplot_survival(Skm1,f.CI = FALSE) +

theme_bw(base_size=15) +

AP ˆENDICE C. Descri¸c˜ao e exemplo do uso do pacote flexcure 91

ylab(expression(hat(S)(t))) +

xlab("Tempo (em dias)") p1

# Kaplan-Meier segundo o sexo:

# Obs: os n´ıveis (levels) do fator (factor) que controlam a estrutura

# inicial da legenda.

Skm2 <- survfit(Surv(time, status)~x1, data = df) p2 <- qplot_survival(Skm2,f.CI=F) +

theme_bw(base_size=15) +

ylim(0,1) +

ylab(expression(hat(S)(t))) +

xlab("Tempo (em dias)") +

scale_colour_hue(name = "Sexo:",

labels=c("Masculino", "Feminino")) +

theme(legend.position = "bottom") p2 0,00 0,25 0,50 0,75 1,00 0 1000 2000

Tempo (em dias)

S

^

(

t

)

Sexo: Masculino Feminino

Figura 6 – Gr´afico da fun¸c˜ao de sobrevivˆencia estimada usando o m´etodo Kaplan-Meier para os tempos at´e que o cliente abandone a institui¸c˜ao financeira segundo o sexo.

# Kaplan-Meier segundo o estado civil:

# inicial da legenda.

df <- df %>% mutate(x2 = factor(x2, levels = c("N", "V", "D", "E", "C", "S"))) Skm3 <- survfit(Surv(time, status)~x2, data = df)

p3 <- qplot_survival(Skm3,f.CI=F) +

theme_bw(base_size=15) +

ylim(0,1) +

ylab(expression(hat(S)(t))) +

xlab("Tempo (em dias)") +

scale_colour_hue(name = "Estado civil:",

labels = c("Solteiro", "Casado",

"Uni~ao est´avel", "Divorciado",

"Vi´uvo", "N~ao informado")) +

theme(legend.position = "bottom") +

guides(col = guide_legend(ncol = 3, byrow = TRUE)) p3 0,00 0,25 0,50 0,75 1,00 0 1000 2000

Tempo (em dias)

S

^ (t

)

Estado civil: Solteiro Casado União estável

Divorciado Viúvo Não informado

Figura 7 – Gr´afico da fun¸c˜ao de sobrevivˆencia estimada usando o m´etodo Kaplan-Meier para os tempos at´e que o cliente abandone a institui¸c˜ao financeira segundo o estado civil.

# Kaplan-Meier segundo a idade:

# Obs: os n´ıveis (levels) do fator (factor) que controlam a estrutura

AP ˆENDICE C. Descri¸c˜ao e exemplo do uso do pacote flexcure 93

df <- df %>% mutate(x3 = factor(x3, levels = paste("FX", 10:1, sep=""))) Skm4 <- survfit(Surv(time, status)~x3, data = df)

p4 <- qplot_survival(Skm4, f.CI=F) +

theme_bw(base_size = 15) + ylim(0, 1) +

ylab(expression(hat(S)(t))) +

xlab("Tempo (em dias)") +

scale_colour_hue(name = "Idade:",

labels = c("18 |- 21", "21 |- 25" ,

"25 |- 30", "30 |- 35",

"35 |- 40", "40 |- 45",

"45 |- 50", "50 |- 60",

"60 |- 70", "70 |- ")) +

theme(legend.position = "bottom") +

guides(col = guide_legend(ncol = 5, byrow = TRUE)) p4 0,00 0,25 0,50 0,75 1,00 0 1000 2000

Tempo (em dias)

S ^

(

t

)

Idade: 18 |− 21 21 |− 25 25 |− 30 30 |− 35 35 |− 40 40 |− 45 45 |− 50 50 |− 60 60 |− 70 70 |−

Figura 8 – Gr´afico da fun¸c˜ao de sobrevivˆencia estimada usando o m´etodo Kaplan-Meier para os tempos at´e que o cliente abandone a institui¸c˜ao financeira segundo as faixas de idade.

# Kaplan-Meier segundo o n´ıvel de escolaridade:

# Obs: os n´ıveis (levels) do fator (factor) que controlam a estrutura

# inicial da legenda.

Skm5 <- survfit(Surv(time, status)~x4, data = df) p5 <- qplot_survival(Skm5,f.CI=F) +

theme_bw(base_size=15) + ylim(0,1) +

ylab(expression(hat(S)(t))) +

xlab("Tempo (em dias)") +

scale_colour_hue(name = "N´ıvel de \nescolaridade:",

labels = c("Ensino m´edio \nincompleto", "Ensino m´edio",

"Gradua¸c~ao \nincompleta ou\ncompleta",

"Mestrado", "Doutorado ou\nP´os-doutorado"))+

theme(legend.position = "bottom") +

guides(col = guide_legend(ncol = 3, byrow = TRUE)) p5 0,00 0,25 0,50 0,75 1,00 0 1000 2000

Tempo (em dias)

S ^

(

t

)

Nível de escolaridade: Ensino médio

incompleto Ensino médio

Graduação incompleta ou completa Mestrado Doutorado ouPós−doutorado

Figura 9 – Gr´afico da fun¸c˜ao de sobrevivˆencia estimada usando o m´etodo Kaplan-Meier para os tempos at´e que o cliente abandone a institui¸c˜ao financeira segundo o n´ıvel de escolaridade.

Sendo assim, como tem-se evidˆencia de que um percentual dos clientes nunca deixar˜ao a empresa, isso nos leva a assumir que a modelagem usando os modelos com fra¸c˜ao de cura, inicialmente, parece ser a mais adequada para analisar estes dados. Mas, qual modelo representa melhor o n´umero de causas que competem para ocorrˆencia do evento? O modelo de mistura padr˜ao ou tempo de promo¸c˜ao? Que distribui¸c˜ao param´etrica ser´a usada para modelar os tempos dos elementos n˜ao curados? Ent˜ao, como o objetivo ´e ilustrar o uso do pacote flexcure para estes dados, foi utilizado o modelo F generalizado

AP ˆENDICE C. Descri¸c˜ao e exemplo do uso do pacote flexcure 95

com fra¸c˜ao de cura e, atrav´es deste buscou-se discriminar modelos mais simples, que s˜ao seus casos particulares, usando os crit´erios de sele¸c˜ao apresentados no Cap´ıtulo 3.

O primeiro crit´erio utilizado foi o teste da raz˜ao de verossimilhan¸cas. Para realizar este teste precisa-se conhecer o logaritmo da fun¸c˜ao de verossimilhan¸ca de cada modelo a ser testado. Neste caso, foram ajustados alguns dos modelos cl´assicos com fra¸c˜ao de cura, bem como, o modelo F generalizado. Al´em disso, considerou-se que o modelo de tempo de promo¸c˜ao representa melhor a estrutura de riscos competitivos que os clientes est˜ao expostos, uma vez que, m´ultiplas causas podem acarretar na sua sa´ıda da organiza¸c˜ao. Ainda, deve-se salientar que para escolha do modelo n˜ao foram consideradas as covari´aveis no ajuste.

O bloco de c´odigo R que segue, explana como usar a fun¸c˜ao curereg do pacote flexcure para ajustar modelos de sobrevivˆencia com fra¸c˜ao de cura sem covari´aveis. Note que, os argumentos ncausedist e timedist s˜ao os repons´aveis pela especifica¸c˜ao do modelo de forma geral. Como se tem interesse apenas nos valores do logaritmo da verossimilhan¸ca, n˜ao ser´a dada tanta aten¸c˜ao aos parˆametros estimados. Por´em, essa explora¸c˜ao ´e realizada no ajuste do modelo escolhido segundo os crit´erios adotados.

# Ajuste do modelo de tempo de promo¸c~ao F generalizado:

fit1 <- curereg(formula = Surv(time, status)~1, cureformula = ~1, data =

df, ncausedist = ✬poisson✬, timedist = ✬genf✬)

# Ajuste do modelo de tempo de promo¸c~ao gama generalizado estendido:

fit2 <- curereg(formula = Surv(time, status)~1, cureformula = ~1, data =

df, ncausedist = ✬poisson✬, timedist = ✬gengamma✬)

# Ajuste do modelo de tempo de promo¸c~ao Weibull:

fit3 <- curereg(formula = Surv(time, status)~1, cureformula = ~1, data =

df, ncausedist = ✬poisson✬, timedist = ✬weibull✬)

# Ajuste do modelo de tempo de promo¸c~ao log-normal:

fit4 <- curereg(formula = Surv(time, status)~1, cureformula = ~1, data =

df, ncausedist = ✬poisson✬, timedist = ✬lnorm✬)

# Ajuste do modelo de tempo de promo¸c~ao log-log´ıstica:

fit5 <- curereg(formula = Surv(time, status)~1, cureformula = ~1, data =

df, ncausedist = ✬poisson✬, timedist = ✬llogist✬)

# Ajuste do modelo de tempo de promo¸c~ao exponencial:

df, ncausedist = ✬poisson✬, timedist = ✬exp✬)

Da´ı, usa-se a fun¸c˜ao LRT do pacote flexcure para realizar o teste da raz˜ao de verossimilhan¸ca. Nos blocos de c´odigo seguintes s˜ao retornados os resultados dos testes para os modelos em quest˜ao. Os resultados dos testes indicam que os modelos testados (fit2, fit3, fit4, fit5 e fit6) n˜ao s˜ao adequados para an´alise desses dados, uma vez que, o valor-p (p-value) foi relativamente pequeno, quando comparados com o modelo de tempo de promo¸c˜ao log-F generalizado (fit1). Portanto, ficar com o modelo F generalizado pode ser uma das melhores op¸c˜oes nessa aplica¸c˜ao.

# LRT function # args:

# fitg: modelo mais geral

# fits: modelo mais simples (caso particular do mais geral)

LRT(fitg = fit1, fits = fit2)

## Likelihood ratio test ##

## LRS = 2951,886 , df = 1 , p-value < 2,2e-16 ## alternative hypothesis:

## Extended generalized gamma promotion time model ## is not suitable

LRT(fitg = fit1, fits = fit3)

## Likelihood ratio test ##

## LRS = 7480,938 , df = 2 , p-value < 2,2e-16 ## alternative hypothesis:

## Weibull promotion time model ## is not suitable

LRT(fitg = fit1, fits = fit4)

## Likelihood ratio test ##

AP ˆENDICE C. Descri¸c˜ao e exemplo do uso do pacote flexcure 97

## alternative hypothesis:

## Lognormal promotion time model ## is not suitable

LRT(fitg = fit1, fits = fit5)

## Likelihood ratio test ##

## LRS = 7109,932 , df = 2 , p-value < 2,2e-16 ## alternative hypothesis:

## Log-logistic promotion time model ## is not suitable

LRT(fitg = fit1, fits = fit6)

## Likelihood ratio test ##

## LRS = 7703,545 , df = 3 , p-value < 2,2e-16 ## alternative hypothesis:

## Exponential promotion time model ## is not suitable

A segunda alternativa para discriminar modelos faz uso dos crit´erios de informa¸c˜ao AIC e BIC. O c´odigo seguinte mostra como se pode usar o pacote flexcure em conjunto com as fun¸c˜oes AIC e BIC do pacote stats para realizar tal tarefa. Observe que, segundo esses crit´erios o modelo de tempo de promo¸c˜ao F generalizado ´e o mais adequado, pois associado a ele tˆem-se os menores valores de AIC e BIC.

# Crit´erio de Informa¸c~ao Akaike (AIC)

AIC(fit1, fit2, fit3, fit4, fit5, fit6)

## df AIC ## fit1 5 415259,0 ## fit2 4 418208,8 ## fit3 3 422735,9 ## fit4 3 420799,1 ## fit5 3 422364,9 ## fit6 2 422956,5

# Crit´erio de Informa¸c~ao Bayesiano (BIC)

BIC(fit1, fit2, fit3, fit4, fit5, fit6)

## df BIC ## fit1 5 415304,4 ## fit2 4 418245,2 ## fit3 3 422763,2 ## fit4 3 420826,4 ## fit5 3 422392,2 ## fit6 2 422974,7

O terceiro e ´ultimo crit´erio a ser utilizado consiste em comparar as curvas de sobrevivˆencia estimadas conforme os modelos em quest˜ao versus a estimada pelo m´etodo de Kaplan-Meier. Sob este enfoque, o modelo que melhor se ajusta aos dados ´e aquele para o qual sua curva se aproxima mais da estimativa n˜ao-param´etrica. O bloco que segue ilustra como proceder para fazer uso desse crit´erio. Note que, os argumentos fun e args da fun¸c˜ao stat_function do pacote ggplot2 foram usados para especificar, respectivamente, a fun¸c˜ao a ser plotada e os seus argumentos. Neste caso, foi passado `a fun as fun¸c˜oes pgenfpt, pgengammapt, pweibullpt, plnormpt, pllogist e pexppt, que s˜ao, respecti- vamente, as fun¸c˜oes de sobrevivˆencia populacional dos modelos de tempo de promo¸c˜ao F generalizado, gama generalizado, Weibull, Log-normal, Log-log´ıstica e exponencial, quando assumido lower.tail = FALSE (ver c´odigo abaixo ou execute args(pgenfpt) para melhor compreens˜ao). Estas fun¸c˜oes acompanham o pacote flexcure proposto neste trabalho.

Observando a Figura 10, pode-se ver que os modelos de tempo de promo¸c˜ao F generalizado e gama generalizado possuem curvas que est˜ao relativamente pr´oximas da fun¸c˜ao escada estimada pelo m´etodo de Kaplan-Meier. Por´em, os demais modelos, apesar de serem mais simples, tamb´em se adequam relativamente bem aos dados. Sendo assim, por este crit´erio o modelo de tempo de promo¸c˜ao gama generalizado ´e um bom candidato para an´alise dos dados, uma vez que, tem um parˆametro a menos que a F generalizada e possui um ajuste similar.

# Sobreviv^encia estimada por Kaplan-Meier:

km <- survfit(Surv(time, status) ~ 1, data = df)

qplot_survival(km, f.CI = F, f.shape = NA) +

theme_bw(base_size=15) +

ylim(0,1) +

ylab(expression(hat(S)(t))) +

AP ˆENDICE C. Descri¸c˜ao e exemplo do uso do pacote flexcure 99

# Sobreviv^encia estimada usando o modelo de tempo de promo¸c~ao F # generalizado:

stat_function(fun = pgenfpt,

aes(colour = "1"),

args = list(mu = coef(fit1, terms = "time")[1],

sigma = exp(coef(fit1, terms = "time")[2]),

Q = coef(fit1, terms = "time")[3],

P = exp(coef(fit1, terms = "time")[4]),

theta = exp(coef(fit1, terms = "cure")),

lower.tail = FALSE)) +

# Sobreviv^encia estimada usando o modelo de tempo de promo¸c~ao gama # generalizado:

stat_function(fun = pgengammapt,

aes(colour = "2"),

args = list(mu = coef(fit2, terms = "time")[1],

sigma = exp(coef(fit2, terms = "time")[2]),

Q = coef(fit2, terms = "time")[3],

theta = exp(coef(fit2, terms = "cure")),

lower.tail = FALSE)) +

# Sobreviv^encia estimada usando o modelo de tempo de promo¸c~ao # Weibull:

stat_function(fun = pweibullpt,

aes(colour = "3"), n = 1000,

args = list(scale = exp(coef(fit3, terms = "time")[1]),

shape = 1/exp(coef(fit3, terms = "time")[2]),

theta = exp(coef(fit3, terms = "cure")),

lower.tail = FALSE)) +

# Sobreviv^encia estimada usando o modelo de tempo de promo¸c~ao # log-normal:

stat_function(fun = plnormpt,

aes(colour = "4"),

args = list(meanlog = coef(fit4, terms = "time")[1],

sdlog = exp(coef(fit4, terms = "time")[2]),

theta = exp(coef(fit4, terms = "cure")),

lower.tail = FALSE)) +

# Sobreviv^encia estimada usando o modelo de tempo de promo¸c~ao # log-log´ıstico:

stat_function(fun = pllogispt,

args = list(scale = exp(coef(fit5, terms = "time")[1]),

shape = 1/exp(coef(fit5, terms = "time")[2]),

theta = exp(coef(fit5, terms = "cure")),

lower.tail = FALSE)) +

# Sobreviv^encia estimada usando o modelo de tempo de promo¸c~ao # exponencial:

stat_function(fun = pexppt,

aes(colour = "6"),

args = list(rate = exp(coef(fit6, terms = "time")[1]),

theta = exp(coef(fit6, terms = "cure")),

lower.tail = FALSE)) +

scale_colour_manual(name = "Modelo de tempo\n de promo¸c~ao:",

values = c("#E41A1C", "#377EB8", "#4DAF4A",

"#984EA3", "#FF7F00", "#FFFF33"),

labels = c("F generalizado", "Gama generalizado",

"Weibull", "Log-normal",

"Log-log´ıstico", "Exponencial")) +

theme(legend.position = "bottom") +

guides(col = guide_legend(ncol = 3, byrow = TRUE)) +

annotate("segment", x = 0, xend = 100, y = 0.05, yend = .05) +

annotate("text", x = 115, y = 0.05, hjust = 0, label = "Kaplan-Meier")

Ao avaliar os resultados de todos os crit´erios, optou-se por ajustar o modelo de tempo de promo¸c˜ao F generalizado, pois tˆem evidˆencias que este ´e o modelo que melhor descreve o mecanismo gerador dos tempos. Partindo desse modelo, foram associadas covari´aveis tanto no termo de fra¸c˜ao de cura quanto no termo relacionado com os tempos dos clientes n˜ao imunes. Neste caso, de modo geral, ´e assumido que o parˆametro de posi¸c˜ao fica em fun¸c˜ao de um preditor linear, da seguinte forma:

µi = β0+ β1xi1+ β2xi2+ β3xi3+ β4xi4

e o parˆametro associado `a distribui¸c˜ao do n´umero de causas que foi assumida como Poisson (modelo de tempo de promo¸c˜ao), fica expresso da seguinte maneira:

log (θi) = γ0+ γ1zi1+ γ2zi2+ γ3zi3+ γ4zi4,

com i = 1, . . . , 65535 e xi1 = zi1(sexo do cliente i), xi2 = zi2 (estado civil do cliente

i), xi3 = zi4 (faixa de idade do cliente i) e xi4 = zi4 (n´ıvel de escolaridade do cliente i).

AP ˆENDICE C. Descri¸c˜ao e exemplo do uso do pacote flexcure 101 Kaplan−Meier 0,00 0,25 0,50 0,75 1,00 0 1000 2000

Tempo (em dias)

S

^

(

t

)

Modelo de tempo de promoção:

F generalizado Gama generalizado Weibull Log−normal Log−logístico Exponencial

Figura 10 – Curvas de sobrevivˆencias estimadas pelo m´etodo de Kaplan-Meier e pelos modelos de tempo de promo¸c˜ao F generalizado, gama generalizado estendido, Weibull, log-normal, log-log´ıstico e exponencial, para os dados da institui¸c˜ao financeira.

define uma categoria de base e cria automaticamente k − 1 vari´aveis indicadoras, com k sendo o n´umero de categorias da vari´avel. Essas vari´aveis, como o pr´oprio nome indica, aponta se o i-´esimo cliente pertence a k-´esima categoria. Esse tipo de procedimento ´e comumente realizado pelas fun¸c˜oes lm e glm do pacote stats, e a categoria de base pode ser escolhida impondo-se uma ordem na defini¸c˜ao da vari´avel (ver ajuda das fun¸c˜oes ordered ou factor). Desta forma, a categoria de base ser´a aquela que aparece em primeiro, de acordo com crit´erio usado na ordena¸c˜ao. Para esses dados n˜ao teve essa preocupa¸c˜ao, mas no geral o usu´ario deseja definir uma categoria de base.

O bloco de c´odigo que segue faz a especifica¸c˜ao do ajuste do modelo supracitado. Com efeito, os argumentos formula e cureformula determinam, respectivamente, o preditor linear associado ao parˆametro de posi¸c˜ao e ao logaritmo do parˆametro relacionado com a fra¸c˜ao de cura. Pois neste caso, o θi ´e o parˆametro da distribui¸c˜ao Poisson e a fun¸c˜ao

logar´ıtmica ´e exatamente a liga¸c˜ao canˆonica ao fazer uma analogia a teoria dos modelos lineares generalizados. O parˆametro control serve para passar uma lista de argumentos para fun¸c˜ao optim, usada na otimiza¸c˜ao do logaritmo da fun¸c˜ao de verossimilhan¸ca. Neste caso, o argumento passado para o otimizador ´e o fnscale = value e isso ´e feito adicionando control = list(fnscale = value) ao corpo da fun¸c˜ao curereg, sendo value um n´umero da ordem de magnitude do logaritmo da fun¸c˜ao de verossimilhan¸ca. A ideia impl´ıcita nesse argumento ´e tornar o problema numericamente mais est´avel, uma vez que, reduz a escala dos valores do logaritmo da fun¸c˜ao de verossimilhan¸ca e, para mais

detalhes acesse a ajuda da fun¸c˜ao optim (executando ?optim). Esse argumento ´e opcional, mas como esse conjunto de dados ´e relativamente grande, optou-se em considerar value = 198552, escolhido ap´os o ajuste de alguns modelos mais simples que s˜ao casos particulares do modelo F generalizado. Al´em desses argumentos, outros podem ser passados a fun¸c˜ao curereg, para mais detalhes acesse a ajuda da fun¸c˜ao curereg, executando o comando help(curereg) ou simplesmente ?curereg.

fit <- curereg(formula = Surv(time, status) ~ x1 + x2 + x3 + x4,

cureformula = ~ x1 + x2 + x3 + x4, data = df,

ncausedist = "poisson", timedist = "genf",

control = list(fnscale = 198552))

Ap´os o ajuste, digitando fit no console do R, a sa´ıda padr˜ao que segue no bloco abaixo ser´a informada. Nesta sa´ıda tˆem-se informa¸c˜oes gerais sobre o modelo ajustado, as estimativas dos coeficientes e um breve resumo que inclui: o tamanho da amostra (n), n´umero de falhas (Events), n´umero de censuras (Censored), logaritmo da fun¸c˜ao de verossimilhan¸ca avaliada nas estimativas de m´axima verossimilhan¸ca (Log-likelihood) e o Crit´erio de Informa¸c˜ao Akaike (AIC).

fit

## Call:

## curereg(formula = Surv(time, status) ~ x1 + x2 + x3 + x4,

## cureformula = ~x1 + x2 + x3 + x4, data = df, timedist = "genf", ## ncausedist = "poisson", control = list(fnscale = 198552))

## Distribution: Generalized F promotion time model ## Coefficients:

## Cure probability model:

## (Intercept) x1M x2D x2E x2N ## 3,71085 -0,05847 -0,24343 0,27502 1,59824 ## x2S x2V x3FX10 x3FX2 x3FX3 ## -0,15948 -0,32637 -2,46540 -0,43448 -0,69960 ## x3FX4 x3FX5 x3FX6 x3FX7 x3FX8 ## -0,93754 -1,13941 -1,53181 -1,64978 -1,86360

## x3FX9 x4IS2 x4IS3 x4IS4 x4IS5

## -1,99178 -0,58605 -0,32006 -0,55354 -1,11020

##

## Failure time distribution model:

## (Intercept) x1M x2D x2E x2N

AP ˆENDICE C. Descri¸c˜ao e exemplo do uso do pacote flexcure 103

## x2S x2V x3FX10 x3FX2 x3FX3

## -0,05937 0,06431 0,09245 -0,16330 -0,20198

## x3FX4 x3FX5 x3FX6 x3FX7 x3FX8

## -0,11977 -0,16547 -0,29555 -0,19576 -0,06658

## x3FX9 x4IS2 x4IS3 x4IS4 x4IS5

## -0,04973 -0,70621 -0,36977 0,53013 -0,06502 ## Log(sigma) Q Log(P) ## 1,88387 -4,41024 -4,74581 ## ## n = 65535, Events: 23748, Censored: 41787 ## Log-likelihood = -198479,4 ## AIC = 397044,8

Outra fun¸c˜ao muito ´util que foi utilizada ´e a summary. Atrav´es desta fun¸c˜ao s˜ao retornados as estimativas dos coeficientes (Estimate), os erros padr˜ao (Std.Error) estimados com base na inversa da matriz de informa¸c˜ao observada, a estat´ıstica do teste de Wald (Z value) e o p-valor (Pr(>|Z|)). Com rela¸c˜ao ao teste de Wald, sob a hip´otese nula, tem-se que o parˆametro ´e igual a zero, contra a hip´otese alternativa, que o parˆametro ´e diferente de zero. Contudo, deve-se fazer aten¸c˜ao aos testes realizados para os parˆametros log (σ) (Log(sigma)) e log (p) (Log(P)), pois testar separadamente que esses parˆametros s˜ao iguais a zero ´e equivalente a testar que σ (sigma) ou p (P) ´e igual a um.

summary(fit)

## Call:

## curereg(formula = Surv(time, status) ~ x1 + x2 + x3 + x4,

## cureformula = ~x1 + x2 + x3 + x4, data = df, timedist = "genf", ## ncausedist = "poisson", control = list(fnscale = 198552))

## Distribution: Generalized F promotion time model ##

## Cure probability model:

## Estimate Std. Error Z value Pr(>|Z|)

## (Intercept) 3,71085 0,21974 16,888 0,000e+00 ## x1M -0,05847 0,02444 -2,393 8,366e-03 ## x2D -0,24343 0,12014 -2,026 2,137e-02 ## x2E 0,27502 0,06697 4,107 2,007e-05 ## x2N 1,59824 0,02552 62,637 0,000e+00 ## x2S -0,15948 0,04796 -3,325 4,420e-04 ## x2V -0,32637 0,11162 -2,924 1,729e-03

## x3FX10 -2,46540 0,10063 -24,500 0,000e+00 ## x3FX2 -0,43448 0,06351 -6,841 3,920e-12 ## x3FX3 -0,69960 0,06281 -11,138 0,000e+00 ## x3FX4 -0,93754 0,06125 -15,306 0,000e+00 ## x3FX5 -1,13941 0,06163 -18,487 0,000e+00 ## x3FX6 -1,53181 0,06304 -24,301 0,000e+00 ## x3FX7 -1,64978 0,06557 -25,159 0,000e+00 ## x3FX8 -1,86360 0,07256 -25,684 0,000e+00 ## x3FX9 -1,99178 0,08256 -24,127 0,000e+00 ## x4IS2 -0,58605 0,03491 -16,789 0,000e+00 ## x4IS3 -0,32006 0,03374 -9,485 0,000e+00 ## x4IS4 -0,55354 0,04022 -13,764 0,000e+00 ## x4IS5 -1,11020 0,03326 -33,378 0,000e+00 ##

## Failure time distribution model:

## Estimate Std. Error Z value Pr(>|Z|)

## (Intercept) 10,03215 0,30136 33,2891 0,000e+00 ## x1M -0,16428 0,02956 -5,5570 1,373e-08 ## x2D 0,44046 0,15625 2,8190 2,408e-03 ## x2E -0,08395 0,09422 -0,8910 1,865e-01 ## x2N 0,29595 0,03094 9,5656 0,000e+00 ## x2S -0,05937 0,06436 -0,9224 1,782e-01 ## x2V 0,06431 0,15819 0,4065 3,422e-01 ## x3FX10 0,09245 0,12551 0,7366 2,307e-01 ## x3FX2 -0,16330 0,06578 -2,4824 6,524e-03 ## x3FX3 -0,20198 0,06547 -3,0853 1,017e-03 ## x3FX4 -0,11977 0,06400 -1,8714 3,064e-02 ## x3FX5 -0,16547 0,06556 -2,5241 5,800e-03 ## x3FX6 -0,29555 0,06878 -4,2969 8,658e-06 ## x3FX7 -0,19576 0,07331 -2,6701 3,791e-03 ## x3FX8 -0,06658 0,08326 -0,7996 2,120e-01 ## x3FX9 -0,04973 0,09872 -0,5037 3,072e-01 ## x4IS2 -0,70621 0,04544 -15,5416 0,000e+00 ## x4IS3 -0,36977 0,04090 -9,0403 0,000e+00 ## x4IS4 0,53013 0,04811 11,0182 0,000e+00 ## x4IS5 -0,06502 0,04389 -1,4813 6,926e-02 ## Log(sigma) 1,88387 0,10813 17,4227 0,000e+00 ## Q -4,41024 0,55774 -7,9073 1,332e-15 ## Log(P) -4,74581 0,62770 -7,5607 2,010e-14

AP ˆENDICE C. Descri¸c˜ao e exemplo do uso do pacote flexcure 105

##

## n = 65535, Events: 23748, Censored: 41787 ## Log-likelihood = -198479,4

## AIC = 397044,8

Nesta aplica¸c˜ao, o principal objetivo de interesse ´e conhecer quais s˜ao perfis dos clientes que s˜ao mais suscept´ıveis a abandonar a institui¸c˜ao financeira. Sendo assim, para responder tal indaga¸c˜ao, foi estimada a fra¸c˜ao de cura, que para esses dados, representa a fra¸c˜ao de clientes fidelizados, ou seja, aqueles que n˜ao deixar˜ao de ser clientes da empresa por um longo per´ıodo de tempo. Logo, os perfis que est˜ao associados a baixa fra¸c˜ao de clientes fidelizados s˜ao os de potenciais chances de rompimento do relacionamento com a organiza¸c˜ao. Para isso, foi usada a fun¸c˜ao curefraction do pacote flexcure. Esta fun¸c˜ao interpreta o ajuste realizado com a fun¸c˜ao curereg e calcula a fra¸c˜ao de cura segundo o modelo ajustado, isto ´e, se o modelo ´e Poisson a fra¸c˜ao de cura calculada para o i-´esimo cliente ´e dada por ˆπi = exp



−ˆθi



e, considerando a propriedade de invariˆancia do estimador de m´axima verossimilhan¸ca, tem-se:

ˆ

θi = exp (ˆγ0+ ˆγ1zi1+ ˆγ2zi2+ ˆγ3zi3+ ˆγ4zi4) .

No bloco de c´odigo que segue s˜ao estimadas as fra¸c˜oes de cura utilizando a fun¸c˜ao curefraction. A sa´ıda dessa fun¸c˜ao pode ser modificada atrav´es de alguns argumentos que a mesma possui, s˜ao eles: unique, se igual a TRUE (unique = TRUE por padr˜ao) s˜ao escolhidos nos dados as linhas de perfis ´unicos, ou seja, s˜ao escolhidos apenas os clientes que possuem caracter´ısticas diferentes; ordered, se igual a TRUE (ordered = TRUE por padr˜ao) os dados s˜ao ordenados em rela¸c˜ao a fra¸c˜ao de cura e n (n = 6 por padr˜ao), argumento passado as fun¸c˜oes head e tail que informam quantas linhas do in´ıcio e do fim

Documentos relacionados