#  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")

library(reticulate)
py_config()
## python:         C:/Users/VHC/Downloads/sql/OneDrive/Documents/.virtualenvs/r-reticulate/Scripts/python.exe
## libpython:      C:/Users/VHC/AppData/Local/Programs/Python/Python312/python312.dll
## pythonhome:     C:/Users/VHC/Downloads/sql/OneDrive/Documents/.virtualenvs/r-reticulate
## version:        3.12.3 (tags/v3.12.3:f6650f9, Apr  9 2024, 14:05:25) [MSC v.1938 64 bit (AMD64)]
## Architecture:   64bit
## numpy:          C:/Users/VHC/Downloads/sql/OneDrive/Documents/.virtualenvs/r-reticulate/Lib/site-packages/numpy
## numpy_version:  2.2.3
## 
## NOTE: Python version was forced by VIRTUAL_ENV
py_install("pandas")
## Using virtual environment "C:/Users/VHC/Downloads/sql/OneDrive/Documents/.virtualenvs/r-reticulate" ...
## + "C:/Users/VHC/Downloads/sql/OneDrive/Documents/.virtualenvs/r-reticulate/Scripts/python.exe" -m pip install --upgrade --no-user pandas
import pandas as pd
print(pd.__version__)
## 2.2.3
library(reticulate)
py_config()
## python:         C:/Users/VHC/Downloads/sql/OneDrive/Documents/.virtualenvs/r-reticulate/Scripts/python.exe
## libpython:      C:/Users/VHC/AppData/Local/Programs/Python/Python312/python312.dll
## pythonhome:     C:/Users/VHC/Downloads/sql/OneDrive/Documents/.virtualenvs/r-reticulate
## version:        3.12.3 (tags/v3.12.3:f6650f9, Apr  9 2024, 14:05:25) [MSC v.1938 64 bit (AMD64)]
## Architecture:   64bit
## numpy:          C:/Users/VHC/Downloads/sql/OneDrive/Documents/.virtualenvs/r-reticulate/Lib/site-packages/numpy
## numpy_version:  2.2.3
## 
## NOTE: Python version was forced by VIRTUAL_ENV
library(reticulate)
py_install(c("matplotlib", "seaborn", "pandas"))
## Using virtual environment "C:/Users/VHC/Downloads/sql/OneDrive/Documents/.virtualenvs/r-reticulate" ...
## + "C:/Users/VHC/Downloads/sql/OneDrive/Documents/.virtualenvs/r-reticulate/Scripts/python.exe" -m pip install --upgrade --no-user matplotlib seaborn pandas
py_available(initialize = TRUE)
## [1] TRUE
import pandas as pd
import matplotlib.pyplot as plt

# Đọc tập dữ liệu Iris
url = "https://raw.githubusercontent.com/mwaskom/seaborn-data/master/iris.csv"
df = pd.read_csv(url)

# Tính giá trị tối thiểu và tối đa của từng đặc trưng
min_values = df.min()
max_values = df.max()
print("Giá trị tối thiểu:\n", min_values)
## Giá trị tối thiểu:
##  sepal_length       4.3
## sepal_width        2.0
## petal_length       1.0
## petal_width        0.1
## species         setosa
## dtype: object
print("Giá trị tối đa:\n", max_values)
## Giá trị tối đa:
##  sepal_length          7.9
## sepal_width           4.4
## petal_length          6.9
## petal_width           2.5
## species         virginica
## dtype: object
# Vẽ biểu đồ histogram của chiều dài đài hoa (sepal_length)
plt.hist(df['sepal_length'], bins=20, color='skyblue', edgecolor='black')
plt.xlabel('Chiều dài đài hoa (Sepal Length)')
plt.ylabel('Tần suất')
plt.title('Histogram của Sepal Length')
plt.show()