#  Sinh dữ liệu từ phân phối chuẩn N(30, 100)
set.seed(123)  # Đặt seed để tái tạo kết quả
data <- rnorm(350, mean = 30, sd = sqrt(100))  # Phương sai = 100 nên độ lệch chuẩn = sqrt(100)

# Kiểm tra phân phối chuẩn bằng cách so sánh với pnorm
# Tính xác suất tích lũy (CDF) cho mỗi giá trị trong dữ liệu
pnorm_values <- pnorm(data, mean = 30, sd = sqrt(100))

# So sánh các giá trị pnorm với phân phối chuẩn lý thuyết
# Nếu phân phối của dữ liệu gần với chuẩn, thì các pnorm_values sẽ phân bố đồng đều trong [0, 1]
hist(pnorm_values, main="Histogram of CDF values", xlab="CDF values", ylab="Frequency", breaks=20)

#Kiểm tra bằng một biểu đồ QQ plot để kiểm tra tính chuẩn
qqnorm(data)
qqline(data, col = "red")

# Đọc tập dữ liệu Iris
data(iris)
# Tính giá trị tối thiểu và tối đa của từng đặc trưng
min_values <- apply(iris[, 1:4], 2, min)  # Tính giá trị tối thiểu của từng cột
cat("Giá trị tối thiểu của từng đặc trưng:\n")
## Giá trị tối thiểu của từng đặc trưng:
print(min_values)
## Sepal.Length  Sepal.Width Petal.Length  Petal.Width 
##          4.3          2.0          1.0          0.1
max_values <- apply(iris[, 1:4], 2, max)  # Tính giá trị tối đa của từng cột
cat("Giá trị tối đa của từng đặc trưng:\n")
## Giá trị tối đa của từng đặc trưng:
print(max_values)
## Sepal.Length  Sepal.Width Petal.Length  Petal.Width 
##          7.9          4.4          6.9          2.5
# Vẽ biểu đồ histogram của chiều dài đài hoa (Sepal.Length)
hist(iris$Sepal.Length, 
     main="Histogram của Sepal.Length", 
     xlab="Sepal.Length", 
     col="skyblue", 
     border="black", 
     breaks=10)  # Tạo histogram với 10 khoảng