Bài viết này cung cấp hướng dẫn từng bước về cách thực hiện phân tích hồi quy logistic hỗn hợp hiệu ứng tuyến tính (LME). Chúng ta sẽ khám phá các ví dụ thực tế, cách sử dụng mã R và Jamovi, và tầm quan trọng của việc chọn cỡ mẫu phù hợp. LME đặc biệt hữu ích khi làm việc với dữ liệu phân cấp, chẳng hạn như dữ liệu có các quan sát được nhóm trong các đối tượng hoặc các đối tượng được nhóm trong các nhóm lớn hơn.
Hồi quy logistic hỗn hợp hiệu ứng tuyến tính (LME) là một kỹ thuật thống kê mạnh mẽ được sử dụng để mô hình hóa kết quả nhị phân (ví dụ: có/không, thành công/thất bại) khi dữ liệu có cấu trúc phân cấp hoặc lồng nhau. Nó kết hợp các khía cạnh của cả hồi quy logistic và mô hình hiệu ứng hỗn hợp, cho phép các nhà nghiên cứu giải thích sự thay đổi trong cả các biến độc lập cấp cố định và các hiệu ứng ngẫu nhiên cấp nhóm.
Hãy tưởng tượng bạn đang nghiên cứu các yếu tố dự đoán việc sinh viên có đỗ kỳ thi hay không. Dữ liệu của bạn có thể bao gồm sinh viên từ nhiều trường học khác nhau, và sinh viên trong cùng một trường có thể có những đặc điểm tương đồng (ví dụ: chất lượng giảng dạy, nguồn lực của trường). Trong trường hợp này, một mô hình LME là phù hợp vì nó có thể giải thích sự phụ thuộc của các quan sát trong cùng một trường, đồng thời cho phép bạn ước tính các tác động của các yếu tố cấp sinh viên (ví dụ: thời gian học tập, điểm trung bình) lên khả năng vượt qua kỳ thi.
LME mang lại một số lợi thế so với các phương pháp thống kê truyền thống khi làm việc với dữ liệu phân cấp:
Để minh họa việc sử dụng LME, chúng ta hãy xem xét một nghiên cứu về bệnh ung thư phổi. Một HMO lớn muốn biết những yếu tố nào liên quan nhất đến việc bệnh ung thư phổi của bệnh nhân thuyên giảm sau điều trị. Dữ liệu được thu thập trên bệnh nhân, được lồng trong các bác sĩ, những người lần lượt được lồng trong các bệnh viện. Có một số biến cấp bác sĩ, chẳng hạn như kinh nghiệm, có thể ảnh hưởng đến kết quả điều trị.
Dữ liệu có thể bao gồm các biến sau:
thuyên giảm
: Biến kết quả nhị phân cho biết liệu bệnh ung thư của bệnh nhân có thuyên giảm hay không (1 = có, 0 = không).IL6
, CRP
, LengthofStay
: Các biến liên tục cấp bệnh nhân, chẳng hạn như mức độ Interleukin-6 (IL-6), protein phản ứng C (CRP) và thời gian nằm viện.CancerStage
: Biến phân loại cấp bệnh nhân cho biết giai đoạn ung thư (I, II, III, IV).Kinh nghiệm
: Biến liên tục cấp bác sĩ cho biết số năm kinh nghiệm của bác sĩ.DID
: ID bác sĩ.HID
: ID bệnh viện.Chúng ta có thể sử dụng LME để mô hình hóa log-odds của thuyên giảm như một sự kết hợp tuyến tính của các biến dự đoán, có tính đến cấu trúc phân cấp của dữ liệu. Mô hình có thể được biểu diễn như sau:
`log(P(thuyên giảm) / (1 - P(thuyên giảm))) = β0 + β1 * IL6 + β2 * CRP + β3 * CancerStageII + β4 * CancerStageIII + β5 * CancerStageIV + β6 * LengthofStay + β7 * Kinh nghiệm + u_j[bác sĩ] + v_k[bệnh viện]`
trong đó:
Trước tiên, chúng ta cần tải dữ liệu và đảm bảo rằng các biến được mã hóa chính xác:
# Tải các gói cần thiết
require(ggplot2)
require(GGally)
require(reshape2)
require(lme4)
require(compiler)
require(parallel)
require(boot)
require(lattice)
# Tải dữ liệu
hdp <- read.csv("https://stats.idre.ucla.edu/stat/data/hdp.csv")
# Chuyển đổi biến thành yếu tố
hdp <- within(hdp, {
Married <- factor(Married, levels = 0:1, labels = c("no", "yes"))
DID <- factor(DID)
HID <- factor(HID)
CancerStage <- factor(CancerStage)
})
Điều quan trọng là phải khám phá dữ liệu trước khi xây dựng mô hình. Điều này có thể giúp chúng ta xác định các lỗi mã hóa tiềm ẩn, hiểu phân phối của các biến và đánh giá các mối quan hệ giữa các biến dự đoán.
# Vẽ đồ thị các biến dự đoán liên tục
ggpairs(hdp[, c("IL6", "CRP", "LengthofStay", "Experience")])
# Kiểm tra phân phối của các biến theo Giai đoạn Ung thư
ggplot(hdp, aes(x = CancerStage, y = LengthofStay)) +
stat_sum(aes(size = ..n.., group = 1)) +
scale_size_area(max_size = 10)
tmp <- melt(hdp[, c("CancerStage", "IL6", "CRP")], id.vars = "CancerStage")
ggplot(tmp, aes(x = CancerStage, y = value)) +
geom_jitter(alpha = .1) +
geom_violin(alpha = .75) +
facet_grid(variable ~ .) +
scale_y_sqrt()
Bây giờ chúng ta đã chuẩn bị và khám phá dữ liệu, chúng ta có thể ước tính mô hình LME bằng lệnh glmer
:
m <- glmer(remission ~ IL6 + CRP + CancerStage + LengthofStay + Experience + (1 | DID),
data = hdp,
family = binomial,
control = glmerControl(optimizer = "bobyqa"),
nAGQ = 10)
# In kết quả mô hình
print(m, corr = FALSE)
Kết quả mô hình cung cấp thông tin chi tiết về tác động của các biến dự đoán lên log-odds của thuyên giảm. Các hệ số cấp cố định đại diện cho các hệ số hồi quy, trong khi các hiệu ứng ngẫu nhiên đại diện cho sự thay đổi trong chặn theo ID bác sĩ (DID).
Chúng ta có thể tính toán khoảng tin cậy (CI) cho các hệ số và chuyển đổi chúng thành tỷ lệ odds để dễ dàng giải thích:
# Tính sai số chuẩn
se <- sqrt(diag(vcov(m)))
# Bảng các ước tính với CI 95%
tab <- cbind(
Est = fixef(m),
LL = fixef(m) - 1.96 * se,
UL = fixef(m) + 1.96 * se
)
# Tỷ lệ Odds
exp(tab)
Việc đánh giá mô hình bao gồm việc kiểm tra phân phối hiệu ứng ngẫu nhiên, kiểm tra ảnh hưởng và đánh giá hiệu suất mô hình.
# Lấy dự đoán
tmpdat <- hdp[, c("IL6", "CRP", "CancerStage", "LengthofStay", "Experience", "DID")]
jvalues <- with(hdp, seq(from = min(LengthofStay), to = max(LengthofStay), length.out = 100))
pp <- lapply(jvalues, function(j) {
tmpdat$LengthofStay <- j
predict(m, newdata = tmpdat, type = "response")
})
# Tính trung bình xác suất dự đoán
sapply(pp[c(1, 20, 40, 60, 80, 100)], mean)
Phân tích hồi quy logistic hỗn hợp hiệu ứng tuyến tính (LME) là một công cụ mạnh mẽ để mô hình hóa kết quả nhị phân trong dữ liệu phân cấp. Bằng cách tính đến cấu trúc phân cấp của dữ liệu, LME có thể cung cấp thông tin chính xác và đáng tin cậy hơn so với các phương pháp thống kê truyền thống. Sử dụng các ví dụ thực tế và mã R, hướng dẫn này đã cung cấp một lộ trình từng bước để thực hiện và giải thích phân tích LME. Với kiến thức này, các nhà nghiên cứu có thể khám phá một cách tự tin các mối quan hệ phức tạp trong dữ liệu phân cấp và đưa ra những kết luận có ý nghĩa.
Bài viết liên quan