Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Autores:
Gerson Kumagaia
Gilciani Cordeiro
Renato Leone Moretto
Simone Bega Harnik
Valdecir Marvulle
Introduo
O objetivo deste artigo relacionar as idades de incio da ocorrncia de
Transtorno Obsessivo Compulsivo (TOC) e de incio de Transtornos de Humor. Para
tanto, foi adotada a seguinte estratgia:
Breve anlise descritiva para visualizao das principais caractersticas das
variveis fornecidas.
Teste de correlao bayesiana, efetuado com auxlio de pacote especifico
no R.
Ajuste de primeiro modelo e testes Full Bayesian Significance Test (FBST).
Ajuste de segundo modelo e testes FBST.
Verificou-se que h correlao fraca entre as idades de incio da ocorrncia de
TOC e de Transtornos de Humor, bem como diferena entre as idades de incio.
aceitvel afirmar que a idade de incio do TOC corresponde metade da idade de incio
dos Transtornos de Humor.
Anlise descritiva
IdadeAtual
A idade dos pacientes apresenta as seguintes medidas-resumo:
Mnimo
1 Quartil
Mediana
Mdia
3 Quartil
Mximo
9,0
25,0
32,0
34,9
44,0
82,0
InicioTOC
Todos os pacientes da amostra apresentam TOC. A tabela a seguir apresenta
as medidas-resumo, e, na sequncia fornecido o histograma:
Mnimo
1 Quartil
Mediana
Mdia
3 Quartil
Mximo
3,0
7,0
10,0
12,6
15,0
60,0
Humor
Ao todo, h 704 pacientes que apresentam transtornos de humor, e 297, que
no apresentam.
InicioHumor
O incio do transtorno de humor foi registrado em 608 dos 704 pacientes. Em
96, no h informaes disponveis. A tabela a seguir apresenta as medidas-resumo, e,
na sequncia fornecido o histograma:
Mnimo
1 Quartil
Mediana
Mdia
3 Quartil
Mximo
2,0
16,0
21,5
24,3
30,0
68,0
InicioHumorModificada
Esta varivel apresenta a idade de incio dos Transtornos de Humor, para
pacientes que os possuem, e a idade atual, para pacientes no diagnosticados com
transtornos de humor.
Mnimo
1 Quartil
Mediana
Mdia
3 Quartil
Mximo
2,0
18,0
24,0
27,4
35,0
67,0
InicioTOC x InicioHumorModificada
O grfico a seguir apresenta a disperso da idade de incio dos Transtornos de
Humor (computada a idade atual, quando no h ocorrncia), com relao idade de
incio da ocorrncia de TOC. Verifica-se pouca correlao linear, que decorre,
principalmente dos pontos que escapam ao canto superior direito. Nos demais pontos,
aparentemente, h uma nuvem o que indicativo de baixa correlao linear.
between
InicioTOC[!is.na(InicioHumorModificada)]
and
InicioHumorModificada[!is.na(InicioHumorModificada)]
mu[1]: the mean of InicioTOC[!is.na(InicioHumorModificada)]
sigma[1]: the scale of InicioTOC[!is.na(InicioHumorModificada)] , a consistent
estimate of SD when nu is large.
mu[2]: the mean of InicioHumorModificada[!is.na(InicioHumorModificada)]
sigma[2]: the scale of InicioHumorModificada[!is.na(InicioHumorModificada)]
nu: the degrees-of-freedom for the bivariate t distribution
Measures
mean
rho
mu[1]
sd
HDIlo
0
0
1
1
mu[2]
24.938 0.426 24.076 25.746
sigma[1] 5.041 0.186 4.675 5.404
0
0
1
1
0
0
1
1
9.727 11.112
3.496 5.278
'HDIlo' and 'HDIup' are the limits of a 95% HDI credible interval.
'%<comp' and '%>comp' are the probabilities of the respective parameter being
smaller or larger than 0.
Quantiles
q2.5%
0.161
rho
mu[1]
mu[2]
q25% median
0.208 0.232
q75% q97.5%
0.255 0.300
sigma[1]
sigma[2]
nu
3.530
4.008
4.311
4.638
5.342
mean
sd mcmc_se n_eff Rhat
0.231 0.035
0.000 8958 1.001
11.043 0.202
24.938 0.426
0.003
0.005
6096 1.000
6201 1.000
0.003
0.005
4123 1.000
4789 1.000
nu
0.008
3577 1.002
4.343 0.470
mcmc_se: the estimated standard error of the MCMC approximation of the mean.
n_eff: a crude measure of effective MCMC sample size.
Rhat: the potential scale reduction factor (at convergence, Rhat=1).
10
( )
(
(
)
)
(
( )
Mdia
IdadeTOC
0,00
1,85
14,31
12,71
IdadeHumorModificada
0,00
1,98
36,91
32,71
11
Mdia
0,00
1,49
24,05
21,73
( )
)
)
12
cerca de 1/1 a 1/80. Nesse sentido, a Gama (1, 1) tem as boas propriedades, conforme
sua densidade construda no Wolfram Alpha:
fraca correlao encontrada entre estas variveis e pelo grfico de disperso entre
elas, tpico de variveis independentes). Portanto, teremos:
Portanto:
[
Similarmente:
)
(
(
)
)
13
e ( )
igual mdia de
(
[
14
Consideraes finais
Para um primeiro experimento com modelagens de problemas de
sobrevivncia via anlise bayesiana, o exerccio em questo consistiu num desafio
interessante. Foi possvel encontrar pacotes j desenvolvidos, bem como implementar
a modelagem do incio ao fim.
Um passo futuro seria a construo da posteriori via funo de cpula, o que
garantiria mais preciso s estimativas, por considerar a correlao estimada de 0,232,
e no a independncia.
Por ora, possvel afirmar que as idades de ocorrncia de TOC e de
Transtornos de Humor so fracamente correlacionadas. Tambm descartamos a
hiptese de igualdade entre as mdias das idades de ocorrncia dos transtornos via
FBST por dois modelos: um Weibull e um exponencial.
A vantagem do modelo Weibull que permite incorporar a no ocorrncia de
transtornos de humor. Por outro lado, o modelo exponencial tem mais simples
interpretao e implementao, j que usa de prioris conjugadas, levando a uma
posteriori facilmente simulada com funes do R.
15
Referncias bibliogrficas
BAATH, Rasmus. Bayesian First Aid: Pearson Correlation Test. Disponvel em:
<http://sumsar.net/blog/2014/03/bayesian-first-aid-pearson-correlation-test/>.
Acesso em: 22.jun.2014.
DEGROOT, Morris H. Optimal statistical decisions. John Wiley & Sons, 2005.
IBRAHIM, Joseph G.; CHEN, MingHui; SINHA, Debajyoti. Bayesian survival analysis.
John Wiley & Sons, Ltd, 2005.
IRONY et al. A Weibull wearout test: full Bayesian approach. Universidade de So
Paulo, Instituto de Matemtica e Estatstica, 1999.
PAULINO, C. D. M., TURKMAN, M. A. A. e MURTEIRA, B. (2003). Estatstica bayesiana.
Fundao Calouste Gulbenkian.
16
Anexo Cdigos em R
#############################################################################
##Leitura dos dados
dados<-read.delim("dados.txt", dec=",", quote="")
IdadeAtual<-as.matrix(dados$IdadeAtual)
InicioTOC<-as.matrix(dados$InicioTOC)
InicioHumor<-as.matrix(dados$InicioHumor)
Humor<-as.factor(dados$Humor)
InicioHumorModificada<-as.matrix(dados$InicioHumorModificada)
#############################################################################
##Anlise descritiva das variveis
summary(IdadeAtual)
hist(IdadeAtual, main="Histograma de IdadeAtual", xlab="idades (em anos)",
freq=FALSE, ylab="densidade")
summary(InicioTOC)
hist(InicioTOC, main="Histograma da idade de incio do TOC", xlab="idades (em
anos)",
freq=FALSE, ylab="densidade")
summary(InicioHumor)
hist(InicioHumor, main="Histograma da idade de incio do transtorno de Humor",
xlab="idades (em anos)",
freq=FALSE, ylab="densidade")
summary(InicioHumorModificada)
hist(InicioHumorModificada, main="Histograma da idade de incio do transtorno
de Humor Modificada", xlab="idades (em anos)",
freq=FALSE, ylab="densidade")
plot(InicioTOC, InicioHumorModificada)
summary(InicioTOC - InicioHumor)
hist(InicioTOC + InicioHumor, main="Histograma
xlab="idades (em anos)",
freq=FALSE, ylab="densidade")
da
idade
de
TOC
Humor",
#############################################################################
##Testes para correlao
##http://sumsar.net/blog/2014/03/bayesian-first-aid-pearson-correlation-test/
##http://sumsar.net/blog/2014/01/bayesian-first-aid/
library(BayesianFirstAid)
library(rjags)
library(car)
teste_bayesiano<-bayes.cor.test(y=
InicioHumorModificada[!is.na(InicioHumorModificada)],
x= InicioTOC[!is.na(InicioHumorModificada)])
plot(teste_bayesiano)
summary(teste_bayesiano)
diagnostics(teste_bayesiano)
#############################################################################
##Ajuste do modelo de sobrevivncia univariado Weibull
#Ajuste do modelo para idade de TOC (com nenhuma censura)
ti_toc<-InicioTOC
ti_toc<-as.matrix(ti_toc)
ti_humor<-as.matrix(ti_humor)
tl_humor<-as.matrix(tl_humor)
log_posteriori_TOC<-function(theta){
alpha<-theta[1]
beta<-theta[2]
gama<-theta[3]
return((sum(log(beta) + (beta-1)*log(ti_toc+alpha)
-beta*log(gama) - ((ti_toc+alpha)/gama)^beta
+(alpha/gama)^beta)))
17
}
estimativas_mv_toc<-optim(par=c(0.00001, 0.00001, 0.00001),
fn=log_posteriori_TOC,
method=c("L-BFGS-B"),
lower=c(0.00001,0.00001,0.00001),
upper=c(10,Inf,Inf),
control = list(fnscale=-1))$par
estimativas_mv_toc
media_TOC<-(estimativas_mv_toc[3]*gamma(1 + 1/estimativas_mv_toc[2]))
media_TOC
#Ajuste do modelo para idade de HUMOR (com censura)
dois_casos<-split(InicioHumorModificada, Humor)
ti_humor_parcial<-matrix(unlist(dois_casos[2]), ncol = 1, byrow = TRUE)
ti_humor<-ti_humor_parcial[!is.na(ti_humor_parcial)]
tl_humor<-matrix(unlist(dois_casos[1]), ncol=1, byrow = TRUE)
log_posteriori_humor<-function(theta){
alpha<-theta[1]
beta<-theta[2]
gama<-theta[3]
return((sum(log(beta) + (beta-1)*log(ti_humor+alpha)
-beta*log(gama) - ((ti_humor+alpha)/gama)^beta
+(alpha/gama)^beta) +
sum(-((tl_humor+alpha)/gama)^beta + (alpha/gama)^beta)))
}
estimativas_mv_humor<-optim(par=c(0.00001, 0.00001, 0.00001),
fn=log_posteriori_humor,
method=c("L-BFGS-B"),
lower=c(0.00001, 0.00001, 0.00001),
upper=c(10, Inf, Inf),
control = list(fnscale=-1))$par
estimativas_mv_humor
media_humor<-(estimativas_mv_humor[3]*gamma(1 + 1/estimativas_mv_humor[2]))
media_humor
#Ajuste do da funo conjunta, supondo independncia
log_posteriori_conjunta_restrita<-function(theta){
valor<-log_posteriori_TOC(theta)+log_posteriori_humor(theta)
return(valor)
}
log_posteriori_conjunta<-function(estimativas_mv_toc, estimativas_mv_humor){
valor<-log_posteriori_TOC(estimativas_mv_toc)+
log_posteriori_humor(estimativas_mv_humor)
return(valor)
}
log_mv<-log_posteriori_conjunta(estimativas_mv_toc, estimativas_mv_humor)
log_mv_restrita<-log_posteriori_conjunta(estimativas_mv_conjunta,
estimativas_mv_conjunta)
estimativas_mv_conjunta<-optim(par=c(0.00001, 1, 10),
fn=log_posteriori_conjunta_restrita,
method=c("L-BFGS-B"),
lower=c(0.001, 1, 0.00001),
upper=c(10, 50, 50),
control = list(fnscale=-1))$par
estimativas_mv_conjunta
media_conjunta<-(estimativas_mv_conjunta[3]*gamma(1
1/estimativas_mv_conjunta[2]))
media_conjunta
18
19
n<-608
a<-1
b<-1
valor<-(n+a-1)*log(beta)+((-1)*(14785 + b)*beta)
return(valor)
}
estimativas_exp_toc<-optim(par=c(0.0001),
fn=log_posteriori_toc_gamma,
method=c("L-BFGS-B"),
lower=c(0.0001),
upper=c(100),
control = list(fnscale=-1))$par
estimativas_exp_humor<-optim(par=c(0.0001),
fn=log_posteriori_humor_gamma,
method=c("L-BFGS-B"),
lower=c(0.0001),
upper=c(100),
control = list(fnscale=-1))$par
log_conjunta<-function(theta){
n<-608
a<-1
b<-1
alpha<-theta[1]
beta<-theta[2]
parte1<-(n+a-1)*log(alpha)+((-1)*(7316 + b)*alpha)
parte2<-(n+a-1)*log(beta)+((-1)*(14785 + b)*beta)
return(parte1+parte2)
}
log_conjunta_restrita<-function(theta){
n<-608
a<-1
b<-1
alpha<-theta
parte1<-(n+a-1)*log(alpha)+((-1)*(7316 + b)*alpha)
parte2<-(n+a-1)*log(alpha)+((-1)*(14785 + b)*alpha)
return(parte1+parte2)
}
estimativas_alfa_beta<-optim(par=c(0.1, 0.1),
fn=log_conjunta,
method=c("L-BFGS-B"),
lower=c(0.0001, 0.0001),
upper=c(100, 100),
control = list(fnscale=-1))$par
mv<-estimativas_alfa_beta
log_f_mv<-log_conjunta(mv)
estimativas_alfa_beta_sobH0<-optim(par=c(0.1),
fn=log_conjunta_restrita,
method=c("L-BFGS-B"),
lower=c(0.0001),
upper=c(100),
control = list(fnscale=-1))$par
theta_estrela<-NULL
theta_estrela[1]<-estimativas_alfa_beta_sobH0
theta_estrela[2]<-estimativas_alfa_beta_sobH0
log_f_estrela<-log_conjunta(theta_estrela)
amostra<-NULL
for(i in 1:5000){
teste1<-rgamma(1, shape=(608+1), rate=(7316+1))
teste2<-rgamma(1, shape=(608+1), rate=(14785+1))
amostra<-rbind(amostra, c(teste1, teste2))
}
valores_finais<-NULL
for(i in 1:5000){
auxiliar<-dgamma(amostra[i,1], shape=(608+1), rate=(7316+1))*
dgamma(amostra[i,2], shape=(608+1), rate=(14785+1))
valores_finais<-rbind(valores_finais, auxiliar)
20
}
valores_theta_estrela<-dgamma(theta_estrela[1], shape=(608+1), rate=(7316+1))*
dgamma(theta_estrela[2], shape=(608+1), rate=(14785+1))
valores_mv<-dgamma(mv[1], shape=(608+1), rate=(7316+1))*
dgamma(mv[2], shape=(608+1), rate=(14785+1))
T_estrela<-sum(valores_finais>valores_theta_estrela)/5000
ev1<-1-T_estrela
sum(valores_finais>valores_mv)
###Teste de alpha = 2*beta
log_conjunta_restrita2<-function(theta){
n<-608
a<-1
b<-1
alpha<-theta
parte1<-(n+a-1)*log(alpha)+((-1)*(7316 + b)*alpha)
parte2<-(n+a-1)*log(alpha/2)+((-1)*(14785 + b)*alpha/2)
return(parte1+parte2)
}
estimativas_alfa_beta_sobH02<-optim(par=c(0.1),
fn=log_conjunta_restrita2,
method=c("L-BFGS-B"),
lower=c(0.0001),
upper=c(100),
control = list(fnscale=-1))$par
theta_estrela2<-c(estimativas_alfa_beta_sobH02,
estimativas_alfa_beta_sobH02/2)
valores_theta_estrela2<-dgamma(theta_estrela2[1],
shape=(608+1),
rate=(7316+1))*
dgamma(theta_estrela2[2], shape=(608+1), rate=(14785+1))
T_estrela2<-sum(valores_finais>valores_theta_estrela2)/5000
ev2<-1-T_estrela2
21