# Cargar librerías necesarias
library(MASS)
# Establecer la semilla para reproducibilidad
set.seed(123)
# Generar datos
n <- 100 # número de observaciones
mu <- c(0, 0) # media
sigma <- matrix(c(1, 0.8, 0.8, 1), nrow=2) # matriz de covarianza
datos <- mvrnorm(n, mu, sigma) # generar datos
datos <- as.data.frame(datos) # convertir a dataframe
colnames(datos) <- c("V1", "V2") # nombrar columnas
# Visualizar los datos
plot(datos$V1, datos$V2, main="Datos Generados", xlab="Variable 1", ylab="Variable 2")Distancia de Mahalobis
Generación de Datos
Primero, generaremos un conjunto de datos multivariantes. Usaremos una distribución normal para crear dos variables correlacionadas.
Cálculo de la Distancia de Mahalanobis
A continuación, calcularemos la distancia de Mahalanobis para cada punto respecto a la media del conjunto de datos.
# Calcular la media y la matriz de covarianza
media <- colMeans(datos)
cov_matrix <- cov(datos)
# Calcular la distancia de Mahalanobis
distancias_mahalanobis <- mahalanobis(datos, center = media, cov = cov_matrix)
# Agregar las distancias al dataframe
datos$distancia_mahalanobis <- distancias_mahalanobisIdentificación de Datos Atípicos
Usaremos un umbral para identificar los puntos atípicos. Un criterio común es considerar como atípicos aquellos puntos cuya distancia sea mayor que un cierto percentil (por ejemplo, el percentil 95).
# Definir el umbral para identificar atípicos
umbral <- quantile(distancias_mahalanobis, 0.95)
# Identificar puntos atípicos
datos$atipico <- ifelse(datos$distancia_mahalanobis > umbral, TRUE, FALSE)
# Visualizar los resultados
plot(datos$V1, datos$V2, col = ifelse(datos$atipico, "red", "blue"),
main="Identificación de Datos Atípicos", xlab="Variable 1", ylab="Variable 2")
legend("topright", legend=c("Atípico", "Normal"), col=c("red", "blue"), pch=1)Resumen de Pasos
- Generación de Datos: Se crean datos multivariantes con correlación.
- Cálculo de Distancia: Se calcula la distancia de Mahalanobis para cada punto.
- Identificación Atípicos: Se definen y visualizan los puntos atípicos basados en un umbral.