[R-br] modelagem (com glmer) depois de scale() de variáveis contínuas
Pedro Emmanuel Alvarenga Americano do Brasil
emmanuel.brasil em gmail.com
Sexta Julho 11 13:20:55 BRT 2014
Amigos de R,
Eu estou tentando fazer uma modelagam logistica multinível com com alguns
modelos especificados a priori. São sete ao total. Em 5 deles aparece o
seguinte aviso.
> ptm <- Sys.time()
> f6a <- glmer(Hosp.Death ~ Adm.Diag.Class + SAPS3PT +
Chron.Health.Status.Rev + LogNDiasantesICU + V2.Total.interact +
Accredited.YN + Resid.UTI + MedSurg.ICU + ICUbed1020 + HCP.Cover.Class + (1
| ICUCode), data = b, family = binomial,nAGQ=1) #
Warning message:
In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, :
Model is nearly unidentifiable: very large eigenvalue
- Rescale variables?
> Sys.time() - ptm
Time difference of 14.5636 mins
Infelizmente o modelo não diz quais as variáveis que estão atrapalhando mas
eu suspeito de duas das quatro que há no modelo. Eu coloquei esse erro no
google e apareceram alguns comentários do desenvolvedor no StackOverflow
que eu achei interessantes. Na essência, ele faz uma recodificação sugerida
pelo aviso com a função base::scale() que centraliza a distibuição das
variáveis continuas dessa forma:
> z <- b
> z[,numcols] <- scale(z[,numcols])
> summary(z[,numcols])
Age SOFAPT SAPS3PT HospDayPriorICU
Min. :-2.4008 Min. :-0.7762 Min. :-2.5456 Min. : -0.06196
1st Qu.:-0.6911 1st Qu.:-0.7762 1st Qu.:-0.6716 1st Qu.: -0.06196
Median : 0.1378 Median :-0.4487 Median :-0.1362 Median : -0.06196
Mean : 0.0000 Mean : 0.0000 Mean : 0.0000 Mean : 0.00000
3rd Qu.: 0.8113 3rd Qu.: 0.5336 3rd Qu.: 0.6000 3rd Qu.: -0.03865
Max. : 2.5210 Max. : 6.0999 Max. : 5.9542 Max. :222.87390
> summary(b[,numcols])
Age SOFAPT SAPS3PT HospDayPriorICU
Min. : 16.00 Min. : 0.00 Min. : 5.00 Min. : 0.000
1st Qu.: 49.00 1st Qu.: 0.00 1st Qu.: 33.00 1st Qu.: 0.000
Median : 65.00 Median : 1.00 Median : 41.00 Median : 0.000
Mean : 62.34 Mean : 2.37 Mean : 43.03 Mean : 2.653
3rd Qu.: 78.00 3rd Qu.: 4.00 3rd Qu.: 52.00 3rd Qu.: 1.000
Max. :111.00 Max. :21.00 Max. :132.00 Max. :9564.000
Em seguida fazer um update do modelo com os novos dados. O que remove os
avisos e
> f6az <- update(f6a,data=z)
Olhando o summary dos dois modelos, na essência é o mesmo modelo com o
mesmo AIC, BIC, com a mesma variação do efeito aleatório e as mesma
variáveis significativas no efeito fixo. Na verdade então eu nem sei muito
bem porque o autor recomendaria essa transformação. Mas agora que eu quero
fazer umas análises de previsões medias por grupos marginalizando a
variação do efeito aleatório, a pergunta é como fazer a destranformação do
scale(), ou seja, qual seria a correspondência dos valores dados pelo scale
e os valores originais da escala da variável?
Dei uma olhada na documentação da função scale() e entendi que essa
centralização ocorre subtraindo-se os valores da média e depois
dividindo-se pelo sd(). Assim, entendo que a "destroanformação" seria
multiplicando-se pelo sd() e adicionando-se a média. Dessa forma bateu com
os valores originais.
> as.vector(scale(b$SAPS3PT[1:30])) * sd(b$SAPS3PT[1:30]) +
mean(b$SAPS3PT[1:30])
[1] 64 37 59 42 32 51 69 58 55 28 29 65 43 54 51 50 52 57 16 56 46 56 34
31 81
[26] 85 61 80 26 80
> b$SAPS3PT[1:30]
[1] 64 37 59 42 32 51 69 58 55 28 29 65 43 54 51 50 52 57 16 56 46 56 34
31 81
[26] 85 61 80 26 80
Como eu nunca fiz isso antes, eu queria saber se voces acham que essa
centralização das variáveis contínuas é razoável, se a destransformação é
assim mesmo e se fariam essa análise de forma diferente?
Abraços,
Dr. Pedro Emmanuel A. A. do Brasil
http://blog.ipec.fiocruz.br/lapclin-chagas/
Curriculum Lattes: http://lattes.cnpq.br/6597654894290806
ResearchGate.net: https://www.researchgate.net/profile/Pedro_Brasil2/
Instituto Nacional de Infectologia/Instituto de Pesquisa Clínica Evandro
Chagas
Fundação Oswaldo Cruz
Rio de Janeiro - Brasil
Av. Brasil 4365,
CEP 21040-360,
Tel 55 21 3865-9648
e-mail: pedro.brasil em ipec.fiocruz.br
e-mail: emmanuel.brasil em gmail.com
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20140711/3995d600/attachment.html>
Mais detalhes sobre a lista de discussão R-br