library(showtext)
font_add(family = "Arial", regular = "arial.ttf")
showtext_auto()
library(tidyverse)
library(ggplot2)
library(epitools)
library(DescTools)
library(DT)
library(energy)
library(readr)
options(digits = 4)
getOption("encoding") # mong muốn kết quả là "UTF-8"
📄 Mô tả
Bộ dữ liệu này chứa thông tin về tỷ lệ tử vong do ung thư phổi và là một tập hợp toàn diện về thông tin của bệnh nhân, tập trung chủ yếu vào những người đã được chẩn đoán mắc ung thư. Với 800.000 cá nhân được ghi nhận, bộ dữ liệu bao gồm đầy đủ thông tin liên quan đến quá trình chẩn đoán, điều trị và kết quả điều trị ung thư phổi, được tổ chức trong 16 cột rõ ràng và có cấu trúc. Đây là một nguồn dữ liệu quy mô lớn, được thiết kế nhằm hỗ trợ các nhà nghiên cứu, nhà khoa học dữ liệu và chuyên gia y tế trong việc phân tích mô hình, xây dựng các hệ thống dự đoán, cũng như cải thiện chiến lược phát hiện sớm và điều trị bệnh.
#Đọc dữ liệu từ file CSV
data <- read.csv("C:/Users/Hoang Quyen/Downloads/dataset_med.csv")
#Hiển thị cấu trúc dữ liệu
str(data)
## 'data.frame': 890000 obs. of 17 variables:
## $ id : int 1 2 3 4 5 6 7 8 9 10 ...
## $ age : num 64 50 65 51 37 50 49 51 64 56 ...
## $ gender : chr "Male" "Female" "Female" "Female" ...
## $ country : chr "Sweden" "Netherlands" "Hungary" "Belgium" ...
## $ diagnosis_date : chr "2016-04-05" "2023-04-20" "2023-04-05" "2016-02-05" ...
## $ cancer_stage : chr "Stage I" "Stage III" "Stage III" "Stage I" ...
## $ family_history : chr "Yes" "Yes" "Yes" "No" ...
## $ smoking_status : chr "Passive Smoker" "Passive Smoker" "Former Smoker" "Passive Smoker" ...
## $ bmi : num 29.4 41.2 44 43 19.7 37.6 43.1 25.8 21.5 17.3 ...
## $ cholesterol_level : int 199 280 268 241 178 274 259 195 236 183 ...
## $ hypertension : int 0 1 1 1 0 1 0 1 0 1 ...
## $ asthma : int 0 1 1 1 0 0 0 1 0 0 ...
## $ cirrhosis : int 1 0 0 0 0 0 0 0 0 0 ...
## $ other_cancer : int 0 0 0 0 0 0 0 0 0 1 ...
## $ treatment_type : chr "Chemotherapy" "Surgery" "Combined" "Chemotherapy" ...
## $ end_treatment_date: chr "2017-09-10" "2024-06-17" "2024-04-09" "2017-04-23" ...
## $ survived : int 0 1 0 0 0 0 1 0 0 0 ...
View(data)
#Hiển thị 5 dòng đầu và cuối
head(data, 5)
## id age gender country diagnosis_date cancer_stage family_history
## 1 1 64 Male Sweden 2016-04-05 Stage I Yes
## 2 2 50 Female Netherlands 2023-04-20 Stage III Yes
## 3 3 65 Female Hungary 2023-04-05 Stage III Yes
## 4 4 51 Female Belgium 2016-02-05 Stage I No
## 5 5 37 Male Luxembourg 2023-11-29 Stage I No
## smoking_status bmi cholesterol_level hypertension asthma cirrhosis
## 1 Passive Smoker 29.4 199 0 0 1
## 2 Passive Smoker 41.2 280 1 1 0
## 3 Former Smoker 44.0 268 1 1 0
## 4 Passive Smoker 43.0 241 1 1 0
## 5 Passive Smoker 19.7 178 0 0 0
## other_cancer treatment_type end_treatment_date survived
## 1 0 Chemotherapy 2017-09-10 0
## 2 0 Surgery 2024-06-17 1
## 3 0 Combined 2024-04-09 0
## 4 0 Chemotherapy 2017-04-23 0
## 5 0 Combined 2025-01-08 0
tail(data, 5)
## id age gender country diagnosis_date cancer_stage family_history
## 889996 889996 40 Male Malta 2022-07-01 Stage IV No
## 889997 889997 62 Female Cyprus 2015-09-27 Stage II Yes
## 889998 889998 48 Female Estonia 2016-03-27 Stage III Yes
## 889999 889999 67 Female Slovakia 2015-12-22 Stage IV Yes
## 890000 890000 55 Female Malta 2021-07-26 Stage II Yes
## smoking_status bmi cholesterol_level hypertension asthma cirrhosis
## 889996 Passive Smoker 44.8 243 1 1 1
## 889997 Former Smoker 21.6 240 0 0 0
## 889998 Never Smoked 38.6 242 1 0 0
## 889999 Former Smoker 18.6 194 1 1 0
## 890000 Current Smoker 42.8 250 0 0 0
## other_cancer treatment_type end_treatment_date survived
## 889996 0 Radiation 2023-02-23 0
## 889997 0 Surgery 2017-06-19 0
## 889998 0 Combined 2017-01-23 1
## 889999 0 Chemotherapy 2017-12-12 0
## 890000 0 Combined 2022-10-19 0
# Các biến định tính dạng chuỗi cần chuyển thành factor:
cols_to_factor <- c("gender", "country", "cancer_stage",
"family_history", "smoking_status", "treatment_type")
# Chuyển các biến định tính dạng chuỗi thành factor
data[cols_to_factor] <- lapply(data[cols_to_factor], as.factor)
| Tên biến | Kiểu dữ liệu | Mô tả |
|---|---|---|
| id | Định danh | Mã số định danh cho mỗi bệnh nhân. Không sử dụng trong phân tích thống kê. |
| age | Định lượng | Tuổi của bệnh nhân tại thời điểm chẩn đoán. |
| gender | Định tính | Giới tính của bệnh nhân (Nam hoặc Nữ). |
| country | Định tính | Quốc gia cư trú của bệnh nhân. |
| diagnosis_date | Định tính (ngày) | Ngày bệnh nhân được chẩn đoán ung thư. |
| cancer_stage | Định tính | Giai đoạn ung thư (từ Stage I đến Stage IV). |
| family_history | Định tính | Tiền sử ung thư trong gia đình (Yes hoặc No). |
| smoking_status | Định tính | Tình trạng hút thuốc (gồm 4 mức: Current, Former, Passive, Never). |
| bmi | Định lượng | Chỉ số khối cơ thể (Body Mass Index). |
| cholesterol_level | Định lượng | Mức cholesterol trong máu. |
| hypertension | Định tính | Có hay không bị cao huyết áp (0 = Không, 1 = Có). |
| asthma | Định tính | Có hay không mắc hen suyễn (0 = Không, 1 = Có). |
| cirrhosis | Định tính | Có hay không mắc xơ gan (0 = Không, 1 = Có). |
| other_cancer | Định tính | Có hay không mắc các loại ung thư khác (0 = Không, 1 = Có). |
| treatment_type | Định tính | Phương pháp điều trị chính (Chemotherapy, Radiation, Surgery, Combined). |
| end_treatment_date | Định tính (ngày) | Ngày kết thúc quá trình điều trị. |
| survived | Định tính | Kết cục sống sót (0 = Không sống sót, 1 = Sống sót). Biến đầu ra quan trọng trong phân tích suy diễn. |
genderBiến gender là một biến định tính phân loại (categorical
nominal variable), phản ánh giới tính sinh học của các bệnh nhân trong
tập dữ liệu, với hai mức giá trị chính: Male (Nam) và
Female (Nữ). Việc phân tích biến này giúp nhận diện sự phân bố
giới tính trong mẫu nghiên cứu và là cơ sở quan trọng cho các phân tích
tiếp theo về mối liên hệ với yếu tố bệnh lý và di truyền.
# Tần suất và tỷ lệ phần trăm
gender_freq <- table(data$gender)
gender_prop <- prop.table(gender_freq) * 100
# Hiển thị dưới dạng bảng
gender_summary <- data.frame(
Gender = names(gender_freq),
Frequency = as.vector(gender_freq),
Percentage = round(as.vector(gender_prop), 2)
)
gender_summary
## Gender Frequency Percentage
## 1 Female 444866 49.98
## 2 Male 445134 50.02
Kết quả phân tích cho thấy giới tính nam chiếm tỷ lệ nhỉnh hơn trong tổng thể mẫu, với 50,02% bệnh nhân là nam giới và 49,98% là nữ giới. Sự phân bố gần như cân bằng giữa hai giới giúp đảm bảo tính đại diện trong các phân tích tiếp theo, đồng thời phản ánh thực trạng dịch tễ học ung thư phổi có liên quan đến cả hai nhóm giới.
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.4.3
# Chuẩn bị dữ liệu tóm tắt
gender_summary <- as.data.frame(table(data$gender))
colnames(gender_summary) <- c("Gender", "Count")
# Biểu đồ có nhãn số trên cột
ggplot(gender_summary, aes(x = Gender, y = Count)) +
geom_bar(stat = "identity", fill = "#66C2A5") +
geom_text(aes(label = Count), vjust = -0.5, size = 4.5) +
labs(title = "Phan bo gioi tinh cua benh nhan",
x = "Giới tính", y = "Số lượng") +
theme_minimal()
Biểu đồ cột thể hiện trực quan số lượng bệnh nhân theo từng giới tính. Các giá trị cụ thể được gắn nhãn ngay trên các cột giúp người đọc dễ dàng nhận biết sự phân bố mà không cần đối chiếu với bảng số liệu riêng.
Mục tiêu của phân tích là:
Ta xét một bài toán kiểm định tỷ lệ một mẫu, trong đó:
gender\[ H_0: p = 0.5 \quad \text{(Tỷ lệ nữ trong tổng thể là 50\%)} \\ H_1: p \neq 0.5 \quad \text{(Tỷ lệ nữ khác 50\%)} \]
# Đếm số lượng nữ và tổng số (sửa đúng tên biến: df)
female_count <- sum(data$gender == "Female", na.rm = TRUE)
total_gender <- sum(data$gender %in% c("Female", "Male"), na.rm = TRUE)
# Tính tỷ lệ nữ
p_female <- female_count / total_gender
# Kiểm định tỷ lệ nữ có bằng 0.5 không
test_gender <- prop.test(female_count, total_gender, p = 0.5, correct = TRUE)
# In kết quả
cat("Tỷ lệ nữ:", round(p_female, 4), "\n")
## Tỷ lệ nữ: 0.4998
print(test_gender)
##
## 1-sample proportions test with continuity correction
##
## data: female_count out of total_gender, null probability 0.5
## X-squared = 0.0801, df = 1, p-value = 0.7772
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
## 0.4988101 0.5008888
## sample estimates:
## p
## 0.4998494
Tổng số quan sát hợp lệ là 890.000 người, trong đó có:
Do giá trị p lớn hơn mức ý nghĩa 5%, ta không bác bỏ giả thuyết \(H_0\). Nói cách khác, không có đủ bằng chứng thống kê để kết luận rằng tỷ lệ nữ trong tổng thể khác biệt đáng kể so với 50%.
Từ kết quả phân tích, ta có thể kết luận rằng tỷ lệ nữ giới trong mẫu dữ liệu là 49.98%, và không có sự khác biệt có ý nghĩa thống kê so với tỷ lệ giả định là 50%. Điều này cho thấy phân bố giới tính trong dữ liệu là khá cân bằng.
family_historyBiến family_history là một biến định tính nhị phân
(binary categorical variable), phản ánh việc bệnh nhân có hay không tiền
sử ung thư trong gia đình. Đây là yếu tố quan trọng để đánh giá nguy cơ
di truyền trong các bệnh lý ung thư, đặc biệt là ung thư phổi. Phân tích
biến này giúp làm rõ mối liên hệ giữa yếu tố gia đình và tỷ lệ mắc
bệnh.
# Tần suất và tỷ lệ phần trăm
fh_freq <- table(data$family_history)
fh_prop <- prop.table(fh_freq) * 100
# Bảng tóm tắt
fh_summary <- data.frame(
Family_History = names(fh_freq),
Frequency = as.vector(fh_freq),
Percentage = round(as.vector(fh_prop), 2)
)
fh_summary
## Family_History Frequency Percentage
## 1 No 445181 50.02
## 2 Yes 444819 49.98
Có khoảng 49,98% bệnh nhân trong tập dữ liệu có tiền sử ung thư trong gia đình, trong khi 50.02% không có. Kết quả này cho thấy yếu tố di truyền có thể đóng vai trò quan trọng trong tỷ lệ mắc bệnh ung thư phổi, từ đó gợi ý hướng nghiên cứu sâu hơn về yếu tố gen và tiền sử gia đình.
library(ggplot2)
# Chuẩn bị dữ liệu tóm tắt
fh_summary <- as.data.frame(table(data$family_history))
colnames(fh_summary) <- c("Family_History", "Count")
# Biểu đồ với nhãn số trên cột
ggplot(fh_summary, aes(x = Family_History, y = Count)) +
geom_bar(stat = "identity", fill = "#FC8D62") +
geom_text(aes(label = Count), vjust = -0.5, size = 4.5) +
labs(title = "Phân bố tiền sử ung thư trong gia đình",
x = "Family History", y = "Số lượng") +
theme_minimal()
Biểu đồ trực quan giúp thể hiện rõ ràng mức độ xuất hiện của yếu tố tiền sử gia đình trong mẫu nghiên cứu. Việc gắn nhãn số trên cột tăng tính dễ đọc và hỗ trợ so sánh tỷ lệ giữa hai nhóm bệnh nhân một cách nhanh chóng.
Mục tiêu của phân tích là:
family_history)Biến nghiên cứu là family_history với 2 giá trị:
"Yes" (có tiền sử) và "No" (không có).
Giả thuyết kiểm định như sau:
\[ H_0: p = 0.5 \quad \text{(Tỷ lệ người có tiền sử gia đình là 50\%)} \\ H_1: p \ne 0.5 \quad \text{(Tỷ lệ khác 50\%)} \]
# Đếm số người có family history và tổng số
fh_yes <- sum(data$family_history == "Yes", na.rm = TRUE)
total_fh <- sum(data$family_history %in% c("Yes", "No"), na.rm = TRUE)
# Tính tỷ lệ
p_fh <- fh_yes / total_fh
# Kiểm định tỷ lệ có bằng 0.5 không
test_fh <- prop.test(fh_yes, total_fh, p = 0.5, correct = TRUE)
# In kết quả
cat("Tỷ lệ có tiền sử gia đình:", round(p_fh, 4), "\n")
## Tỷ lệ có tiền sử gia đình: 0.4998
print(test_fh)
##
## 1-sample proportions test with continuity correction
##
## data: fh_yes out of total_fh, null probability 0.5
## X-squared = 0.14643, df = 1, p-value = 0.702
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
## 0.4987573 0.5008360
## sample estimates:
## p
## 0.4997966
➡️ Không có bằng chứng thống kê để bác bỏ giả thuyết \(H_0\)
Kết quả kiểm định cho thấy tỷ lệ người có tiền sử gia đình
mắc bệnh là 49.98%, và không khác biệt đáng kể
so với tỷ lệ giả định 50%. Với p-value cao (0.702), có thể kết luận rằng
phân bố biến family_history là cân bằng
trong dữ liệu, không nghiêng về phía nào.
gender và
asthmaBiến gender biểu thị giới tính sinh học của bệnh nhân
(Male/Female), còn biến asthma phản ánh tình trạng
có hoặc không có hen suyễn (0: Không, 1: Có). Cả hai
là biến định tính nhị phân. Mục tiêu là kiểm tra xem giới tính có liên
quan đến tình trạng hen suyễn hay không.
tab_gender_asthma <- table(data$gender, data$asthma)
addmargins(tab_gender_asthma)
##
## 0 1 Sum
## Female 236148 208718 444866
## Male 235783 209351 445134
## Sum 471931 418069 890000
Bảng chéo và thống kê mô tả:
| Asthma = 0 | Asthma = 1 | Tổng cộng | |
|---|---|---|---|
| Female | 236,148 | 208,718 | 444,866 |
| Male | 235,783 | 209,351 | 445,134 |
| Tổng | 471,931 | 418,069 | 890,000 |
Tỷ lệ mắc hen suyễn trong nhóm nữ là 46.92%, trong khi ở nam là 47.03%.
chisq.test(tab_gender_asthma)
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: tab_gender_asthma
## X-squared = 1.1555, df = 1, p-value = 0.2824
Kiểm định Chi-squared:
⟶ Không có bằng chứng thống kê để kết luận rằng tỷ lệ hen suyễn khác biệt giữa nam và nữ.
library(epitools)
oddsratio(tab_gender_asthma, rev = "c")
## $data
##
## 1 0 Total
## Female 208718 236148 444866
## Male 209351 235783 445134
## Total 418069 471931 890000
##
## $measure
## odds ratio with 95% C.I.
## estimate lower upper
## Female 1.0000000 NA NA
## Male 0.9954394 0.987186 1.003754
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## Female NA NA NA
## Male 0.2814615 0.2815653 0.2814605
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "median-unbiased estimate & mid-p exact CI"
riskratio(tab_gender_asthma, rev = "c")
## $data
##
## 1 0 Total
## Female 208718 236148 444866
## Male 209351 235783 445134
## Total 418069 471931 890000
##
## $measure
## risk ratio with 95% C.I.
## estimate lower upper
## Female 1.0000000 NA NA
## Male 0.9978532 0.9939584 1.001763
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## Female NA NA NA
## Male 0.2814615 0.2815653 0.2814605
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
# Hiển thị chi tiết
epitab(tab_gender_asthma, method = "oddsratio", rev = "c")
## Warning in b0 * a1: NAs produced by integer overflow
## Warning in a0 * b1: NAs produced by integer overflow
## $tab
##
## 1 p0 0 p1 oddsratio lower upper p.value
## Female 208718 0.4992429 236148 0.5003867 1 NA NA NA
## Male 209351 0.5007571 235783 0.4996133 NA NA NA 0.2815653
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
epitab(tab_gender_asthma, method = "riskratio", rev = "c")
## $tab
##
## 1 p0 0 p1 riskratio lower upper
## Female 208718 0.4691705 236148 0.5308295 1.0000000 NA NA
## Male 209351 0.4703101 235783 0.5296899 0.9978532 0.9939584 1.001763
##
## p.value
## Female NA
## Male 0.2815653
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
Tỷ lệ chênh (Odds Ratio - OR):
⟶ Kết quả OR và RR đều gần 1, cho thấy không có sự khác biệt rõ rệt về khả năng mắc hen suyễn giữa hai giới tính.
family_history
và cirrhosisBiến family_history thể hiện việc bệnh nhân có hay không
tiền sử ung thư trong gia đình (Yes/No), còn biến
cirrhosis phản ánh tình trạng xơ gan (0: Không,
1: Có). Phân tích nhằm kiểm tra mối liên hệ giữa hai biến
này.
tab_fh_cirrhosis <- table(data$family_history, data$cirrhosis)
addmargins(tab_fh_cirrhosis)
##
## 0 1 Sum
## No 345054 100127 445181
## Yes 343845 100974 444819
## Sum 688899 201101 890000
Bảng chéo và thống kê mô tả:
| Cirrhosis = 0 | Cirrhosis = 1 | Tổng cộng | |
|---|---|---|---|
| Không tiền sử | 345,054 | 100,127 | 445,181 |
| Có tiền sử | 343,845 | 100,974 | 444,819 |
| Tổng | 688,899 | 201,101 | 890,000 |
Tỷ lệ xơ gan trong nhóm có tiền sử gia đình là 22.70%, cao hơn so với nhóm không có tiền sử (22.49%).
chisq.test(tab_fh_cirrhosis)
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: tab_fh_cirrhosis
## X-squared = 5.53, df = 1, p-value = 0.01869
Kiểm định Chi-squared:
⟶ Có sự khác biệt có ý nghĩa thống kê trong tỷ lệ xơ gan giữa nhóm có và không có tiền sử gia đình.
oddsratio(tab_fh_cirrhosis, rev = "c")
## $data
##
## 1 0 Total
## No 100127 345054 445181
## Yes 100974 343845 444819
## Total 201101 688899 890000
##
## $measure
## odds ratio with 95% C.I.
## estimate lower upper
## No 1.0000000 NA NA
## Yes 0.9881129 0.9783789 0.9980165
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## No NA NA NA
## Yes 0.01856637 0.018667 0.01856609
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "median-unbiased estimate & mid-p exact CI"
riskratio(tab_fh_cirrhosis, rev = "c")
## $data
##
## 1 0 Total
## No 100127 345054 445181
## Yes 100974 343845 444819
## Total 201101 688899 890000
##
## $measure
## risk ratio with 95% C.I.
## estimate lower upper
## No 1.0000000 NA NA
## Yes 0.9973072 0.9950707 0.9995486
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## No NA NA NA
## Yes 0.01856637 0.018667 0.01856609
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
# Hiển thị chi tiết
epitab(tab_fh_cirrhosis, method = "oddsratio", rev = "c")
## Warning in b0 * a1: NAs produced by integer overflow
## Warning in a0 * b1: NAs produced by integer overflow
## $tab
##
## 1 p0 0 p1 oddsratio lower upper p.value
## No 100127 0.4978941 345054 0.5008775 1 NA NA NA
## Yes 100974 0.5021059 343845 0.4991225 NA NA NA 0.018667
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
epitab(tab_fh_cirrhosis, method = "riskratio", rev = "c")
## $tab
##
## 1 p0 0 p1 riskratio lower upper p.value
## No 100127 0.2249130 345054 0.7750870 1.0000000 NA NA NA
## Yes 100974 0.2270002 343845 0.7729998 0.9973072 0.9950707 0.9995486 0.018667
##
## $measure
## [1] "wald"
##
## $conf.level
## [1] 0.95
##
## $pvalue
## [1] "fisher.exact"
Tỷ lệ chênh (Odds Ratio - OR):
Rủi ro tương đối (Relative Risk - RR):
⟶ Mặc dù sự khác biệt nhỏ về tỷ lệ, kết quả có ý nghĩa thống kê. Nhóm có tiền sử gia đình có nguy cơ xơ gan thấp hơn một chút so với nhóm không có tiền sử, điều này cần được kiểm tra thêm trong nghiên cứu chuyên sâu (do kết quả nghịch lý với trực giác).
Trong thống kê, khi bạn có dữ liệu và muốn tìm ra các tham số tốt nhất (như trung bình, phương sai…) để mô tả dữ liệu đó, thì MLE là một trong những cách phổ biến nhất để làm điều này.
❓ Câu hỏi đặt ra: Biết dữ liệu rồi, làm sao “ngược lại” để tìm được các tham số mô tả tốt nhất cho phân phối tạo ra dữ liệu đó?
➡ Đó chính là mục tiêu của MLE: Tìm bộ tham số làm cho dữ liệu đang có là “hợp lý nhất” dưới phân phối giả định.
Để tìm tham số “tốt nhất”, ta cần một công cụ đo lường – đó là hàm hợp lý.
Giả sử bạn có:
Hàm hợp lý \(L(\theta)\) là tích của tất cả các xác suất (hoặc mật độ xác suất) của từng điểm dữ liệu \(x_i\) dưới tham số \(\theta\). Nếu dữ liệu là độc lập và phân phối giống nhau (i.i.d), thì:
\[ L(\theta) = P(x_1, x_2, ..., x_n | \theta) = \prod_{i=1}^{n} f(x_i|\theta) \]
✅ Mục tiêu là: Tìm giá trị của \(\theta\) sao cho hàm \(L(\theta)\) là lớn nhất.
Tích của nhiều xác suất nhỏ sẽ ra một số rất bé, dễ gây sai số tính toán. Để đơn giản hơn, ta lấy log cả hai vế (log của tích thành tổng):
\[ \log L(\theta) = \sum_{i=1}^{n} \log f(x_i|\theta) \]
Hàm mới này gọi là log-likelihood, ký hiệu \(\ell(\theta)\), và có cùng điểm cực đại với \(L(\theta)\).
✅ Bài toán trở thành: Tìm \(\theta\) sao cho \(\ell(\theta)\) là lớn nhất
\[ f(x_i|\mu, \sigma^2) = \frac{1}{\sqrt{2\pi\sigma^2}} \exp\left(-\frac{(x_i - \mu)^2}{2\sigma^2}\right) \]
\[ L(\mu, \sigma^2) = \prod_{i=1}^{n} f(x_i|\mu, \sigma^2) \]
\[ \log L(\mu, \sigma^2) = -\frac{n}{2} \log(2\pi) - \frac{n}{2} \log(\sigma^2) - \frac{1}{2\sigma^2} \sum_{i=1}^{n}(x_i - \mu)^2 \]
Giải phương trình đạo hàm theo \(\mu\), ta sẽ thu được:
\[ \hat{\mu} = \frac{1}{n} \sum_{i=1}^{n} x_i \quad \text{(trung bình mẫu)} \]
Giải tiếp theo \(\sigma^2\), ta có:
\[ \hat{\sigma}^2 = \frac{1}{n} \sum_{i=1}^{n}(x_i - \hat{\mu})^2 \quad \text{(phương sai mẫu không điều chỉnh)} \]
✅ Kết luận: Ước lượng hợp lý tối đa cho trung bình và phương sai chính là trung bình và phương sai mẫu!
| Nội dung | Giải thích ngắn |
|---|---|
| MLE là gì? | Là phương pháp tìm tham số để làm cho dữ liệu đã quan sát là “hợp lý nhất” dưới một phân phối giả định. |
| Hàm hợp lý | Xác suất (hoặc mật độ) của toàn bộ dữ liệu, biểu diễn theo tham số cần ước lượng. |
| Log-likelihood | Log của hàm hợp lý, giúp đơn giản hóa quá trình tính toán. |
| Ước lượng MLE | Là nghiệm của bài toán cực trị (tối đa hóa log-likelihood). |
| Ứng dụng | Dùng để ước lượng trung bình, phương sai, tỷ lệ,… trong nhiều mô hình phân phối khác nhau. |