Friday, October 2, 2015

Biểu đồ tương quan (scatter plot)

Để mô tả mối tương quan giữa hai biến liên tục, biểu đồ tán xạ (scatter plot) rất có ích. Bài này giới thiệu những hàm R phổ biến để thể hiện mối tương quan.



 Quay lại với dữ liệu dùng trong biểu đồ hộp, chúng ta có những biến sau đây:

ID: Mã số của cá nhân
Gender: Giới tính (giá trị Male, Female)
Age: Độ tuổi  (biến liên tục)
Height: Chiều cao (biến liên tục)
Weight: Trọng lượng cơ thể (biến liên tục)
FN: Xương đùi (biến liên tục) 
LS: Xương cột sống  (biến liên tục)
Disease: Bệnh (yes, no)

Giả dụ chúng ta quan tâm đến mối tương quan giữa độ tuổi và FN, hàm plot là hàm đơn giản nhất để thể hiện:

dat = read.csv("~/Google Drive/_QA Book (Vietnamese)/Data/ex-data.csv", header=T)

attach(dat)

plot(FN ~ Age, pch=16, col="blue") 

Chúng ta có thể thêm đường biểu diễn hồi qui tuyến tính bằng cách dùng hàm abline():

plot(FN ~ Age, pch=16, col="blue")

# Tìm hàm số tuyến tính
m = lm(FN ~ Age)

abline(m, col="red")

Chúng ta muốn thể hiện mối tương quan cho nam và nữ (biến Gender). Để giải đáp vấn đề này, chúng ta phải dùng ggplot2:

library(ggplot2)
p = ggplot(data=dat, aes(x=Age, y=FN))
p + geom_point(aes(col=Gender))  

Thêm đường biểu diễn tuyến tính:
p = ggplot(data=dat, aes(x=Age, y=FN, fill=Gender))
p + geom_point(aes(col=Gender)) + geom_smooth(method="lm")

Thêm đường biểu diễn khác, và kích thước mỗi điểm phụ thuộc vào Weight:

p = ggplot(dat, aes(x=Age, y=FN, fill=Gender))
p + geom_point(aes(col=Gender, size=Weight)) + geom_smooth(method="lm", formula=y~x+I(x^2))


Có thể dùng theme_bw() cho ... sáng: 


p = ggplot(dat, aes(x=Age, y=FN, fill=Gender))

p + geom_point(aes(col=Gender, size=Weight)) + geom_smooth() + theme_bw()









No comments:

Post a Comment