modelagem (com glmer) depois de scale() de variáveis contínuas

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@ipec.fiocruz.br e-mail: emmanuel.brasil@gmail.com

A padronização é uma maneira de reduzir a multicolinearidade entre as variáveis que definem a matriz do seu modelo. Os algoritmos de otimização são ganham performance ou são mais bem sucedidos quando a função objetivo é orotogonal em seus argumentos (os parâmetros no caso). Em outras palavras, ter uma matriz X com colunas ortogonais implica que X'X seja diagonal. X'X, e/ou sua inversa, surge nas derivadas parciais para montar o hessiano usando em métodos Newton Raphson. Os livros mais antigos de estatística experimental inclusive trazem tabelas de polinômios ortogonais que era o que permitia ajustar se polinômios de grau superior a dois na época com pouco recurso computacional disponível. Se você padroniza (média 0 variância 1) uma variável para usá-la num modelo, como trata se de uma transformação linear, as medidas de ajuste do modelo são as mesmas. O que precisa ser feito é na hora da predição, ao criar o grid de valores para predizer subtrair da média e dividir pelo desvio padrão dos dados passador para o modelo. A interpretação dos betas também muda. Se beta_1 = 2 entoa isso é a mudança em y para uma unidade na escala padronizada de x, quantas unidades de x original são necessárias para dar uma unidade padronizada calcula a partir da média e desvio padrão usados ao padronizar. À disposição. Walmes. -- ========================================================================== Walmes Marques Zeviani LEG (Laboratório de Estatística e Geoinformação, 25.450418 S, 49.231759 W) Departamento de Estatística - Universidade Federal do Paraná fone: (+55) 41 3361 3573 skype: walmeszeviani homepage: http://www.leg.ufpr.br/~walmes linux user number: 531218 ==========================================================================
participantes (2)
-
Pedro Emmanuel Alvarenga Americano do Brasil
-
walmes .