1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Ứng dụng mô hình hồi quy tuyến tính: Tiên lượng

22 30 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 22
Dung lượng 1,9 MB

Nội dung

Nội dung của bài giảng trình bày xây dựng mô hình tiên lượng tỉ trọng mỡ; dùng BMA tìm mô hình tối ưu; xây dựng mô hình; kiểm tra mô hình tiên lượng, mô hình hồi quy tuyến tính đa biến.

Tuan V Nguyen Senior Principal Research Fellow, Garvan Institute of Medical Research Professor, UNSW School of Public Health and Community Medicine Professor of Predictive Medicine, University of Technology Sydney Adj Professor of Epidemiology and Biostatistics, School of Medicine Sydney, University of Notre Dame Australia Phân tích liệu ứng dụng | Đại học Dược Hà Nội | 12/6 to 17/6/2019 â Tuan V Nguyen Ni dung ã Mụ hỡnh hồi qui tuyến tính đa biến • Ứng dụng 1: đánh giá mối liên quan (association / assessment) • Ứng dụng 2: hiệu chỉnh cho yếu tố nhiễu (adjustment) • Ứng dụng 3: mơ hình tiên lượng (prediction) Xây dựng mơ hình tiên lượng tỉ trọng mỡ • Để đo tỉ trọng mỡ (pcfat), cần phải có máy DXA (đắt tiền) • Có thể xây dựng mơ hình tiên lượng pcfat cần dùng yếu tố 'thường qui' (có thể thu thập từ bệnh nhân) • Các biến thuờng qui: giới tính (gender), chiều cao (height), cân nặng (weight), tỉ trọng thể (bmi), tuổi (age) • Giải pháp: mơ hình hồi qui tuyến tính Xây dựng mơ hình tiên lượng tỉ trọng mỡ • Bước 1: Phân tích khai thác (exploratory analysis) • Bước 2: Tìm biến liên quan (có giá trị thống kê) • Bước 3: Chia liệu thành nhóm: development validation • Bước 4: Phát triển mơ hình dựa vào biến bước nhóm development • Bước 5: Kiểm tra mơ hình bước nhóm validation Bước 1: Phân tích mơ tả / khai thác # Các biến liên quan dat = ob[, c("gender", "weight", "height", "bmi", "age", "pcfat")] library(GGally) ggpairs(dat) Bước 2: Dùng BMA tìm biến liên quan > head(ob) id gender height weight bmi age WBBMC wbbmd fat lean pcfat 1 F 150 49 21.8 53 1312 0.88 17802 28600 37.3 2 M 165 52 19.1 65 1309 0.84 8381 40229 16.8 3 F 157 57 23.1 64 1230 0.84 19221 36057 34.0 4 F 156 53 21.8 56 1171 0.80 17472 33094 33.8 library(BMA) yvar = ob[, ("pcfat")] xvars = ob[, c("gender", "height", "weight", "bmi", "age")] bma = bicreg(xvars, yvar, strict=FALSE, OR=20) summary(bma) Dùng BMA tìm mơ hình tối ưu > summary(bma) models were selected Best models (cumulative posterior probability = Intercept genderM height weight bmi age nVar r2 BIC post prob p!=0 100.0 100.0 31.4 39.2 100.0 100.0 EV 5.26146 -11.25139 0.01759 0.03102 1.01265 0.05259 SD 4.582901 0.429659 0.028494 0.042611 0.111625 0.008048 ): model 7.958e+00 -1.144e+01 7.921e-02 8.942e-01 5.497e-02 model -7.928e-01 -1.143e+01 5.598e-02 1.089e+00 5.473e-02 model 8.137e+00 -1.081e+01 1.089e+00 4.715e-02 0.697 -1.423e+03 0.392 0.696 -1.423e+03 0.314 0.695 -1.422e+03 0.294 Diễn giải kết BMA: p!=0 > summary(bma) models were selected Best models (cumulative posterior probability = Intercept genderM height weight bmi age p!=0 100.0 100.0 31.4 39.2 100.0 100.0 EV 5.26146 -11.25139 0.01759 0.03102 1.01265 0.05259 SD 4.582901 0.429659 0.028494 0.042611 0.111625 0.008048 model 7.958e+00 -1.144e+01 7.921e-02 8.942e-01 5.497e-02 ): model -7.928e-01 -1.143e+01 5.598e-02 1.089e+00 5.473e-02 model 8.137e+00 -1.081e+01 1.089e+00 4.715e-02 • Dùng biến cung cấp (gender, height, weight, bmi age) BMA tìm mơ hình 'tối ưu' • "p!=0" có nghĩa xác suất biến số có 'ảnh hưởng' Vd: xác suất mà height có ảnh hưởng đến pcfat 31.4%, weight 39.2%, age 100% Bước 3: Chia liệu thành nhóm Chúng ta chia liệu thành nhóm: development (60%) validation (40%) Tổng số cỡ mẫu (n = 1217) Development / Training (n = 1217*0.6) Validation / Testing (n = 1217*0.4) Xây dựng mô hình tiên lượng Kiểm tra mơ hình tiên lượng Bước 3: Chia liệu thành nhóm Tổng số cỡ mẫu (n = 1217) Development / Training (n = 1217*0.6) Dùng phương pháp "thủ công" rows = nrow(ob) prop = 0.6 upper = floor(prop*rows) permutation = ob[sample(rows), ] dev = permutation[1:upper, ] val = permutation[(upper+1):rows, ] Validation / Testing (n = 1217*0.4) Dùng "caret", hàm createDataPartition library(caret) sample = createDataPartition(ob$pcfat, p=0.6, list=F) dev = ob[sample, ] val = ob[-sample, ] Bước 4: Xây dựng mơ hình (training) rows = nrow(ob) prop = 0.6 upper = floor(prop*rows) permutation = ob[sample(rows), ] dev = permutation[1:upper, ] val = permutation[(upper+1):rows, ] # Xây dựng mơ hình dùng liệu dev m = lm(pcfat ~ gender + age + bmi + weight, data=dev) summary(m) Bước 4: Xây dựng mơ hình (training) > m = lm(pcfat ~ gender + age + bmi + weight, data=dev) > summary(m) Coefficients: Estimate Std Error t value Pr(>|t|) (Intercept) 8.11642 1.13548 7.148 2.15e-12 *** genderM -12.03375 0.44972 -26.758 < 2e-16 *** age 0.06165 0.00955 6.456 1.97e-10 *** bmi 0.73709 0.10090 7.305 7.32e-13 *** weight 0.13856 0.03629 3.818 0.000146 *** Signif codes: ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ Residual standard error: 3.997 on 725 degrees of freedom Multiple R-squared: 0.6885, Adjusted R-squared: 0.6868 F-statistic: 400.6 on and 725 DF, p-value: < 2.2e-16 Bước 5: Kiểm tra mơ hình (validation) m = lm(pcfat ~ gender + age + bmi + weight, data = dev) # Kiểm tra mơ hình dùng liệu val # Dùng hàm predict val$pred = predict(m, newdata = val) val$resid = val$pred-val$pcfat # Vẽ residuals vs giá trị tiên lượng plot(val$resid ~ val$pred) # Tính RMSE – residual mean square error sum(val$resid^2) / (nrow(val)-5) # Tính R-square cor(val$pred, val$pcfat)^2 -5 > sum(val$resid^2) / (nrow(val)-5) [1] 17.97093 -10 > cor(val$pred, val$pcfat)^2 [1] 0.6565799 -15 val$resid 10 15 val$pred = predict(m, newdata = val) val$resid = val$pred-val$pcfat 20 30 40 val$pred 50 Bước 5: Kiểm tra mô hình (validation) val$pred = predict(m, newdata = val) val$resid = val$pred-val$pcfat > sum(val$resid^2) / (nrow(val)-5) [1] 17.97093 > cor(val$pred, val$pcfat)^2 [1] 0.6565799 Training testing mơ hình qua "caret" library(caret) # Chia mẫu thành development validation sample = createDataPartition(ob$pcfat, p=0.6, list=F) dev = ob[sample, ] val = ob[-sample, ] # Huấn luyện mơ hình: dùng hàm "train" control = trainControl(method="cv", number=10) training = train(pcfat ~ gender + age + bmi + weight, data=dev, method="lm", trControl=control, metric="Rsquared") summary(training) Kết training > summary(training) Coefficients: Estimate Std Error t value Pr(>|t|) (Intercept) 7.108911 1.113591 6.384 3.08e-10 *** genderM -11.987929 0.430910 -27.820 < 2e-16 *** age 0.054309 0.009447 5.749 1.32e-08 *** bmi 0.830378 0.101628 8.171 1.36e-15 *** weight 0.123183 0.036436 3.381 0.000762 *** Signif codes: ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ Residual standard error: 3.895 on 726 degrees of freedom Multiple R-squared: 0.7152, Adjusted R-squared: 0.7136 F-statistic: 455.7 on and 726 DF, p-value: < 2.2e-16 Kiểm tra mơ hình tiên lượng (caret) # Kiểm tra mơ hình (val), tính giá trị tiên lượng pred = predict(training, newdata=val) model.values = data.frame(obs=val$pcfat, pred) plot(pred ~ ob$pcfat, pch=16) RMSE Rsquared 4.1844599 0.6483567 pred > defaultSummary(model.values) 15 20 25 30 35 40 45 defaultSummary(model.values) 10 20 30 val$pcfat 40 Tóm tắt Mơ hình hồi qui tuyến tính đa biến • Biến outcome: liên tục; biến tiên lượng: liên tục phân nhóm, định tính • Ứng dụng 1: đánh giá mối liên quan – đánh giá ý nghĩa thống kê – đánh giá tầm quan trọng • Ứng dụng 2: hiệu chỉnh cho 'covariates' – lưu ý đến ảnh hưởng tương tác • Ứng dụng 3: tiên lượng – training testing Các hàm R học • Hàm m = lm(y ~ x1 + x2 + x3, data = xx) • Hiển thị mơ hình library(visreg) visreg(m, xvar="age", gg=T) • Đánh giá tầm quan trọng library(relaimpo) calc.relimp(m, type="lmg", rela=T, rank=T) • Tìm biến liên quan library(BMA) bma = bicreg(xvars, yvar, strict=FALSE, OR=20) Các hàm R học • Chia data thành nhóm library(caret) sample = createDataPartition(ob$pcfat, p=0.6, list=F) dev = ob[sample, ] val = ob[-sample, ] • Training mơ hình control = trainControl(method="cv", number=10) training = train(y ~ , data=dev, method="lm", trControl=control, metric="Rsquared") • Kiểm tra mơ hình pred = predict(training, newdata=val) model.values = data.frame(obs=val$pcfat, pred) defaultSummary(model.values) ... dung • Mơ hình hồi qui tuyến tính đa biến • Ứng dụng 1: đánh giá mối liên quan (association / assessment) • Ứng dụng 2: hiệu chỉnh cho yếu tố nhiễu (adjustment) • Ứng dụng 3: mơ hình tiên lượng (prediction)... defaultSummary(model.values) 10 20 30 val$pcfat 40 Tóm tắt Mơ hình hồi qui tuyến tính đa biến • Biến outcome: liên tục; biến tiên lượng: liên tục phân nhóm, định tính • Ứng dụng 1: đánh giá mối liên quan – đánh giá... • Ứng dụng 2: hiệu chỉnh cho 'covariates' – lưu ý đến ảnh hưởng tương tác • Ứng dụng 3: tiên lượng – training testing Các hàm R học • Hàm m = lm(y ~ x1 + x2 + x3, data = xx) • Hiển thị mơ hình

Ngày đăng: 24/10/2020, 00:17

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w