Câu 1 (5 điểm):
1. Sinh ngẫu nhiên 500 giá trị từ phân phối chuẩn N(50,225)
2. Sử dụng kiểm định Shapiro-Wilk để kiểm tra tính chuẩn của tập dữ
liệu này.
# --- 1. Sinh dữ liệu ngẫu nhiên ---
# Đặt seed để cố định kết quả khi chạy lại code kiểm tra
set.seed(1)
# Đề bài cho phân phối chuẩn N(50, 225)
# Suy ra: mean = 50
# Phương sai (Variance) = 225 => Độ lệch chuẩn (sd) = sqrt(225) = 15
# Lưu ý: Hàm rnorm trong R dùng độ lệch chuẩn (sd) chứ không dùng phương sai.
data <- rnorm(n = 500, mean = 50, sd = 15)
# Kiểm tra sơ bộ 6 dòng đầu
head(data)
## [1] 40.60319 52.75465 37.46557 73.92921 54.94262 37.69297
# --- 2. Kiểm định tính chuẩn Shapiro-Wilk ---
test_result <- shapiro.test(data)
# Xuất kết quả kiểm định
print(test_result)
##
## Shapiro-Wilk normality test
##
## data: data
## W = 0.99792, p-value = 0.804
library(reticulate)
py_install("matplotlib", pip = TRUE)
## Using virtual environment "C:/Users/Minhmucwjbi/Documents/.virtualenvs/r-reticulate" ...
## + "C:/Users/Minhmucwjbi/Documents/.virtualenvs/r-reticulate/Scripts/python.exe" -m pip install --upgrade --no-user matplotlib
Câu 2 (5 điểm):
1. Đọc tập dữ liệu Iris bằng thư viện Pandas.
2. Tính phương sai của từng đặc trưng trong tập dữ liệu.
3. Vẽ biểu đồ scatter giữa chiều dài đài hoa (Sepal.Length) và chiều
rộng đài hoa (Sepal.Width).
import pandas as pd
import matplotlib.pyplot as plt
# --- 1. Đọc dữ liệu ---
df = pd.read_csv('iris.csv')
# Kiểm tra nhanh dữ liệu
print(df.head())
## sepal.length sepal.width petal.length petal.width variety
## 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
# --- 2. Tính phương sai (Variance) ---
# Sử dụng hàm .var() của Pandas.
# Tham số numeric_only=True để đảm bảo chỉ tính toán trên các cột số liệu.
phuong_sai = df.var(numeric_only=True)
print("\nKết quả Phương sai của từng đặc trưng:")
##
## Kết quả Phương sai của từng đặc trưng:
print(phuong_sai)
## sepal.length 0.685694
## sepal.width 0.189979
## petal.length 3.116278
## petal.width 0.581006
## dtype: float64
# --- 3. Vẽ biểu đồ Scatter ---
plt.figure(figsize=(8, 6)) # Thiết lập kích thước hình
# Vẽ scatter plot: Trục X là Sepal.Length, Trục Y là Sepal.Width
plt.scatter(df['sepal.length'], df['sepal.width'], color='blue', alpha=0.6)
plt.title('Biểu đồ tương quan: Sepal.Length vs Sepal.Width')
plt.xlabel('Sepal.Length (Chiều dài đài hoa)')
plt.ylabel('Sepal.Width (Chiều rộng đài hoa)')
plt.grid(True, linestyle='--', alpha=0.5) # Thêm lưới mờ
# Hiển thị
plt.show()
