1. Tạo Dữ liệu Mẫu
set.seed(42)
data <- matrix(rnorm(200), ncol=2)
data <- rbind(data, c(5, 5)) # Thêm một điểm ngoại lai
2. Tính Khoảng cách Euclidean và Xác định Ngưỡng
# Tính khoảng cách Euclidean
distances <- dist(data)
# Chuyển đổi khoảng cách thành ma trận
dist_matrix <- as.matrix(distances)
# Tính khoảng cách trung bình cho mỗi điểm
mean_distances <- apply(dist_matrix, 1, mean)
# Tính giá trị trung bình và độ lệch chuẩn của khoảng cách trung bình
mean_value <- mean(mean_distances)
sd_value <- sd(mean_distances)
# Xác định ngưỡng (ví dụ: 3 độ lệch chuẩn)
threshold <- mean_value + 3 * sd_value
# Xác định các điểm ngoại lai
outliers <- which(mean_distances > threshold)
3. Vẽ Hình Minh họa
# Vẽ biểu đồ phân tán và đánh dấu các điểm ngoại lai
plot(data, main = "Detection of Outliers using Euclidean Distance", xlab = "X1", ylab = "X2")
points(data[outliers, ], col = "red", pch = 19)
# Vẽ vòng tròn biểu thị ngưỡng
symbols(data[outliers, 1], data[outliers, 2], circles = rep(threshold, length(outliers)), inches = 0.1, add = TRUE, fg = "blue")
