1import numpy as np
2import matplotlib.pyplot as plt
3from scipy import stats
4
5# Tạo dữ liệu với outlier
6data_normal = [10, 12, 11, 13, 14, 12, 11, 13]
7data_with_outlier = [10, 12, 11, 13, 14, 12, 11, 100]
8
9# So sánh
10print("=== Data without outlier ===")
11print(f"Mean: {np.mean(data_normal):.2f}")
12print(f"Median: {np.median(data_normal):.2f}")
13
14print("\n=== Data with outlier ===")
15print(f"Mean: {np.mean(data_with_outlier):.2f}")
16print(f"Median: {np.median(data_with_outlier):.2f}")
17
18# Visualization
19fig, axes = plt.subplots(1, 2, figsize=(12, 4))
20
21# Normal data
22axes[0].hist(data_normal, bins=10, edgecolor='black', alpha=0.7)
23axes[0].axvline(np.mean(data_normal), color='red', linestyle='--', label=f'Mean: {np.mean(data_normal):.1f}')
24axes[0].axvline(np.median(data_normal), color='green', linestyle='--', label=f'Median: {np.median(data_normal):.1f}')
25axes[0].set_title('Without Outlier')
26axes[0].legend()
27
28# Data with outlier
29axes[1].hist(data_with_outlier, bins=10, edgecolor='black', alpha=0.7)
30axes[1].axvline(np.mean(data_with_outlier), color='red', linestyle='--', label=f'Mean: {np.mean(data_with_outlier):.1f}')
31axes[1].axvline(np.median(data_with_outlier), color='green', linestyle='--', label=f'Median: {np.median(data_with_outlier):.1f}')
32axes[1].set_title('With Outlier')
33axes[1].legend()
34
35plt.tight_layout()
36plt.show()