Cuando se trabaja con datos que presentan mucha asemetría, muchas veces es conveniente transformarlos para que sea más facil modelarlos. Existen distintas técnicas que pueden utilizarse cuando muchos de los datos se concentran en un extremo de la distribución y todos los valores son positivos. Una de estas técnicas comúnmente utilizadas es la transformación logarítmica.
Utilizaremos como ejemplo un conjunto de datos obtenidos de Gapminder que incluye información de 142 países sobre expectativa de vida, ingreso per cápita, y población de 1952 a 2007. Para ello debemos bajar el conjunto de datos que se encuentra disponible en el repositorio de Github de la Dra. Jenny Bryan con el siguiente comando:
devtools::install_github("jennybc/gapminder")
Una vez bajado el conjunto de datos lo cargamos en la memoria:
gapminder <- gapminder::gapminder
Este es un buen momento para conocer el conjunto de datos con comandos tales como str(), head() y summary().
Empezaremos por extraer los datos acerca de población (número de habitantes) en 1952 y crear un vector pop con esos datos:
pop <- gapminder$pop[gapminder$year == 1952]
Vamos a crear un histograma con estos datos:
hist(pop, main = "", xlab = "Población", ylab = "Frecuencia")
Vemos que el histograma presenta una fuerte asimetría izquierda, como es esperable (la razón de ésto debería ser evidente). Un gráfico Q-Q normal nos muestra que estos datos no siguen una distribución normal.
qqnorm(pop, main = "", xlab = "Cuantiles teóricos", ylab = "Cuantiles muestrales")
qqline(pop)
Esto es más fácil de visualizar si creamos un histograma de densidad y le suporponemos una curva de distribución normal (en azul):
hist(pop, probability = TRUE, main = "", xlab = "Población", ylab = "Densidad")
x <- seq(min(pop), max(pop), length = 1000)
y <- dnorm(x, mean(pop), sd(pop))
lines(x, y, col = "blue")
Sin embargo, como había mencionado al principio, muchas veces es conveniente transformar los datos para que aproximen a una distribución normal. En este caso en particular lo podemos hacer transformando el vector pop a una escala logarítmica con:
logpop <- log(pop)
Al crear un histograma con estos datos transformados vemos que la distribución se aproxima a una distribución normal.
hist(logpop, main = "", xlab = "log Población", ylab = "Frecuencia")
Un gráfico Q-Q normal nos muestra que esta distribución transformada se acerca bastante a una distribución normal.
qqnorm(logpop, main = "", xlab = "Cuantiles teóricos", ylab = "Cuantiles muestrales")
qqline(logpop)
Como en el caso de la distribución no transformada, esto es más fácil de visualizar si creamos un histograma de densidad de la distribución transformada y le suporponemos una curva de distribución normal (en rojo):
hist(logpop, probability = TRUE, main = "", xlab = "log Población", ylab = "Densidad")
x <- seq(min(logpop), max(logpop), length = 1000)
y <- dnorm(x, mean(logpop), sd(logpop))
lines(x, y, col = "red")
En este caso, hemos utilizado la transformación logarítmica para transformar una distribución con asimetría izquierda en una distribución prácticamente normal. Una vez más, debería ser evidente el por qué esto es conveniente.
Usando el mismo conjunto de datos, responde las siguientes preguntas: