# Sinh ngẫu nhiên 500 giá trị từ phân phối đều trên [0,5]
set.seed(123) # Đặt seed để kết quả có thể lặp lại
data <- runif(500, min = 0, max = 5)
# Tính kỳ vọng (trung bình mẫu) và phương sai mẫu
mean_value <- mean(data)
variance_value <- var(data)
# In kết quả ra màn hình
cat("Kỳ vọng mẫu (Mean):", mean_value, "\n")
## Kỳ vọng mẫu (Mean): 2.476418
cat("Phương sai mẫu (Variance):", variance_value, "\n")
## Phương sai mẫu (Variance): 2.022396
# Vẽ biểu đồ histogram
hist(data, breaks = 20, col = "skyblue", main = "Histogram của phân phối Uniform(0,5)",
xlab = "Giá trị", ylab = "Tần suất", border = "black")

#install.packages("reticulate") # Chỉ cần chạy một lần nếu chưa cài đặt
library(reticulate) # Gọi thư viện reticulate
use_python("C:/Users/vuong/anaconda3/python.exe", required = TRUE)
py_config()
## python: C:/Users/vuong/anaconda3/python.exe
## libpython: C:/Users/vuong/anaconda3/python312.dll
## pythonhome: C:/Users/vuong/anaconda3
## version: 3.12.7 | packaged by Anaconda, Inc. | (main, Oct 4 2024, 13:17:27) [MSC v.1929 64 bit (AMD64)]
## Architecture: 64bit
## numpy: C:/Users/vuong/anaconda3/Lib/site-packages/numpy
## numpy_version: 1.26.4
##
## NOTE: Python version was forced by use_python() function
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# Đọc tập dữ liệu từ URL
url = "https://raw.githubusercontent.com/mwaskom/seaborn-data/master/iris.csv"
df = pd.read_csv(url)
# Kiểm tra dữ liệu
print(df.head())
## sepal_length sepal_width petal_length petal_width species
## 0 5.1 3.5 1.4 0.2 setosa
## 1 4.9 3.0 1.4 0.2 setosa
## 2 4.7 3.2 1.3 0.2 setosa
## 3 4.6 3.1 1.5 0.2 setosa
## 4 5.0 3.6 1.4 0.2 setosa
# Tính trung bình và phương sai của Sepal.Length theo từng loại hoa
summary_stats = df.groupby("species")["sepal_length"].agg(["mean", "var"])
print("Trung bình và phương sai của Sepal.Length theo từng loại hoa:")
## Trung bình và phương sai của Sepal.Length theo từng loại hoa:
print(summary_stats)
## mean var
## species
## setosa 5.006 0.124249
## versicolor 5.936 0.266433
## virginica 6.588 0.404343
# Định nghĩa màu sắc cho từng loại hoa
species_colors = {"setosa": "#FF9999", "versicolor": "#66B2FF", "virginica": "#99FF99"}
# Vẽ biểu đồ Boxplot với màu tùy chỉnh
plt.figure(figsize=(8, 6))
sns.boxplot(x="species", y="sepal_length", data=df, palette=species_colors)
plt.title("Boxplot của Sepal.Length theo từng loại hoa")
plt.xlabel("Loài hoa")
plt.ylabel("Chiều dài đài hoa (Sepal.Length)")
plt.grid(axis="y", linestyle="--", alpha=0.7)
plt.show()
