Câu 1: 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.

set.seed(42)
x <- rnorm(500, mean = 50, sd = 15)
tail(x, 7)
## [1] 68.16365 40.77655 60.14190 63.47899 32.16023 51.81888 49.83167
head(x)
## [1] 70.56438 41.52953 55.44693 59.49294 56.06402 48.40813
shapiro.test(x)
## 
##  Shapiro-Wilk normality test
## 
## data:  x
## W = 0.99852, p-value = 0.9533

Câu 2: 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).

library(reticulate)
py_require("pandas")
py_require("matplotlib")
import pandas as pd
import matplotlib.pyplot as plt


df = pd.read_csv("iris.csv")
df.head()
Id SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm Species
0 1 5.1 3.5 1.4 0.2 Iris-setosa
1 2 4.9 3.0 1.4 0.2 Iris-setosa
2 3 4.7 3.2 1.3 0.2 Iris-setosa
3 4 4.6 3.1 1.5 0.2 Iris-setosa
4 5 5.0 3.6 1.4 0.2 Iris-setosa
df.tail(15)
Id SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm Species
135 136 7.7 3.0 6.1 2.3 Iris-virginica
136 137 6.3 3.4 5.6 2.4 Iris-virginica
137 138 6.4 3.1 5.5 1.8 Iris-virginica
138 139 6.0 3.0 4.8 1.8 Iris-virginica
139 140 6.9 3.1 5.4 2.1 Iris-virginica
140 141 6.7 3.1 5.6 2.4 Iris-virginica
141 142 6.9 3.1 5.1 2.3 Iris-virginica
142 143 5.8 2.7 5.1 1.9 Iris-virginica
143 144 6.8 3.2 5.9 2.3 Iris-virginica
144 145 6.7 3.3 5.7 2.5 Iris-virginica
145 146 6.7 3.0 5.2 2.3 Iris-virginica
146 147 6.3 2.5 5.0 1.9 Iris-virginica
147 148 6.5 3.0 5.2 2.0 Iris-virginica
148 149 6.2 3.4 5.4 2.3 Iris-virginica
149 150 5.9 3.0 5.1 1.8 Iris-virginica
variance = df.iloc[:, :-1].var()
variance
## Id               1887.500000
## SepalLengthCm       0.685694
## SepalWidthCm        0.188004
## PetalLengthCm       3.113179
## PetalWidthCm        0.582414
## dtype: float64
for species, color in zip(df['Species'].unique(), ['red', 'green', 'blue']):
    subset = df[df['Species'] == species]
    plt.scatter(subset['SepalLengthCm'],
                subset['SepalWidthCm'],
                color=color,
                label=species)

plt.xlabel('Sepal Length (cm)')
plt.ylabel('Sepal Width (cm)')
plt.title('Sepal Length vs Sepal Width')
plt.legend()
plt.show()

plt.xlabel('Sepal Length (cm)')
plt.ylabel('Sepal Width (cm)')
plt.title('Sepal Length vs Sepal Width')
plt.legend()
plt.show()