# Câu 1: Sinh ngẫu nhiên 500 giá trị từ phân phối đều liên tục trên khoảng [0,5]
set.seed(123) # Đặt seed để kết quả có thể tái lập
data <- runif(500, min = 0, max = 5)
# Tính kỳ vọng (trung bình) và phương sai
mean_value <- mean(data)
variance_value <- var(data)
# Vẽ biểu đồ histogram
hist(data, breaks = 20, col = "skyblue", main = "Histogram of Uniformly Distributed Data",
xlab = "Value", ylab = "Frequency")
abline(v = mean_value, col = "red", lwd = 2, lty = 2) # Đánh dấu trung bình bằng đường đỏ

# In kết quả
cat("Kỳ vọng (trung bình):", mean_value, "\n")
## Kỳ vọng (trung bình): 2.476418
cat("Phương sai:", variance_value, "\n")
## Phương sai: 2.022396
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
# Đọc tập dữ liệu Iris từ Seaborn
iris = sns.load_dataset("iris")
# Tính trung bình và phương sai của Sepal.Length theo từng loại hoa
stats = iris.groupby("species")["sepal_length"].agg(['mean', 'var'])
print("Trung bình và phương sai của chiều dài đài hoa (Sepal Length):")
## Trung bình và phương sai của chiều dài đài hoa (Sepal Length):
print(stats)
## mean var
## species
## setosa 5.006 0.124249
## versicolor 5.936 0.266433
## virginica 6.588 0.404343
# Vẽ biểu đồ Boxplot cho từng loại hoa
plt.figure(figsize=(8, 5))
sns.boxplot(x="species", y="sepal_length", data=iris, palette="pastel")
plt.title('Boxplot of Sepal Length by Species')
plt.xlabel('Species')
plt.ylabel('Sepal Length')
plt.show()
