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