# 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
