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