0% encontró este documento útil (0 votos)
46 vistas32 páginas

4-2 Transformaciones

El documento aborda la transformación y escalamiento de datos, destacando la importancia de la normalización para cumplir con supuestos estadísticos. Se presentan métodos como la transformación de Box-Cox y Yeo-Johnson, junto con ejemplos prácticos en R para aplicar estas técnicas a datos de calorías en alimentos. Además, se discuten pruebas de normalidad y la eliminación de valores atípicos para mejorar la calidad del análisis.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
46 vistas32 páginas

4-2 Transformaciones

El documento aborda la transformación y escalamiento de datos, destacando la importancia de la normalización para cumplir con supuestos estadísticos. Se presentan métodos como la transformación de Box-Cox y Yeo-Johnson, junto con ejemplos prácticos en R para aplicar estas técnicas a datos de calorías en alimentos. Además, se discuten pruebas de normalidad y la eliminación de valores atípicos para mejorar la calidad del análisis.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

TRANSFORMACIÓN

Y ESCALAMIENTO
Transformación
busca la modificación de la distribución de
los datos, generalmente a una distribución
Normal. La nueva variable puede tener
comportamiento totalmente diferente a la
TRANSFORMACIÓN original.

Y ESCALAMIENTO

Escalamiento
busca poder comparar variables con
diferentes escalas mediante modificaciones
de escala y desplazamientos, sin
modificación de la distribución.
Transformaciones
Normalización de datos
El objetivo de la transformación es lograr que los datos sigan una
distribución particular, generalmente, la distribución Normal. En el
análisis de datos un supuesto importante es la normalidad de los datos
(Regresión, ANOVA). Para saber qué transformación es mejor, su
utilizan los algoritmos de transformación Box-Cox y las
transformaciones de potencia.
Ambos se basan en la maximización de la función de verosimilitud de
la transformación propuesta.
Normalización de datos
Transformación de Box-Cox
Es una familia de funciones indexadas por el parámetro λ. Para una variable x:

𝑥𝜆 − 1
𝑓 𝑥, 𝜆 = ൞ 𝜆 𝜆≠0
log(𝑥) 𝜆 = 0

La cuestión clave es cómo seleccionar el valor de λ.


Box y Cox propusieron usar la estimación de máxima
verosimilitud para hacerlo.

En R:
• Se usa la biblioteca MASS
• Para transformar una sola variable x:
boxcox(lm(x~1))
• Para transformar una relación entre y y x:
boxcox(lm(y~x))
• La variable y o x debe ser positiva para poder
maximizar la función de verosimilitud. Se puede
recurrir a una traslación del eje (x+1, por ejemplo).
Normalización de datos
Transformación de Box-Cox

Ejemplo con la variable Calorías (Base de datos de calorías en los


alimentos en McDonald) que tiene algunos valores con cero calorías, por
tanto fue necesario hacer una translación:

library(MASS)
bc<-boxcox((M1[ ,1]+1)~1)
l=bc$x[[Link](bc$y)]
El valor de λ que
maximiza la función
de verosimilitud es
0.5858586

De manera práctica, la
transformación que se
puede usar es:
𝑥1 = 𝑥 + 1

O bien con el valor


exacto:
(𝑥 + 1)0.59 −1
𝑥2 =
0.59
Código en R:
cal1=sqrt(M1[ ,1]+1)
cal2=((M1[ ,1]+1)^l-1)/l Transformación de Box-Cox
par(mfrow=c(3,1))
hist(cal1,col=0,main="Histograma de Cal 1")
hist(cal2,col=0,main="Histograma de Cal 2")
hist(M1[ ,1],col=0,main="Histograma de Calorías")

𝒄𝒂𝒍𝟏 = 𝒙 + 𝟏

(𝒙 + 𝟏)𝟎.𝟓𝟗 −𝟏
𝒄𝒂𝒍𝟐 =
𝟎. 𝟓𝟗

Original
library(e1071)
summary(variable) Transformación de Box-Cox
print("Curtosis")
kurtosis(variable) Prueba de Normalidad
print("Sesgo") library(nortest)
skewness(variable) D=[Link](variable)
D$[Link]
Transformación 1
(aproximada)

