El análisis multivariante es una técnica estadística que se utiliza para analizar datos que involucran múltiples variables al mismo tiempo. Este tipo de análisis es esencial cuando se quiere entender las relaciones complejas entre variables y cómo estas pueden influir en un resultado o conjunto de resultados.

Conceptos Clave

  1. Variables Dependientes e Independientes:

    • Variables Dependientes: Son las variables que se intentan predecir o explicar.
    • Variables Independientes: Son las variables que se utilizan para predecir o explicar las variables dependientes.
  2. Matriz de Datos:

    • Una matriz de datos es una representación tabular donde las filas representan observaciones y las columnas representan variables.
  3. Dimensionalidad:

    • Se refiere al número de variables en el análisis. El análisis multivariante maneja datos de alta dimensionalidad.

Técnicas de Análisis Multivariante

  1. Análisis de Componentes Principales (PCA)

El PCA es una técnica utilizada para reducir la dimensionalidad de un conjunto de datos, transformando las variables originales en un nuevo conjunto de variables no correlacionadas llamadas componentes principales.

Pasos del PCA:

  1. Estandarización de Datos: Asegurarse de que todas las variables tengan la misma escala.
  2. Cálculo de la Matriz de Covarianza: Evaluar cómo varían las variables juntas.
  3. Cálculo de los Valores y Vectores Propios: Determinar las direcciones principales de variación.
  4. Selección de Componentes Principales: Elegir los componentes que explican la mayor parte de la variación.

Ejemplo en Python:

import numpy as np
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt

# Datos de ejemplo
X = np.array([[2.5, 2.4],
              [0.5, 0.7],
              [2.2, 2.9],
              [1.9, 2.2],
              [3.1, 3.0],
              [2.3, 2.7],
              [2, 1.6],
              [1, 1.1],
              [1.5, 1.6],
              [1.1, 0.9]])

# Estandarización de datos
X_meaned = X - np.mean(X, axis=0)

# Cálculo de la matriz de covarianza
cov_matrix = np.cov(X_meaned, rowvar=False)

# Cálculo de los valores y vectores propios
eigen_values, eigen_vectors = np.linalg.eigh(cov_matrix)

# Ordenar los valores propios en orden descendente
sorted_index = np.argsort(eigen_values)[::-1]
sorted_eigenvalue = eigen_values[sorted_index]
sorted_eigenvectors = eigen_vectors[:, sorted_index]

# Selección de componentes principales
n_components = 2
eigenvector_subset = sorted_eigenvectors[:, 0:n_components]

# Transformación de datos
X_reduced = np.dot(eigenvector_subset.transpose(), X_meaned.transpose()).transpose()

# Visualización de los datos transformados
plt.scatter(X_reduced[:, 0], X_reduced[:, 1])
plt.xlabel('Componente Principal 1')
plt.ylabel('Componente Principal 2')
plt.title('PCA - Reducción de Dimensionalidad')
plt.show()

  1. Análisis de Clústeres

El análisis de clústeres agrupa un conjunto de objetos de tal manera que los objetos en el mismo grupo (o clúster) son más similares entre sí que con los de otros grupos.

Algoritmos Comunes:

  • K-Means: Agrupa los datos en k clústeres basándose en la minimización de la varianza dentro de cada clúster.
  • Jerárquico: Construye una jerarquía de clústeres mediante la combinación o división de clústeres existentes.

Ejemplo en Python (K-Means):

from sklearn.cluster import KMeans
import matplotlib.pyplot as plt

# Datos de ejemplo
X = np.array([[1, 2], [1.5, 1.8], [5, 8], [8, 8], [1, 0.6], [9, 11]])

# Aplicación de K-Means
kmeans = KMeans(n_clusters=2)
kmeans.fit(X)

# Predicción de clústeres
y_kmeans = kmeans.predict(X)

# Visualización de clústeres
plt.scatter(X[:, 0], X[:, 1], c=y_kmeans, s=50, cmap='viridis')
centers = kmeans.cluster_centers_
plt.scatter(centers[:, 0], centers[:, 1], c='red', s=200, alpha=0.75)
plt.title('K-Means Clustering')
plt.show()

  1. Análisis Discriminante Lineal (LDA)

El LDA es una técnica utilizada para encontrar una combinación lineal de características que separa dos o más clases de objetos o eventos.

Pasos del LDA:

  1. Cálculo de la Media de Cada Clase.
  2. Cálculo de la Matriz de Dispersión Dentro de la Clase y Entre Clases.
  3. Cálculo de los Vectores Propios y Valores Propios.
  4. Proyección de los Datos en el Nuevo Espacio.

Ejemplo en Python:

from sklearn.discriminant_analysis import LinearDiscriminantAnalysis as LDA
import matplotlib.pyplot as plt

# Datos de ejemplo
X = np.array([[4, 2], [2, 4], [2, 3], [3, 6], [4, 4], [9, 10], [6, 8], [9, 5], [8, 7], [10, 8]])
y = np.array([0, 0, 0, 0, 0, 1, 1, 1, 1, 1])

# Aplicación de LDA
lda = LDA(n_components=1)
X_r2 = lda.fit(X, y).transform(X)

# Visualización de los datos transformados
plt.scatter(X_r2, np.zeros_like(X_r2), c=y, cmap='viridis')
plt.xlabel('Componente Discriminante 1')
plt.title('LDA - Reducción de Dimensionalidad')
plt.show()

Ejercicios Prácticos

Ejercicio 1: Aplicación de PCA

Instrucciones:

  1. Utiliza el conjunto de datos Iris de sklearn.datasets.
  2. Aplica PCA para reducir las dimensiones a 2 componentes principales.
  3. Visualiza los datos transformados en un gráfico de dispersión.

Solución:

from sklearn.datasets import load_iris
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt

# Cargar datos Iris
iris = load_iris()
X = iris.data
y = iris.target

# Aplicación de PCA
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X)

# Visualización de los datos transformados
plt.scatter(X_pca[:, 0], X_pca[:, 1], c=y, cmap='viridis')
plt.xlabel('Componente Principal 1')
plt.ylabel('Componente Principal 2')
plt.title('PCA - Iris Dataset')
plt.show()

Ejercicio 2: Análisis de Clústeres con K-Means

Instrucciones:

  1. Genera un conjunto de datos sintético utilizando make_blobs de sklearn.datasets.
  2. Aplica K-Means para agrupar los datos en 3 clústeres.
  3. Visualiza los clústeres y sus centros.

Solución:

from sklearn.datasets import make_blobs
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt

# Generar datos sintéticos
X, _ = make_blobs(n_samples=300, centers=3, cluster_std=0.60, random_state=0)

# Aplicación de K-Means
kmeans = KMeans(n_clusters=3)
kmeans.fit(X)
y_kmeans = kmeans.predict(X)

# Visualización de clústeres
plt.scatter(X[:, 0], X[:, 1], c=y_kmeans, s=50, cmap='viridis')
centers = kmeans.cluster_centers_
plt.scatter(centers[:, 0], centers[:, 1], c='red', s=200, alpha=0.75)
plt.title('K-Means Clustering')
plt.show()

Conclusión

El análisis multivariante es una herramienta poderosa para entender y explorar datos complejos con múltiples variables. Técnicas como PCA, análisis de clústeres y LDA permiten reducir la dimensionalidad, agrupar datos y discriminar entre diferentes clases, respectivamente. La práctica con ejemplos y ejercicios ayuda a consolidar estos conceptos y a aplicarlos en situaciones del mundo real.

© Copyright 2024. Todos los derechos reservados