2 votos

R powerTransform falla en datos aparentemente correctos

Tengo problemas con powerTransform - por ejemplo, acaba de fallar en la transformación de una variable perfectamente ordinaria (para mí), con el siguiente error

Error in optim(start, llik, hessian = TRUE, method = method, ...) :
  L-BFGS-B needs finite values of 'fn'

Aquí están los datos: http://www.tropic.org.uk/~crispin/boxcoxerror

> require(car)
> data = read.table("boxcoxerror")
> mean(data)
      V1
39401.55
> sd(data)
     V1
5381.04
> powerTransform(data$V1)
Error in optim(start, llik, hessian = TRUE, method = method, ...) :
  L-BFGS-B needs finite values of 'fn'

¿Alguna pista?

3voto

Ben Bolker Puntos 8729

No estoy muy seguro de qué es lo que tiene de divertido estos datos: no parecen Impares en ningún sentido en particular (el coeficiente de variación es razonable, no hay nada llamativamente extraño en el histograma...) Sin embargo, aquí hay algunas rutas posibles hacia adelante.

require(car)
bcdata = unlist(read.table(url("http://www.tropic.org.uk/~crispin/boxcoxerror")))
mean(bcdata)
sd(bcdata)
hist(bcdata,freq=FALSE)
lines(density(bcdata))

Reproducir el error (R 2.14.1, Linux de 32 bits)

powerTransform(bcdata)

L-BFGS-B, el optimizador utilizado internamente, es notoriamente sensible a los problemas de escala. Esto parece funcionar:

powerTransform(bcdata/1000)

Curiosamente, boxcox también da respuestas muy diferentes en función de la escala:

m <- MASS::boxcox(lm(bcdata~1),lambda=seq(-4,2,by=0.05))
m2 <- MASS::boxcox(lm(bcdata/1000~1),lambda=seq(-8,2,by=0.05))
m2$x[which.max(m2$y)]  ## agrees pretty well with powerTransform()

La otra cosa que me preocupa es que la transformación de potencia que se sugiere es tan extrema: ¿realmente necesitamos una potencia de casi -5 para normalizar estos datos?

Tal vez alguien que piense más detenidamente en los detalles analíticos reales de las transformaciones de Box-Cox/poder pueda explicar lo que ocurre aquí.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X