𝒄𝒂𝒍𝟏 = 𝐱 + 𝟏
Valor p:
0.0003665759

Transformación 2
(exacta)

(𝐱 + 𝟏)𝟎.𝟓𝟗 −𝟏
𝒄𝒂𝒍𝟐 =
𝟎. 𝟓𝟗 Valor p:
4.169558e-07

Original (x)

Valor p:
2.369e-06
Código en R:
cal1=sqrt(M1[ ,1]+1)
cal2=((M1[ ,1]+1)^l-1)/l Transformación de Box-Cox
par(mfrow=c(3,1))
hist(cal1,col=0,main="Histograma de Cal 1")
hist(cal2,col=0,main="Histograma de Cal 2")
hist(M1[ ,1],col=0,main="Histograma de Calorías")

𝒄𝒂𝒍𝟏 = 𝒙 + 𝟏

(𝒙 + 𝟏)𝟎.𝟓𝟗 −𝟏
𝒄𝒂𝒍𝟐 =
𝟎. 𝟓𝟗

Los ceros están


influyendo en el modelo.
Como cero calorías
corresponde a agua y Original
refrescos sin azúcar,
optamos por quitarlos del
conjunto de datos
Quitando los alimentos que tienen cero calorías: Quitando los ceros
M2=subset(M1,M1$[Link]>0)

