CE043 - GAMLSS
José Luiz Padilha da Silva e Cesar Augusto Taconeli
02 de março de 2020
GAMLSS (Modelos Generalizados Aditivos para Locação, Escala e Forma) é classe de modelos de regressão em que todos os parâmetros da distribuição assumida para a resposta podem ser modelados como funções aditivas de variáveis explanatórias.
A classe GAMLSS está implementada em uma série de pacotes do software R (pacote principal gamlss e uma série de pacotes auxiliares).
Há mais de 100 distribuições para respostas contínuas, discretas e de mistura para modelar a variável resposta. É possível ainda criar novas distribuições.
As variáveis explanatórias podem afetar os parâmetros da distribuição especificada de diferentes formas. Os modelos GAMLSS permitem funções paramétricas lineares ou não-lineares, ou funções suaves não-paramétricas das variáveis explanatórias. Os modelos GAMLSS podem ainda ser usados em combinação com suavizadores das funções gam() (do pacote mgcv), nnet() de redes neurais (pacote nnet) e árvores de decisão (do pacote rpart).
A seguir alguns exemplos de motivação que podem ser abordados utilizando a metodologia gamlss. library(tidyverse)
library(ggplot2) library(gridExtra) library(foreign)
Exemplo 1: Pressão Sistólica de Pacientes com Estenose Mitral
Os dados são referentes a um estudo prospectivo que envolveu 130 pacientes consecutivos com estenose mitral reumática, de março de 2014 a julho de 2017. Os pacientes realizaram ecocardiografia durante nas condições de exercício e descanso. O estudo foi aprovado pela Universidade Federal de Minas Gerais, e todos os pacientes assinaram o TCLM (Termo de Consentimento Livre e Esclarecido).
A hipertensão pulmonar em resposta ao exercício é o principal determinante da capacidade funcional em pacientes com estenose mitral. Um dos objetivos do estudo é determinar fatores associados com a pressão pulmonar nesta população.
Para os fins do estudo, poderíamos pensar no modelo clássico de regressão linear: yi= β0+ β1xi1+ . . . + βpxip+ εi, i= 1, . . . , n, εi∼ N(0, σ2), y ∈ R dados <- read.spss("Banco_Estenose_Mitral_16_01_2018.sav",to.data.frame=TRUE) dim(dados)
## [1] 130 149
dados <- subset(dados,select=c("esforço_PSAP","VD_FAC","Complacencia","volume_indexado_AE", "esforço_gradiente_médio_VM","DeltaFC"))
A variável resposta é a pressão sistólica da artéria pulmonar (mmHg). As variáveis candidatas a preditores são: mudança da área fracional do ventrículo direito (%), complacência atrioventricular (mL/mmHg), volume indexado do átrio esquerdo (mL/m2), gradiente médio durante o exercício (mmHg), variação da frequência cardíaca (bpm).
summary(dados)
## esforço_PSAP VD_FAC Complacencia volume_indexado_AE ## Min. : 34.00 Min. :12.00 Min. :2.074 Min. : 26.30 ## 1st Qu.: 52.00 1st Qu.:32.89 1st Qu.:4.542 1st Qu.: 42.83 ## Median : 58.50 Median :38.39 Median :5.644 Median : 54.60 ## Mean : 64.83 Mean :38.25 Mean :5.517 Mean : 56.81 ## 3rd Qu.: 70.75 3rd Qu.:45.63 3rd Qu.:6.549 3rd Qu.: 67.97 ## Max. :159.00 Max. :57.94 Max. :9.525 Max. :120.00
## NA's :20 NA's :18 NA's :4
## esforço_gradiente_médio_VM DeltaFC ## Min. : 6.00 Min. :13.00 ## 1st Qu.:13.80 1st Qu.:32.00 ## Median :18.90 Median :44.00 ## Mean :19.21 Mean :45.87 ## 3rd Qu.:24.67 3rd Qu.:61.00 ## Max. :41.00 Max. :99.00 ## NA's :2 NA's :1
Vamos explorar o comportamento da nossa resposta. par(mfrow=c(1,2))
hist(dados$esforço_PSAP,main="",xlab="",prob=TRUE,ylim=c(0,0.03));
lines(density(dados$esforço_PSAP,na.rm=TRUE),col=2)
Density
20
60
100
140
0.000
0.010
0.020
0.030
40
60
80
120
160
A distribuição da variável resposta não parece ser normal. Temos assimetria à direita e alguns outliers são evidenciados no boxplot. A seguir, teste de normalidade.
shapiro.test(dados$esforço_PSAP)
##
## Shapiro-Wilk normality test ##
## data: dados$esforço_PSAP
## W = 0.84579, p-value = 2.441e-09
Procedemos com o ajuste do modelo de regressão linear.
fit1 <- lm(esforço_PSAP~VD_FAC+Complacencia+volume_indexado_AE+esforço_gradiente_médio_VM+
DeltaFC, data=dados) summary(fit1)
## ## Call:
## lm(formula = esforço_PSAP ~ VD_FAC + Complacencia + volume_indexado_AE + ## esforço_gradiente_médio_VM + DeltaFC, data = dados)
##
## Residuals:
## Min 1Q Median 3Q Max
## -27.288 -9.206 -2.366 6.465 57.587 ##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## VD_FAC -0.54469 0.15607 -3.490 0.000753 *** ## Complacencia -2.01557 1.07825 -1.869 0.064870 . ## volume_indexado_AE 0.30046 0.08367 3.591 0.000539 *** ## esforço_gradiente_médio_VM 1.39185 0.23456 5.934 5.57e-08 *** ## DeltaFC 0.13110 0.08757 1.497 0.137906 ## ---## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ##
## Residual standard error: 14.71 on 89 degrees of freedom ## (35 observations deleted due to missingness)
## Multiple R-squared: 0.5457, Adjusted R-squared: 0.5202 ## F-statistic: 21.38 on 5 and 89 DF, p-value: 5.443e-14 A seguir, alguns gráficos de diagnóstico do modelo.
par(mfrow=c(2,2))
res.fit1 <- fit1$residuals
plot(res.fit1)
hist(res.fit1,main="",xlab="",prob=TRUE); lines(density(res.fit1),col=2)
boxplot(res.fit1,horizontal=FALSE) qqnorm(res.fit1)
0 20 40 60 80 −20 0 20 40 60 Index res .fit1 Density −20 0 20 40 60 0.000 0.010 0.020 0.030 −20 0 20 40 60 −2 −1 0 1 2 −20 0 20 40 60
Normal Q−Q Plot
Theoretical Quantiles Sample QuantilesOs gráficos apontam que o pressuposto de normalidade não foi atendido. Vamos ao teste. shapiro.test(res.fit1)
##
## Shapiro-Wilk normality test ##
## data: res.fit1
## W = 0.92779, p-value = 5.784e-05
Uma estratégia bastante comum para contornar o problema é fazer transformação na resposta. Considere a transformação inversa.
dados$esforço_PSAP_transf <- 1/dados$esforço_PSAP
summary(dados$esforço_PSAP_transf)
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's ## 0.006289 0.014135 0.017095 0.016603 0.019231 0.029412 20 par(mfrow=c(1,2))
hist(dados$esforço_PSAP_transf,main="",xlab="",prob=TRUE);
lines(density(dados$esforço_PSAP_transf,na.rm=TRUE),col=2)
boxplot(dados$esforço_PSAP_transf,horizontal=FALSE)
Density
0.005
0.015
0.025
0
20
40
60
80
0.010
0.020
0.030
shapiro.test(dados$esforço_PSAP_transf)
##
## Shapiro-Wilk normality test ##
## data: dados$esforço_PSAP_transf ## W = 0.9899, p-value = 0.5896
O teste não rejeita a hipótese nula de normalidade.
Considere o modelo linear ajustado à variável resposta transformada.
fit2 <- lm(esforço_PSAP_transf~VD_FAC+Complacencia+volume_indexado_AE+esforço_gradiente_médio_VM+
DeltaFC,data=dados)
par(mfrow=c(2,2))
res.fit2 <- fit2$residuals
plot(res.fit2)
hist(res.fit2,main="",xlab="",prob=TRUE); lines(density(res.fit2),col=2)
boxplot(res.fit2,horizontal=FALSE) qqnorm(res.fit2) qqline(res.fit2) 0 20 40 60 80 −0.010 0.000 0.005 Index res .fit2 Density −0.010 0.000 0.005 0.010 0 20 40 60 80 120 −0.010 0.000 0.005 −2 −1 0 1 2 −0.010 0.000 0.005
Normal Q−Q Plot
Theoretical Quantiles Sample Quantilesshapiro.test(res.fit2) ##
## Shapiro-Wilk normality test ##
## data: res.fit2
## W = 0.98577, p-value = 0.3969
Vemos que os resíduos do modelo ajustado à variável transformada se comportam de forma mais compatível com o padrão esperado. A seguir, o resumo do ajuste.
summary(fit2) ##
## Call:
## lm(formula = esforço_PSAP_transf ~ VD_FAC + Complacencia + volume_indexado_AE + ## esforço_gradiente_médio_VM + DeltaFC, data = dados)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.0101852 -0.0015491 -0.0000239 0.0018837 0.0083273 ##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.231e-02 2.445e-03 9.125 2.07e-14 *** ## VD_FAC 7.101e-05 3.142e-05 2.260 0.026245 * ## Complacencia 4.872e-04 2.170e-04 2.245 0.027264 * ## volume_indexado_AE -5.855e-05 1.684e-05 -3.476 0.000788 *** ## esforço_gradiente_médio_VM -2.824e-04 4.722e-05 -5.980 4.55e-08 *** ## DeltaFC -3.880e-05 1.763e-05 -2.201 0.030304 * ##
---## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ##
## Residual standard error: 0.002961 on 89 degrees of freedom ## (35 observations deleted due to missingness)
## Multiple R-squared: 0.5519, Adjusted R-squared: 0.5268 ## F-statistic: 21.93 on 5 and 89 DF, p-value: 2.991e-14 Considerações:
• Transformar a variável resposta resolve (em parte!) os problemas observados (normalidade, assimetria dos resíduos);
• A interpretação dos coeficientes de regressão não é mais tão simples;
• Vamos procurar modelos que acomodem as características observadas dos dados e ainda permitem interpretações simples dos coeficientes de regressão.
Exemplo 2: Qualidade de Vida em Pacientes com Doença de
Cha-gas
A doença de Chagas (DC) é uma doença tropical negligenciada. As manifestações clínicas podem causar limitação funcional e impactar a percepção da qualidade de vida (QV).
O estudo em questão teve como objetivo avaliar o perfil de qualidade de vida em pacientes com DC e sua relação com biomarcadores, aspectos clínicos e sociodemográficos.
Trata-se de um estudo transversal, utilizando a linha de base de um estudo de coorte conduzido no norte de Minas Gerais e Vale do Jequitinhonha, composto por 1959 pacientes com DC. Utilizou-se questionário clínico e sociodemográfico, e a escala WHOQOL-BREF para avaliar a QV.
O instrumento WHOQOL-BREF é validado para o Português e contém 26 questões. Destas, duas são genéricas (auto-avaliação sobre a qualidade de vida, e satisfação com a saúde). As outras 24 questões (avaliadas em escala Likert, valores de 1 a 5) são distribuídas em 4 domínios, a saber:
• Físico (sete questões) • Psicológico (seis questões) • Social (três questões) • Ambiental (oito questões)
Os escores para cada domínio são transformados em uma escala linear que varia de 0 a 100. Escores mais próximos de zero indicam pior qualidade de vida enquanto escores mais próximos de 100 indicam melhor qualidade de vida.
Na sequência, avaliamos o comportamento destes dados.
dados <- read.spss("Onda1 QV Jose Luis 02_10_17 com variavel marcapasso.sav", to.data.frame=TRUE) dim(dados)
## [1] 1076 101
#Cálculos dos escores domínios
dados$y1 <- with(dados,100*(((6-Q3)+(6-Q4)+Q10+Q15+Q16+Q17+Q18)*(4/7)-4)/16)
dados$y2 <- with(dados,100*((Q5+Q6+Q7+Q11+Q19+(6-Q26))*(4/6)-4)/16)
dados$y3 <- with(dados,100*(((Q20+Q21+Q22)*(4/3))-4)/16)
dados$y4 <- with(dados,100*((Q8+Q9+Q12+Q13+Q14+Q23+Q24+Q25)*(4/8)-4)/16)
escores <- with(dados,data.frame(y1,y2,y3,y4)) summary(escores)
## y1 y2 y3 y4
## Min. : 10.71 Min. : 20.83 Min. : 0.00 Min. :15.62 ## 1st Qu.: 46.43 1st Qu.: 58.33 1st Qu.: 66.67 1st Qu.:50.00 ## Median : 60.71 Median : 66.67 Median : 75.00 Median :59.38 ## Mean : 57.84 Mean : 65.98 Mean : 73.17 Mean :57.66 ## 3rd Qu.: 67.86 3rd Qu.: 75.00 3rd Qu.: 75.00 3rd Qu.:65.62 ## Max. :100.00 Max. :100.00 Max. :100.00 Max. :93.75
## NA's :451 NA's :451 NA's :452 NA's :451
A seguir são apresentados alguns gráficos. par(mfrow=c(2,2))
plot(table(round(escores$y1,2)),xlim=c(0,100),ylab="Domínio Físico",xaxt="n")
axis(1,at=seq(0,100,25),labels=seq(0,100,25))
plot(table(round(escores$y2,2)),xlim=c(0,100),ylab="Domínio Psicológico",xaxt="n")
axis(1,at=seq(0,100,25),labels=seq(0,100,25))
plot(table(round(escores$y3,2)),xlim=c(0,100),ylab="Domínio Social",xaxt="n") axis(1,at=seq(0,100,25),labels=seq(0,100,25))
plot(table(round(escores$y4,2)),xlim=c(0,100),ylab="Domínio Ambiental",xaxt="n") axis(1,at=seq(0,100,25),labels=seq(0,100,25)) 0 10 30 50 70 Domínio Físico 0 25 50 75 100 0 20 40 60 80 100 Domínio Psicológico 0 25 50 75 100 0 50 100 150 200 250 Domínio Social 0 25 50 75 100 0 20 40 60 Domínio Ambiental 0 25 50 75 100
Note que a variável resposta não é contínua por natureza. Para cada domínio, ela surge através de um processo de ‘linearização’ das somas dos escores de cada questão. Embora o modelo linear tenha sido aplicado em muitos trabalhos para avaliar a qualidade de vida, este não é adequado por conta da restrição natural das respostas entre 0 e 100.
A escolha natural para modelar a resposta seria considerar um modelo de regressão beta, ou seja, assumir yi∼B(µi, φ), i = 1, . . . , n tal que
sendo g(·) a função de ligação, µ = E(y), e φ o parâmetro de precisão. A densidade beta é definida para 0 < y < 1.
Considerações:
• Um modelo linear não é recomendado por conta da restrição natural das respostas.
• O modelo beta usual é adequado para respostas contínuas restritas no intervalo (0, 1). Os dados observados de qualidade de vida incluem os extremos.
• Faz-se necessário o uso de distribuições flexíveis que acomodem respostas dados nos extremos (p. ex., distribuições beta inflacionadas);
Exemplo 3: Análise Comportamental de Ovelhas
O objetivo do experimento foi investigar como a reatividade emocional influencia as respostas comportamentais de ovelhas.
O experimento foi realizado na fazenda experimental INRA La Fage, Roqueford, França em Setembro de 2015. 20 ovelhas com 15 meses de idade, não gestantes e não amamentando foram observadas. As ovelhas pertencem a 2 linhagens genéticas, uma mais reativa e outra menos reativa ao isolamento social. As vinte ovelhas foram submetidas à escovação por um humano que lhes era familiar.
A reatividade dos animais foi definida num experimento anterior no qual foram escolhidos 11 animais considerados pouco reativos e 9 considerados reativos ao isolamento social
Estes 20 animais foram alocados aleatoriamente em 4 grupos, de acordo com a linhagem genética. Os animais não tiveram contato visual com animais de outros grupos, porém podiam ouvi-los.
O experimento foi conduzido em três sessões:
• Sessão 1 - Com uma grade de metal separando o animal testado dos demais animais, sem distância entre eles.
• Sessão 2 - Com duas grades de metal separando o animal testado dos demais animais a uma distância de 1.7 m.
• Sessão 3 - Idêntica à sessão 1.
Além disso, as sessões de testes ocorreram dois dias após a fase de adaptação dos animais ao equipamento e aos humanos, cada animal foi observado em 3 fases diferentes:
• Fase 1 - Pré escovação, 2 minutos e 30 segundos • Fase 2 - Escovação, 3 minutos
• Fase 3 - Pós escovação, 2 minutos e 30 segundos Dois tipos de resposta foram observadas:
• dados de tempo nas posturas (proporções contínuas), com outras 9 respostas • dados de variação de postura (contagens), com 8 respostas observadas
Para fins ilustrativos, consideremos duas destas respostas.
i) Proporção contínua
Considere como resposta contínua a proporção do tempo em que o animal permaneceu com orelha levantada. prop <- read.csv2("DataProp.csv", header = T, sep = ';')
dim(prop) ## [1] 180 15
summary(prop$resporlev)
## Min. 1st Qu. Median Mean 3rd Qu. Max. ## 0.0000 0.1291 0.5596 0.5125 0.8691 1.0000
A variável resposta é naturalmente contínua. A seguir um histograma.
ggplot(prop, aes(x = resporlev)) + geom_histogram() + xlab('') + ylab('') + theme_bw()
0 5 10 15 20 25 0.00 0.25 0.50 0.75 1.00
Vemos que existe certa concentração de valores nos extremos da distribuição, inviabilizando o uso dos usuais modelos de regressão beta. As frequências de zero e um são:
c(sum(I(prop$resporlev==0)), sum(I(prop$resporlev==1)))
## [1] 20 10
Como dito, faz-se necessário o uso de modelos flexíveis que permitem acomodar tais dados. Pode-se ainda modelar a probabilidade de ocorrência destes comportamentos extremos em função de covariáveis.
A seguir são apresentados boxplots para as distribuições marginais das covariáveis e também gráficos de perfis.
g1<- ggplot(prop, aes(x=factor(grupo), y=resporlev, color=factor(grupo))) + geom_boxplot() +
xlab('Grupo')+ ylab('') + theme(legend.title=element_blank())
g2<- ggplot(prop, aes(x=sessao, y=resporlev, color=sessao)) + geom_boxplot()+ xlab('Sessão') +
ylab('') + theme(legend.title=element_blank())
g3<- ggplot(prop, aes(x=linhagem, y=resporlev, color=linhagem)) + geom_boxplot()+ xlab('Linhagem') +
ylab('') + theme(legend.title=element_blank())
g4<- ggplot(prop, aes(x=factor(temprec), y=resporlev, color=factor(temprec))) + geom_boxplot() +
xlab('Tempo')+ ylab('') + theme(legend.title=element_blank()) grid.arrange(g1, g2, g3, g4, ncol=2, nrow=2)
0.00 0.25 0.50 0.75 1.00 1 4 5 6
Grupo
1 4 5 6 0.00 0.25 0.50 0.75 1.00Se1 Se2 Se3
Sessão
Se1 Se2 Se3 0.00 0.25 0.50 0.75 1.00 s− s+Linhagem
s− s+ 0.00 0.25 0.50 0.75 1.00 1 2 3Tempo
1 2 3ggplot(prop, aes(x=factor(temprec), y=resporlev, color=linhagem)) + theme_bw() +
geom_line(aes(group=animal),size=1) + theme(legend.position = 'top') +
facet_wrap(~sessao) + xlab('Tempo') + geom_point()
Se1 Se2 Se3
1 2 3 1 2 3 1 2 3 0.00 0.25 0.50 0.75 1.00
Tempo
respor
le
v
linhagem
s− s+Como foram tomadas medidas repetidas em nível de animal é necessário modelar a dependência entre as observações. A inclusão de efeitos aleatórios permitirá acomodar a estrutura de correlação das respostas tomadas em cada ovelha.
ii) Contagens
Considere o número de mudanças de postura de cabeça.
count <- read.csv2("DataCont.csv", header = T, sep = ',') summary(count$ncabeca)
## Min. 1st Qu. Median Mean 3rd Qu. Max. ## 0.000 0.750 3.000 4.272 6.000 23.000
ggplot(count, aes(x = ncabeca)) + geom_bar() + xlab('')+ ylab('') + theme_bw()
0 10 20 30 40 0 5 10 15 20
Esta variável apresenta número elevado de zeros. Neste caso, a distribuição Poisson pode não resultar num ajuste satisfatório.
A seguir são apresentadas visualizações marginais da resposta em função de covariáveis e também gráficos de perfis.
g1<- ggplot(count, aes(x=factor(grupo), y=ncabeca, color=factor(grupo))) + geom_boxplot() +
xlab('Grupo')+ ylab('') + theme(legend.title=element_blank())
g2<- ggplot(count, aes(x=sessao, y=ncabeca,color=sessao)) + geom_boxplot()+ xlab('Sessão') +
ylab('') + theme(legend.title=element_blank())
g3<- ggplot(count, aes(x=linhagem, y=ncabeca, color=linhagem)) + geom_boxplot()+ xlab('Linhagem') +
ylab('') + theme(legend.title=element_blank())
g4<- ggplot(count, aes(factor(temprec), y=ncabeca, color=factor(temprec))) + geom_boxplot() +
xlab('Tempo')+ ylab('') + theme(legend.title=element_blank()) grid.arrange(g1, g2, g3, g4, ncol=2, nrow=2)
0 5 10 15 20 1 4 5 6
Grupo
1 4 5 6 0 5 10 15 20Se1 Se2 Se3
Sessão
Se1 Se2 Se3 0 5 10 15 20 s− s+Linhagem
s− s+ 0 5 10 15 20 1 2 3Tempo
1 2 3ggplot(count, aes(x=factor(temprec), y=ncabeca, color=linhagem)) + theme_bw() +
geom_line(aes(group=animal),size=1) + theme(legend.position = 'top') +
facet_wrap(~sessao) + xlab('Tempo') + geom_point()
Se1 Se2 Se3
1 2 3 1 2 3 1 2 3 0 5 10 15 20
Tempo
ncabeca
linhagem
s− s+A variabilidade é a mesma entre os grupos reativos e não reativos? Questões como essa podem ser respondidas aplicando modelos GAMLSS aos dados.
Exemplo 4: Valores das medidas eletrocardiográficas de adultos
brasileiros sem doença cardiovascular estabelecida: ELSA-Brasil
O eletrocardiograma (ECG) é uma ferramenta amplamente utilizada em estudos epidemiológicos, mas existem poucos estudos de base populacional na América Latina e no Brasil descrevendo os seus resultados. O Estudo Longitudinal de Saúde do Adulto (ELSA-Brasil), que incluiu 15105 participantes (35 - 74 anos) de seis capitais brasileiras, permitiu a criação de base de dados eletrocardiográficos dessa amostra.
O objetivo deste estudo é descrever as medidas eletrocardiográficas em adultos brasileiros não portadores de doença cardiovascular.
Estudo transversal com dados da linha de base do ELSA-Brasil referentes a 11.094 (44,5% homens) adultos sem doença cardiovascular prevalente. Dentre as variáveis consideradas de importância no ECG estão a frequência cardíaca, da duração das ondas P, QRS e T, dos intervalos PR e QT, assim como dos eixos de P, R e T.
Uma análise descritiva foi realizada estratificando por idade e raça. Os percentis relevantes para as medidas eletrocardiográficas foram calculados para cada combinação de idade raça. Os gráficos resultantes são mostram a evolução destas medidas por meio de curvas suavizadas, obtidas pelo método loess.
A título de ilustração, considere a variável intervalo QT corrigido pela fórmula de Hodges, mostrado na figura a seguir.
knitr::include_graphics("QTcHodges.png")
Utilizando o framework GAMLSS podemos ajustar curvas centílicas para estimar a distribuição das medidas eletrocardiográficas em função da idade.
Diferente de métodos tradicionais de regressão em que o interesse reside na estimação da média condicional da variável resposta dados os valores de variáveis preditoras, a regressão quantílica objetiva estimar a mediana condicional ou outros quantis da variável resposta.
Exemplo 5: Dados de cultura de ápices caulinares de maçã
Os dados são provenientes de um experimento envolvendo a variedade Trajan (uma variedade colunar). Ápices caulinares de comprimento 1-1,5 cm foram colocados em recipientes em um meio padrão de cultura. Todas as condições foram mantidas idênticas, a menos de concentrações de um hormônio e fotoperíodo. Foram usadas quatro concentrações do hormônio BAP (um hormônio de crescimento vegetal) e duas câmeras de crescimento, uma com fotoperíodo de 8h e outra com 16h. Assim, o experimento teve um desenho fatorial 4 × 2.
O objetivo do experimento foi verificar o efeito dos dois fatores (concentração de BAP e duração do fotoperíodo) no número de raízes produzidas. A descrição detalhada do experimento pode ser encontrada em Marin et al
(1993).
Os dados encontram-se resumidos na tabela a seguir.
Fotoperíodo 8 16 BAP (µM) 2.2 4.4 8.8 17.6 2.2 4.4 8.8 17.6 N raízes 0 0 0 0 2 15 16 12 19 1 3 0 0 0 0 2 3 2 2 2 3 1 0 2 1 2 2 3 3 0 2 2 2 1 1 4 4 6 1 4 2 1 2 2 3 5 3 0 4 5 2 1 2 1 6 2 3 4 5 1 2 3 4 7 2 7 4 4 0 0 1 3 8 3 3 7 8 1 1 0 0 9 1 5 5 3 3 0 2 2 10 2 3 4 4 1 3 0 0 11 1 4 1 4 1 0 1 0 12 0 0 2 0 1 1 1 0 >12 13, 17 13 14 14 Média 5.8 7.8 7.5 7.2 3.3 2.7 3.1 2.5 Variância 14.1 7.6 8.5 8.8 16.6 14.8 13.5 8.5
A primeira escolha para modelar dados de contagem é assumir Y ∼ P oisson(λ), que tem como propriedade E(Y ) = λ = V ar(Y ). Note que tal relação média-variância não se mantém para estes dados. Há excesso de zeros para o fotoperíodo de 16h, o que indica a necessidade de modelos inflacionados que acomodem tal característica.
A seguir são apresentados gráficos de barras do número de raízes para cada fotoperíodo. Trajan <- read.table("TrajanData.csv",sep=";",h=TRUE)
Trajan$photo <- relevel(Trajan$photo,ref="8h")
ggplot(Trajan, aes(x=roots, y=freq)) + geom_bar(stat="identity") + facet_grid(~photo) +
8h 16h 0 5 10 15 0 5 10 15 0 20 40 60
Número de raízes
Frequência
O pacote gamlss implementa uma variedade de distribuições que podem ser usadas para tratar dados de contagem, dados com inflação de zeros e superdispersão. Algumas possibilidades incluem:
• PO: distribuição Poisson (um parâmetro)
• NBI: distribuição Binomial Negativa (dois parâmetros)
• ZIP: distribuição Poisson inflacionada de zeros (dois parâmetros)
• ZINB: distribuição Binomial Negativa inflacionada de zeros (três parâmetros)
• ZIPIG: distribuição Poisson Inversa Gaussiana inflacionada de zeros (três parâmetros) Como ilustração, considere os dados para o fotoperíodo de 16h.
Trajan18h <- Trajan %>% filter(photo == "16h")
A tabela a seguir mostra as frequências observadas e estimadas resultantes de cada ajuste marginal, juntamente com o AIC dos modelos.
Frequências Ajustadas N raízes Observado PO NBI ZIP ZINB ZIPIG
0 62 7.4 55.8 62 62 62 1 7 21.3 19.8 1.6 5.1 4.8 2 7 30.4 12.2 4.4 7.6 7.6 3 8 29 8.6 7.9 8.9 9.1 4 8 20.8 6.4 10.8 9.1 9.3 5 6 11.9 4.9 11.8 8.4 8.5 6 10 5.7 3.9 10.7 7.2 7.2 7 4 2.3 3.1 8.3 5.8 5.8 8 2 0.8 2.5 5.7 4.5 4.5 9 7 0.3 2.1 3.4 3.4 3.4 10 4 0.1 1.7 1.9 2.5 2.4 11 2 0 1.4 0.9 1.8 1.7 >12 3 0 5.8 0.7 3.6 3.7 AIC 1824 1467 1382 1359 1361 Estes resultados podem ser melhor visualizados na figura a seguir.
0 2 4 6 8 11 PO 0.0 0.1 0.2 0.3 0.4 0 2 4 6 8 11 NBI 0.0 0.1 0.2 0.3 0.4 0 2 4 6 8 11 ZIP 0.0 0.1 0.2 0.3 0.4 0 2 4 6 8 11 ZINBI 0.0 0.1 0.2 0.3 0.4 0 2 4 6 8 11 ZIPIG 0.0 0.1 0.2 0.3 0.4