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 dữ liệu và ứng dụng | Đại học Dược Hà Nội | 12/6 to 17/6/2019
© Tuan V. Nguyen
Mô hình hồi qui tuyến tính
• Phân tích tương quan
• Mô hình hồi qui tuyến tính đơn giản
• Kiểm tra giả định mô hình hồi qui tuyến tính
Khái niệm tương quan (correlation)
• Khi hai biến số (x và y) có liên
quan với nhau
• Mối liên quan có thể cùng
chiều hay nghịch đảo
• Ví dụ: mối liên quan giữa tiêu
thụ chocolate và giải Nobel (?)
Tương quan giữa 2 biến liên tục
Làm sao định lượng mối liên quan?
Sir Francis Galton (16/2/1822 – 17/1/1911)
Research interest:
“Those qualifications of
intellect and disposition
which … lead to
reputation”
Didn’t have data on “intelligence” so instead
studied HEIGHT
Galton’s conclusions:
• Nature dominates: “families of reputation were
much more likely than ordinary families to produce
offspring of ability”
• Recommended “judicious marriages during
several generations” to “produce a highly
gifted race of men”
• His “genetic utopia”: “Bright, healthy
individuals were treated and paid well, and
encouraged to have plenty of children. Social
undesirables were treated with reasonable
kindness so long as they worked hard and
stayed celibate.”
J Singer's slide
• Although a self-proclaimed genius, who wrote that he
could read @2½, write/do arithmetic @4, and was
comfortable with Latin texts @8, he couldn’t figure
out how to model these data(!)
• He went to JD Dickson, a mathematician at
Cambridge, who formalized the relationship by
developing what we now know as linear regression
Làm thế nào để mô tả mối tương quan tuyến tính?
• Gọi X và Y là 2 biến ngẫu nhiên từ n quan sát
• Đo lường độ biến thiên: phương sai (variance)
n
( xi - x )2
i =1
n -1
var( x ) = å
n
( yi - y )2
i =1
n -1
var( y ) = å
• Chúng ta cần một thước đo độ "hiệp biến" giữa X và Y
• Covariance là trung bình của tích số X và Y
1 n
å ( xi - x )( yi - y )
cov( x, y ) =
n - 1 i =1
Ước tính hệ số tương quan
• Covariance có đơn vị đo lường (X * Y).
• Coefficient of correlation (r) giữa X và Y là một standardized covariance
– không có đơn vị đo lường
• r định nghĩa như sau:
r=
cov( x, y )
cov( x, y )
=
var( x ) ´ var( y ) SDx ´ SDy
Obesity data (Vietnam)
•
Nghiên cứu cắt ngang >1100 nam và nữ (Việt Nam)
•
Mục tiêu: ước tính hệ số tương quan giữa tỉ trọng cơ thể (bmi) và tỉ trọng mỡ
(pcfat)
ob = read.csv("~/Dropbox/_Conferences and Workshops/Dai hoc Duoc 62019/Datasets/obesity data.csv")
dim(ob)
[1] 1217
11
> head(ob)
id gender height weight bmi age bmc bmd
fat lean pcfat
1 1
F
150
49 21.8 53 1312 0.88 17802 28600 37.3
2 2
M
165
52 19.1 65 1309 0.84 8381 40229 16.8
3 3
F
157
57 23.1 64 1230 0.84 19221 36057 34.0
4 4
F
156
53 21.8 56 1171 0.80 17472 33094 33.8
5 5
M
160
51 19.9 54 1681 0.98 7336 40621 14.8
6 6
F
153
47 20.1 52 1358 0.91 14904 30068 32.2
Hàm cor.test
> cor.test(ob$bmi, ob$pcfat)
data:
ob$bmi and ob$pcfat
t = 17.123, df = 1215, p-value < 2.2e-16
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
0.3944998 0.4850923
sample estimates:
cor
0.4409183
Phân tích tương quan đa biến (GGally)
• Hàm cor.test chỉ tính toán tương quan giữa 2 biến
• Với k biến, chúng ta có k(k – 1)/2 hệ số tương quan
• Mục tiêu: tính toán tất cả mối tương quan
• Package "GGally"
library("GGally")
ggcorr(dat, label=T)
Phân tích tương quan đa biến
Dữ liệu: tất cả biến số phải là biến liên tục
# Mục tiêu: tính hệ số tương quan cho nhiều biến trong ob
# loại trừ 2 cột đầu tiên của ob, chỉ quan tâm đến các biến liên tục
dat = ob[, -c(1,2)]
library("GGally")
ggcorr(dat, label=T)
# loại bỏ 2 biến số 1 và 2 (id, gender)
dat = ob[, -c(1,2)]
# loại bỏ 2 biến số 1 và 2 (id, gender)
library("GGally")
ggcorr(dat, label=T)
pcfat
bmd
lean
-0.4
fat
0.1
0.8
-0.1
0.4
-0.3
1.0
0.5
bmc
0.9
0
0.7
-0.4
age
-0.5
-0.4
0.2
-0.2
0.3
bmi
0.2
0.2
0.1
0.8
0.5
0.4
weight
0.8
0
0.6
0.3
0.6
0.8
0.1
0.6
0
-0.4
0.7
0.4
-0.1
0.8
-0.5
0.0
-0.5
height
-1.0
ggpairs(dat)
Hàm pairs.panels trong psych
dat = ob[, -c(1,2)]
# Gọi package psych và dùng hàm pairs.panels
library(psych)
pairs.panels(dat)
r và R2
• r là hệ số tương quan
• R2 là hệ số xác định (coefficient of determination)
phản ảnh phần trăm phương sai của y có thể giải thích bởi
biến x
• r(weight, BMD) = 0.33 có nghĩa là R2 = (0.33)2 = 0.11.
11% độ khác biệt về BMD có thể giải thích bằng những khác
biệt về cân nặng
-2
Y
20
-4
30
Y
40
0
50
2
60
Ý tưởng và nhu cầu mô hình hồi qui tuyến tính
2
4
6
8
10
X
12
14
16
2
4
6
8
10
12
14
16
X
Làm cách nào để định lượng hóa mối liên quan giữa Y và X ?
Ý tưởng mô hình hồi qui tuyến tính
• Biến phụ thuộc (Y) phải là biến liên tục (vd: pcfat)
• Biến tiên lượng (X) hay predictor variables: không giới hạn (vd:
giới tính, tuổi)
• Hồi qui tuyến tính đơn giản (simple linear regression model)
– có một biến tiên lượng
Mô hình hồi qui tuyến tính
Mô hình:
Y = a + bX + e
a : intercept
b : slope / gradient
ε : sai số ngẫu nhiên (random error – những dao động về Y trong
mỗi giá trị X)
Giả định
• Mối liên quan giữa X và Y là tuyến tính (linear) về tham số
• X không có sai số ngẫu nhiên
• Giá trị của Y độc lập với nhau (vd, Y1 không liên quan với Y2) ;
• Sai số ngẫu nhiên (e): phân bố chuẩn, trung bình 0, phương sai bất
biến
ε ~ N(0, s2)
Tham số của mô hình HQTT
• Mô hình
Y = a + bX + e
• Chúng ta không biết α và β
• Nhưng có thể dùng dữ liệu thí nghiệm / thực tế để ước tính 2 tham
số đó
• Ước số (estimate) của α và β là a và b
Phương pháp "Least square"
yˆ i = a + bxi
d i = yi - yˆ i
yi
Y
X
Tìm công thức (estimator) để tính a và b sao cho tổng d2 là nhỏ nhất à Least
square method = Bình phương nhỏ nhất
Ước tính tham số mô hình HQTT bằng R
• Mô hình hồi qui tuyến tính:
y = α + β*X + ε
• Triển khai bằng R: hàm "lm"
lm(y~ x)
Ví dụ: nghiên cứu về tỉ trọng mỡ (pcfat)
•
Nghiên cứu cắt ngang, 1217 nam và nữ (Việt Nam)
•
Câu hỏi 1: Ảnh hưởng của tuổi đến tỉ trọng mỡ ?
•
Câu hỏi 2: Tỉ trọng mỡ khác nhau giữa nam và nữ
ob = read.csv("~/Dropbox/_Conferences and Workshops/Dai hoc Duoc 62019/Datasets/obesity data.csv")
> head(ob)
id gender height weight bmi age bmc bmd
fat lean pcfat
1 1
F
150
49 21.8 53 1312 0.88 17802 28600 37.3
2 2
M
165
52 19.1 65 1309 0.84 8381 40229 16.8
3 3
F
157
57 23.1 64 1230 0.84 19221 36057 34.0
4 4
F
156
53 21.8 56 1171 0.80 17472 33094 33.8
5 5
M
160
51 19.9 54 1681 0.98 7336 40621 14.8
6 6
F
153
47 20.1 52 1358 0.91 14904 30068 32.2