par(mfrow=c(2,1))
boxplot(M1$[Link], horizontal = TRUE,col="pink", main="Calorias de los alimentos en
McDonalds")
boxplot(M2$[Link], horizontal = TRUE,col="green", main="Calorias de los alimentos en
McDonalds sin ceros")
Quitando los ceros
Transformación de Box-Cox

Ejemplo con la variable Calorías quitando los alimentos que tienen cero calorías:

library(MASS)
M2 = subset(M1,M1$[Link]>0)
bc<-boxcox((M2[ ,1])~1)
l = bc$x[[Link](bc$y)]
El valor de λ que
maximiza la función
de verosimilitud es
0.34343434

De manera práctica, la
transformación que se
puede usar es:
𝑥1 = 𝑥

O bien con el valor


exacto:
𝑥 0.3434 − 1
𝑥2 =
0.343434
Código en R:
cal1=sqrt(M2[ ,1])
cal2=(M2[ ,1]^l-1)/l Quitando los ceros
par(mfrow=c(3,1))
hist(cal1,col=0,main="Histograma de Cal 1") Transformación de Box-Cox
hist(cal2,col=0,main="Histograma de Cal 2")
hist(M2[ ,1],col=0,main="Histograma de Calorías")

𝒄𝒂𝒍𝟏 = 𝒙

𝒙𝟎.𝟑𝟒𝟑𝟒 − 𝟏
𝒄𝒂𝒍𝟐 =
𝟎. 𝟑𝟒𝟑𝟒𝟑𝟒

Original
Prueba de Normalidad
library(nortest) Quitando los ceros
D0=[Link](M2[,1])
D1=[Link](cal1) Transformación de Box-Cox
D2=[Link](cal2)

Resumen de medidas
library(e1071)
m0=round(c([Link](summary(M2[ ,1])),kurtosis(M2[ ,1]),skewness(M2[ ,1]),D0$[Link]),3)
m1=round(c([Link](summary(cal1)),kurtosis(cal1),skewness(cal1),D1$[Link]),3)
m2=round(c([Link](summary(cal2)),kurtosis(cal2),skewness(cal2),D2$[Link]),3)

Tabla
m<-[Link](rbind(m0,m1,m2))
[Link](m)=c("Original","Primer modelo","Segundo Modelo")
names(m)=c("Minimo","Q1","Mediana","Media","Q3","Máximo","Curtosis","Sesgo","Valor p")

𝒙𝟎.𝟑𝟒𝟑𝟒 − 𝟏
𝒄𝒂𝒍𝟏 = 𝒙 𝒄𝒂𝒍𝟐 =
𝟎. 𝟑𝟒𝟑𝟒𝟑𝟒
Modelo 1 Modelo 2
Transformaciones
Transformación Yeo Johnson
Yeo y Johnson indican que los valores de y debe acotarse. Proponen la
siguiente transformación:

(𝑥 + 1)𝜆 −1
𝑥 ≥0𝑦𝜆 ≠0
𝜆
log(𝑦 + 1) 𝑥 ≥0𝑦𝜆 =0
𝑓 𝑥, 𝜆 =
−𝑥 + 1 2−𝑥 − 1 𝑥 < 0 𝑦 𝜆 ≠ 2
2−𝑥
−log(−𝑥 + 1) 𝑥 < 0, 𝜆 = 2

Como Box y Cox la estimación de λ se realiza usando máxima


verosimilitud.

En R:
• Se usa la biblioteca VGAM
• Se require un valor de lambda que generalmente se
obtiene de la transformación de Box-Cox
• La variable y o x puede tomar cualquier valor
Código en R:
library(VGAM) Transformación de Yeo-Johnson
cal3<- [Link](M2[ ,1], lambda = l)
OJO: se está usando la lambda l encontrada en la transformación de Box-Cox. Lambda toma valores entre -2 y 2, ensaya
con distintos valores de lambda y quedarte con el que mejor pase normalidad.

𝒙𝟎.𝟑𝟒𝟑𝟒 − 𝟏
𝒄𝒂𝒍𝟐 =
𝟎. 𝟑𝟒𝟑𝟒𝟑𝟒

Original
For para obtener el valor de l, Código en R
lambda, que maximiza el valor p en Gráfica de lambda (l) contra valor p
la prueba de normalidad

library(VGAM) N=[Link](D)
lp <- seq(0,1,0.001) # Valores de lambda propuestos plot(N$Lambda,N$`Valor-p`, type="l",
nlp <- length(lp) col="darkred", lwd=3,
n=length(M2[ ,1]) xlab="Lambda",
D <- matrix([Link](NA),ncol=2,nrow=nlp) ylab="Valor p (Normalidad)")
d <-NA
for (i in 1:nlp){
d= [Link](M2[ ,1], lambda = lp[i]) Transformación de
p=[Link](d)
D[i,]=c(lp[i],p$[Link])} Yeo-Johnson
Transformación de Yeo-Johnson

Valor de lambda (l) que maximiza el valor p


G=[Link](subset(N,N$`Valor-p`==max(N$`Valor-p`)))
Código en R: Transformación de Yeo-Johnson
par(mfrow=c(2,1))
hist(cal3,col=0,main="Histograma de Cal 3") (sin ceros)
hist(M2[,1],col=0,main="Histograma de Calorías",xlab="Calorías")

(𝒙 + 𝟏)𝟎.𝟑𝟕𝟑 −𝟏
𝒄𝒂𝒍𝟑 =
𝟎. 𝟑𝟕𝟑

Original
library(e1071)
summary(variable)
print("Curtosis") Transformación de Yeo-Jhonson
kurtosis(variable)
print("Sesgo")
skewness(variable)

Transformación 3
(exacta)

(𝐱 + 𝟏)𝟎.𝟑𝟕𝟑 −𝟏
𝒄𝒂𝒍𝟑 =
𝟎. 𝟑𝟕𝟑

Original (x)

Nota: Observa que corrimos la prueba de Yeo-Jhonson sin ceros


Logarítmica
Transformaciones de
𝑦 = 𝑙𝑜𝑔𝑏 (𝑥 + 𝑎)
función Potencia
Radical
𝑏
El comando powerTransform maximiza 𝑦= 𝑥+𝑎
la función de verosimilitud explorando
distintas transformaciones de potencia. Inverso
Usa la transformación de Yeo-Johnson 𝑎
como una generalización de la de Box- 𝑦=
𝑥𝑏
Cox y de toda la familia de potencias. Potencia
De manera que encuentra la mejor
lambda bajo ambas transformaciones de 𝑦 = (𝑥 + 𝑎)𝑏
potencia tomando como criterio la Box-Cox
verosimilitud.
𝑥𝜆 − 1
𝑓 𝑥, 𝜆 = ൞ 𝜆 𝜆≠0
log(𝑥) 𝜆 = 0
Código en R Yeo-Johnson
library(car)
yj = powerTransform(M2[ ,1], family = "yjPower") (𝑥 + 1)𝜆 −1
𝑥 ≥0𝑦𝜆≠0
yj$lambda 𝜆
log(𝑦 + 1) 𝑥 ≥0𝑦𝜆=0
𝑓 𝑥, 𝜆 = 2−𝑥
−𝑥 + 1 −1 𝑥 <0𝑦𝜆≠2
2−𝑥
−log(−𝑥 + 1) 𝑥 < 0, 𝜆 = 2
Código en R:
l4 = yj$lambda Transformaciones de potencia
cal4 = ((M2[ ,1]+1)^l4-1)/l4
par(mfrow=c(2,1)) (sin ceros)
hist(cal4,col=0,main="Histograma de Cal 4")
hist(M2[ ,1],col=0,main="Histograma de Calorías",xlab="Calorías")

(𝒙 + 𝟏)𝟎.𝟑𝟒𝟖 −𝟏
𝒄𝒂𝒍𝟒 =
𝟎. 𝟑𝟒𝟖

Original
library(e1071)
summary(variable)
print("Curtosis")
kurtosis(variable)
Transformaciones de
print("Sesgo")
skewness(variable)
potencia

Transformación 4
(exacta)

(𝐱 + 𝟏)𝟎.𝟑𝟒𝟖 −𝟏
𝒄𝒂𝒍𝟒 =
𝟎. 𝟑𝟒𝟖

Original (x)
Diferentes pruebas de normalidad para las distintas transformaciones
H0: La variable X sigue una distribución normal: 𝑋~𝑁 𝜇, 𝜎
H1: La variable X no sigue una distribución normal

Modelo 1 Modelo 2 Modelo 3 Modelo 4


Prueba Hipótesis Calorías
𝐶𝑎𝑙1 = 𝐶𝑎𝑙 𝜆2 =0.3434 𝜆3 =0.373 𝜆4 =0.3478
Anderson Estadístico 3.776 0.4207 0.2903 0.2784* 0.2844
Darling Valor p 0.000 0.3218 0.6087 0.6468* 0.6273
Estadístico 636.7458 19.3577 5.9348 6.476 5.8174*
Jarque-Bera
Valor p 0.000 0.0001 0.0514 0.0392 0.0545*

Kolmogorov Estadístico 0.0868 0.0395 0.0364 0.0352* 0.0357


Smirnov Valor p 0.0001 0.4649 0.5976 0.6527* 0.6288

Shapiro-Wilk Estadístico 0.8935 0.9861 0.9924 0.9923 0.9925*


(n<50) Valor p 0.000 0.0176 0.2468 0.2346 0.2577*

Cramer Estadístico 0.5816 0.0563 0.0394 0.0369* 0.0385


Von Mises Valor p 0.000 0.4219 0.6913 0.7373* 0.709
Sesgo 1.7474 0.4122 0.0299* 0.1112 0.0491**
Medidas
Curtosis 7.0073 1.0691 0.7409 0.7353 0.7193*
Escalamiento
de datos
La diferencia de escalas y variabilidad en los datos hace que la
comparación de los datos sea compleja.
Se deben hacer escalamiento para que una variable con una escala
grande no parezca que tiene un efecto mayor que el de una variable
con escala pequeña, pero conserva la distribución de las
observaciones.
Para facilitar comparaciones entre variables, a veces también se
modifican las características de forma para que todas las variables
compartan un mismo valor medio y la misma variación (desviación
estándar), pero se conserva la distribución de los datos.
Escalamiento de datos

Variables:
▪ Ingreso de una persona
▪ Número de carros que tiene
Métodos de Escalamiento
▪ Escalamiento Min-Max
Se escalan los datos a valores entre 0 y 1 tomando el valor máximo de la
variable como 1 y el valor mínimo como 0. Hay un desplazamiento y un
escalamiento, pero la distribución de los datos es la misma.

𝑥 − min(𝑋)
𝑇 𝑚𝑖𝑛 − 𝑚𝑎𝑥 =
max 𝑋 − min(𝑋)

25
Métodos de Escalamiento
▪ Escalamiento Normalizado
Cada dato se divide entre la norma del vector de cada variable:
𝑋 = 𝑥12 + 𝑥22 +. . +𝑥𝑛2 . Asegura que las variables tengan la misma variación.
La escala resultante es muy pequeña.

𝑥
𝑇 𝑛𝑜𝑟𝑚𝑎𝑙𝑖𝑧𝑎𝑑𝑎 =
𝑋

NOTA
La norma de una variable, 𝑋 , representa la distancia de los datos al origen. 26
Métodos de Escalamiento
▪ Escalamiento estándar
Los datos se centran en la media y se dividen entre su desviación estándar.
Los datos estandarizados tienen media cero y desviación estándar 1. Salvo
el escalado y el desplazamiento, la distribución de los datos es exactamente
la original. Los datos estandarizados facilitan el análisis de la lejanía de un
dato con respecto a la media.
𝑥 − 𝑥ҧ
𝑇 𝑒𝑠𝑡𝑎𝑛𝑑𝑎𝑟 =
𝑠

27
Métodos de Escalamiento
▪ Escalamiento robusto de los datos
Cada dato se estandariza restando el rango intercuartílico (en lugar de la
media) y se divide entre la desviación estándar. Esto hace que la mediana de
los datos sea cero y los escala de acuerdo al rango intercuartílico. Es robusto a
datos atípicos.

𝑥 − 𝐼𝑄
𝑇 𝑟𝑜𝑏𝑢𝑠𝑡𝑜 =
𝑠

28
Métodos de Escalamiento
▪ Escalamiento Min-Max
Se escalan los datos a valores entre 0 y 1 tomando el valor máximo de la
variable como 1 y el valor mínimo como 0.
𝑥 − min(𝑋)
𝑇 𝑚𝑖𝑛 − 𝑚𝑎𝑥 =
max 𝑋 − min(𝑋)
▪ Escalamiento Normalizado
Cada dato se divide entre la norma del vector de cada variable:
𝑋 = 𝑥12 + 𝑥22 +. . +𝑥𝑛2 .
𝑥
𝑇 𝑛𝑜𝑟𝑚𝑎𝑙𝑖𝑧𝑎𝑑𝑎 =
𝑋
▪ Escalamiento estándar
Cada dato se centra en la media y se divide entre su desviación estándar.
𝑥 − 𝑥ҧ
𝑇 𝑒𝑠𝑡𝑎𝑛𝑑𝑎𝑟 =
𝑠
▪ Escalamiento robusto de los datos
Cada dato se estandariza restando el rango intercuartílico (en lugar de la
media) y se divide entre la desviación estándar.
𝑥 − 𝐼𝑄
𝑇 𝑟𝑜𝑏𝑢𝑠𝑡𝑜 =
𝑠
29
• Se afecta la escala, pero no el comportamiento de los datos. La distribución
queda intacta.
• El escalamiento normalizado tiene una escala muy pequeña. Se usa poco.
• El escalamiento robusto se ve poco afectado por los datos atípicos.
• El escalamiento min-max se ve muy afectado por los datos atípicos.
• La estandarización estándar garantiza que la variable tenga media cero y
desviación estándar 1, además de que da un sentido a la variable generada.
• Todas las variables se tienen que escalar con el mismo método para
que queden en el mismo rango de valores y puedan ser comparables.
• La selección del método depende del contexto de los datos.
Generalmente se selecciona a través de experimentación.
Métodos de Escalamiento con R

En R se puede generar una función que auxilie al cálculo rápido de los datos
estandarizados. Después se puede usar la función lapply para la
estandarización de toda la base de datos.

▪ Por ejemplo, para el escalamiento Min-Max


min_max_norm<-function(x){(x-min(x))/(max(x)-min(x))}
M1=[Link](lapply(M,min_max_norm)) #M es la base de datos

▪ Para la Estandarn-Max
z_norm<-function(x){(x-mean(x))/sd(x)}
M1=[Link](lapply(M,z_norm)) # x es la base de datos

32

También podría gustarte