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)] # loại bỏ 2 biến số 1 và 2 (id, gender)
library("GGally")
ggcorr(dat, label=T)dat = ob[, -c(1,2)] # loại bỏ 2 biến số 1 và 2 (id, gender)
library("GGally")
ggcorr(dat, label=T)
1.0ggpairs(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
37 trang |
Chia sẻ: thanhle95 | Lượt xem: 623 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Bài giảng Phân tích dữ liệu và ứng dụng - Bài 7a: Mô hình hồi quy tuyến tính đơn giản, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trê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 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)
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.”
Didn’t have data on “intelligence” so instead
studied HEIGHT
• 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
Research interest:
“Those qualifications of
intellect and disposition
which lead to
reputation”
J Singer's slide
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
i
i
n
xxx
1
2
1
var ( ) ( )å
= -
-
=
n
i
i
n
yyy
1
2
1
var
• 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
( ) ( )( )å
=
--
-
=
n
i ii
yyxx
n
yx
11
1,cov
Ướ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:
( )
( ) ( )
( )
yx SDSD
yx
yx
yxr
´
=
´
=
,cov
varvar
,cov
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 6-
2019/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)] # loại bỏ 2 biến số 1 và 2 (id, gender)
library("GGally")
ggcorr(dat, label=T)
dat = ob[, -c(1,2)] # loại bỏ 2 biến số 1 và 2 (id, gender)
library("GGally")
ggcorr(dat, label=T)
0.6 0 -0.4 0.7 0.4 -0.1 0.8 -0.5
0.8 0 0.6 0.3 0.6 0.8 0.1
0.2 0.2 0.1 0.8 0.5 0.4
-0.5 -0.4 0.2 -0.2 0.3
0.9 0 0.7 -0.4
-0.1 0.4 -0.3
0.1 0.8
-0.4
height
weight
bmi
age
bmc
bmd
fat
lean
pcfat
-1.0
-0.5
0.0
0.5
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
Ý tưởng và nhu cầu mô hình hồi qui tuyến tính
2 4 6 8 10 12 14 16
20
30
40
50
60
X
Y
2 4 6 8 10 12 14 16
-4
-2
0
2
X
Y
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)
• 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)
Giả định
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
X
ii bxay +=ˆ
iii yyd ˆ-=
yi
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 6-
2019/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
Biểu đồ
20 40 60 80
10
20
30
40
ob$age
ob
$p
cf
at
F M
10
20
30
40
plot(ob$pcfat ~ ob$age, pch=16, col="blue")
boxplot(ob$pcfat ~ ob$gender, col="blue", border="green")
Triển khai câu hỏi nghiên cứu bằng R
• Ảnh hưởng của tuổi đến tỉ trọng mỡ ?
m1 = lm(pcfat ~ age, data=ob)
summary(m1)
• Khác biệt về tỉ trọng mỡ giữa nam và nữ ?
m2 = lm(pcfat ~ gender, data=ob)
summary(m2)
Câu hỏi 1: tuổi và tỉ trọng mỡ
> m1 = lm(pcfat ~ age, data=ob)
> summary(m1)
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 25.58408 0.57003 44.88 <2e-16 ***
age 0.12769 0.01135 11.25 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 6.839 on 1215 degrees of freedom
Multiple R-squared: 0.09431, Adjusted R-squared: 0.09357
F-statistic: 126.5 on 1 and 1215 DF, p-value: < 2.2e-16
Tuổi và tỉ trọng mỡ: diễn giải
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 25.58408 0.57003 44.88 <2e-16 ***
age 0.12769 0.01135 11.25 <2e-16 ***
Mô hình (giả thuyết)
pcfat = α + β(age) + ε
Phương trình
pcfat = 25.6 + 0.13*age
Diễn giải: Mỗi năm tăng độ tuổi, tỉ trọng mỡ tăng 0.13% (SE 0.011), và mối
liên quan này có ý nghĩa thống kê (P < 0.0001)
a = 25.6 (ước số của α)
b = 0.13 (ước số của β)
m1 = lm(pcfat ~ age, data=ob)
plot(ob$pcfat ~ ob$age, pch=16, col="blue")
abline(m1, col="red")
20 40 60 80
10
20
30
40
ob$age
ob
$p
cf
at
pcfat = 25.6 + 0.13*age
Khác biệt về pcfat giữa nam và nữ: diễn giải
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 34.6724 0.1826 189.9 <2e-16 ***
genderM -10.5163 0.3381 -31.1 <2e-16 ***
Mô hình (giả thuyết)
pcfat = α + β(gender) + ε
Phương trình
pcfat = 34.7 – 10.5*gender(M)
Diễn giải: Nam có tỉ trọng mỡ thấp hơn nữ 10.5% (SE 0.34%), và sự khác
biệt này có ý nghĩa thống kê (P < 0.0001)
Khác biệt gvề pcfat giữa nam và nữ: diễn giải
Residual standard error: 5.362 on 1215 degrees of freedom
Multiple R-squared: 0.4432, Adjusted R-squared: 0.4428
F-statistic: 967.3 on 1 and 1215 DF, p-value: < 2.2e-16
Diễn giải: Khác biệt giữa nam và nữ giải thích 44% những khác biệt về
phương sai của tỉ trọng mỡ.
Báo cáo qua package "stargazer"
library(stargazer)
stargazer(m1, type="text") # text, htmll latex
> stargazer(m1, type="text")
===============================================
Dependent variable:
---------------------------
pcfat
-----------------------------------------------
age 0.128***
(0.011)
Constant 25.584***
(0.570)
-----------------------------------------------
Observations 1,217
R2 0.094
Adjusted R2 0.094
Residual Std. Error 6.839 (df = 1215)
F Statistic 126.519*** (df = 1; 1215)
===============================================
Note: *p<0.1; **p<0.05; ***p<0.01
• 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 (homogeneity)
ε ~ N(0, s2)
Giả định mô hình hồi qui tuyến tính
Kiểm tra qua "plot"
m1 = lm(pcfat ~ age, data=ob)
par(mfrow=c(2,2))
plot(m1)
28 30 32 34 36
-2
0
0
10
20
Fitted values
R
es
id
ua
ls
Residuals vs Fitted
972210 858
-3 -2 -1 0 1 2 3
-3
-1
1
2
3
Theoretical Quantiles
S
ta
nd
ar
di
ze
d
re
si
du
al
s
Normal Q-Q
972210858
28 30 32 34 36
0.
0
0.
5
1.
0
1.
5
Fitted values
S
ta
nd
ar
di
ze
d
re
si
du
al
s
Scale-Location
972210 858
0.000 0.001 0.002 0.003 0.004 0.005
-4
-2
0
1
2
3
Leverage
S
ta
nd
ar
di
ze
d
re
si
du
al
s
Cook's distance
Residuals vs Leverage
858
245
972
Tóm tắt: mô hình hồi qui tuyến tính
• Một phương pháp định lượng hóa một mối tương quan
• Mô hình cơ bản
y = α + β*X + ε
• Triển khai bằng R
lm(y ~ x, data=xxx)