1 Estandarización

1.1 Score-z

La fórmula fundamental para la estandarización es:

\[ z= \frac{x-\mu}{\sigma} \]

💡 Concepto Clave:
La estandarización nos permite comparar datos que provienen de diferentes escalas o unidades. Transformamos los datos originales a una distribución con media 0 y desviación estándar 1.

1.2 Usando R para estandarizar una variable

Generamos datos con distribución normal:

set.seed(123)
X = rnorm(n = 60, mean = 3, sd = 0.3)
head(X)
## [1] 2.831857 2.930947 3.467612 3.021153 3.038786 3.514519

Visualicemos la distribución de \(X\):

# Histograma X
hist(X, col=adjustcolor("steelblue", alpha.f=0.7), border="white", 
     main="Histograma de X", xlab="Valores")
abline(v = mean(X), col = "tomato", lwd = 3, lty = 2)
legend("topright", legend="Media", col="tomato", lty=2, lwd=3, bty="n")

# Boxplot X
boxplot(X, col=adjustcolor("lightblue", alpha.f=0.6), 
        main="Boxplot de X", horizontal = TRUE)
points(mean(X), 1, col = "tomato", cex = 2, pch = 16)

Ahora probemos con una distribución exponencial (\(Y\)):

set.seed(123)
Y = rexp(n = 600, rate = 1/2)
head(Y)
## [1] 1.68691452 1.15322054 2.65810974 0.06315472 0.11242195 0.63300243
boxplot(Y, col=adjustcolor("orange", alpha.f=0.5), 
        main="Boxplot de Y (Exponencial)", horizontal = TRUE)
points(mean(Y), 1, col = "darkred", cex = 2, pch = 16)

hist(Y, col=adjustcolor("orange", alpha.f=0.6), border="white", breaks=15)
abline(v = mean(Y), col= "darkred", lty = 2, lwd = 3)

1.3 Score-Z de la variable X

Aplicamos la función scale():

z_x = scale(X)
head(z_x)
##              [,1]
## [1,] -0.687729949
## [2,] -0.324914908
## [3,]  1.640081452
## [4,]  0.005372616
## [5,]  0.069938613
## [6,]  1.811830980

Comparación visual: Datos originales vs. Estandarizados.

par(mfrow = c(1,2))
hist(X, nclass = 10, col="lightblue", main="Original (X)")
hist(z_x, nclass = 10, col="lightgreen", main="Estandarizado (Z)")

par(mfrow=c(1,1))
plot(X, z_x, pch=19, col=adjustcolor("purple", 0.6), 
     main="Relación X vs Z")

1.4 Correlación de Pearson

Como es una transformación lineal, la correlación debe ser perfecta (1).

cor(x = X, y = z_x, method = "pearson")
##      [,1]
## [1,]    1

2 Transformaciones Lineales vs Afines

Matemáticamente se define:

\[ \text{Aditiva: } T(X_1 + X_2) = T(X_1)+T (X_2) \\ \text{Homogénea: } T(c \cdot X) = c \cdot T(X) \]


3 ¿Por qué la confusión y qué es realmente?

🤔 La Gran Confusión:

La gente cree que el Score-Z es lineal porque su gráfica es una línea recta.
En Cálculo y Estadística, llamamos “función lineal” a cualquier cosa que se vea como una recta (\(y = mx + b\)).
Pero en Álgebra Lineal Pura, para ser lineal DEBE pasar por el origen (0,0) (\(y = mx\)).

3.1 ¿Qué es el Score-Z?

Matemáticamente, el Score-Z es una Transformación Afín.

\[T(x) = Ax + b\]

Donde: 1. A (Escalado): Es el factor \(1/\sigma\) (estira o encoge los datos). 2. b (Traslación): Es el término \(-\mu/\sigma\) (mueve el centro de los datos hacia el 0).

Diferencia Clave: Una Transformación Lineal solo estira o rota (mantiene el origen fijo). Una Transformación Afín estira, rota y ADEMÁS mueve (traslada) el origen.

3.2 Demostración Visual en R

Vamos a graficar una transformación Verdaderamente Lineal vs. la Afín (Score-Z) para ver por qué son diferentes.

# Datos de ejemplo
x <- seq(-10, 10, length.out = 100)

# Parámetros para el Z-score
mu <- 5       # La media no es 0
sigma <- 2

# 1. Transformación Lineal Pura (Solo escala, pasa por 0,0)
# T(x) = x / sigma
lineal_pura <- x / sigma

# 2. Transformación Afín (Score-Z)
# T(x) = (x - mu) / sigma
afin_z <- (x - mu) / sigma

# Gráfico
plot(x, afin_z, type = "l", col = "red", lwd = 3, 
     main = "Lineal vs. Afín (Z-Score)", 
     ylab = "Resultado T(x)", xlab = "Entrada (x)",
     panel.first = grid()) # Agrega cuadrícula de fondo

# Agregamos la lineal pura
lines(x, lineal_pura, col = "blue", lwd = 3, lty = 2)

# Agregamos los ejes X e Y para ver el origen (0,0)
abline(h = 0, v = 0, col = "black", lwd=2)

# Leyenda explicativa
legend("topleft", 
       legend = c("Afín (Score-Z): No pasa por (0,0)", "Lineal Pura: Pasa por (0,0)"),
       col = c("red", "blue"), lty = c(1, 2), lwd = 3, bty = "n")

points(0, 0, pch = 19, cex = 2) # Marcamos el origen
text(1, -0.5, "Origen (0,0)", adj = 0, font=2)

3.3 Verificación de Propiedades

cat("MEDIA X:   ", mean(X), "\n")
## MEDIA X:    3.019685
cat("MEDIA Z_X: ", round(mean(z_x), 10), "(Prácticamente cero)\n")
## MEDIA Z_X:  0 (Prácticamente cero)
cat("VARIANZA X:   ", var(X), "\n")
## VARIANZA X:    0.07459062
cat("VARIANZA Z_X: ", var(z_x), "(Debe ser uno)")
## VARIANZA Z_X:  1 (Debe ser uno)