Bài giảng Hiển thị dữ liệu (Data visualization)

50 53 0
Bài giảng Hiển thị dữ liệu (Data visualization)

Đ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

Nội dung của bài giảng trình bày biểu đồ phân bố geom histogram; điểm thi mô Toán; tuổi thọ của vài lãnh đạo; box plot geom boxplot; 5 yếu tố trong biểu đồ hộp; không nên dùng barplot để mô tả biến liên tục; biểu đồ tán xạ; scatter plot dữ liệu theo thời gian...

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 Biu Phõn b: histogram • Tần số: barplot • So sánh: boxplot • Liên quan: scatterplot Obesity data (Vietnam) • Cross-sectional study of obesity in Vietnam • Aim: to predict percent body fat (pcfat) by using gender, age, bmi dat = read.csv("~/Dropbox/_Conferences and Workshops/TDTU 2018/Datasets/obesity data.csv") dim(dat) [1] 1217 11 head(dat) 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 5 M 160 51 19.9 54 1681 0.98 7336 40621 14.8 6 F 153 47 20.1 52 1358 0.91 14904 30068 32.2 Histogram Biểu đồ phân bố: geom_histogram() • Mục tiêu: mơ tả phân bố liệu • Có thể so sánh phân bố hay nhiều nhóm • Ví dụ: Phân bố pcfat (tỉ trọng mỡ) dat = read.csv("~/Dropbox/_Conferences and Workshops/TDTU 2018/Datasets/obesity data.csv") # Biểu đồ đơn giản library(ggplot2); library(gridExtra) p = ggplot(data=dat, aes(x=pcfat)) p1 = p + geom_histogram(color="white", fill="blue") p = p + geom_histogram(aes(y= density ), color="white", fill="blue") p2 = p + geom_density(col="red") grid.arrange(p1, p2, ncol=2) # Biểu đồ đơn giản 100 library(ggplot2); library(gridExtra) 0.06 p = ggplot(data=dat, aes(x=pcfat)) 75 p1 = p + geom_histogram(color="white", fill="blue") density count 0.04 50 p = p + geom_histogram(aes(y= density ), color="white", fill="blue") p2 = p + geom_density(col="red") 0.02 25 grid.arrange(p1, p2, ncol=2) 0.00 10 20 30 pcfat 40 50 10 20 30 pcfat 40 50 100 Phân tích theo giới tính 75 p = ggplot(data=dat, aes(x=pcfat, fill=gender)) count gender 50 F M 25 p1 = p + geom_histogram(position="dodge") 10 20 30 40 50 pcfat 0.08 p2 = ggplot(data=dat, aes(x=pcfat, fill=gender, color=gender)) + geom_density(alpha = 0.1) density grid.arrange(p1, p2, nrow=2) 0.06 gender 0.04 F M 0.02 0.00 10 20 30 pcfat 40 50 Điểm thi môn toán (2018) dat = read.csv("~/Dropbox/_Conferences and Workshops/TDTU 2018/Datasets/THPT 2018 All Provinces.csv") > head(dat) ID Province Math Viet English Physics Chemistry Biology History Geography 1 VN 3.0 3.75 3.0 NA NA NA 3.0 6.50 2 VN 8.8 7.50 9.0 NA NA NA 6.0 9.00 3 VN 6.0 5.50 4.0 5.75 5.5 5.00 NA NA 4 VN 3.4 5.75 2.6 NA NA NA 3.5 4.75 5 VN 3.8 6.75 3.0 NA NA NA 3.5 6.25 6 VN 5.0 6.50 2.2 2.00 3.5 4.25 NA NA p = ggplot(data=dat, aes(x=Math, fill=Province, color=Province)) p = p + geom_density(alpha = 0.1) 0.4 0.3 Province density Bac Lieu Can Tho Ha Giang 0.2 Hoa Binh Son La VN 0.1 0.0 0.0 2.5 5.0 7.5 10.0 Math p = ggplot(data=dat, aes(x=Math, fill=Province, color=Province)) p = p + geom_density(alpha = 0.1) Bar plot Điểm học sinh p = ggplot(data=hs, aes(x=Score, y=Total, group=1, col=factor(ID))) p = p + geom_line() + geom_point() + facet_wrap(~ID) p + ggtitle("Tổng số điểm cho thí sinh, chấm lần lần ") + theme(legend.position="none") Điểm học sinh p = ggplot(data=hs, aes(x=Score, y=Math, col=factor(ID), group=factor(ID))) p = p + geom_line() + stat_smooth(aes(group = 1)) p1 = p + ggtitle("Toán") + theme_bw() + theme(legend.position="none") 7.5 Physics Math 7.5 5.0 5.0 2.5 0.0 0.0 1.00 1.25 1.50 1.75 2.00 1.00 1.25 Score 1.50 1.75 2.00 Score Hóa học Sinh học 7.5 Biology p = ggplot(data=hs, aes(x=Score, y=Chemistry, col=factor(ID), group=factor(ID))) p = p + geom_line() + stat_smooth(aes(group = 1)) p3 = p + ggtitle("Hóa học") + theme_bw() + theme(legend.position="none") Vật lí 10.0 2.5 Chemistry p = ggplot(data=hs, aes(x=Score, y=Physics, col=factor(ID), group=factor(ID))) p = p + geom_line() + stat_smooth(aes(group = 1)) p2 = p + ggtitle("Vật lí") + theme_bw() + theme(legend.position="none") Tốn 10.0 5.0 2.5 p = ggplot(data=hs, aes(x=Score, y=Biology, col=factor(ID), group=factor(ID))) p = p + geom_line() + stat_smooth(aes(group = 1)) p4 = p + ggtitle("Sinh học") + theme_bw() + theme(legend.position="none") 1.00 1.25 1.50 Score 1.75 2.00 1.00 1.25 1.50 Score 1.75 2.00 Phân bố điểm kì kì (chấm lại) p = ggplot(data=hs, aes(x=Total, fill=Score)) p1 = p + geom_histogram(position="dodge") + xlab("Tổng số điểm") + ylab("Số thí sinh") + theme(legend.position="none") p2 = ggplot(data=hs, aes(x=Total, fill=Score, color=Score)) + geom_density(alpha = 0.1) + xlab("Tổng số điểm") + ylab("Xác suất") grid.arrange(p1, p2, ncol=2) Phân bố điểm kì kì (chấm lại) p = ggplot(data=hs, aes(x=Total, fill=Score)) p1 = p + geom_histogram(position="dodge") + xlab("Tổng số điểm") + ylab("Số thí sinh") + theme(legend.position="none") p2 = ggplot(data=hs, aes(x=Total, fill=Score, color=Score)) + geom_density(alpha = 0.1) + xlab("Tổng số điểm") + ylab("Xác suất") grid.arrange(p1, p2, ncol=2) Nguyên lí hiển thị liệu (Edward Tufte) Biểu đồ khoa học quan trọng • "A picture is worth a thousand words" • Dễ gây ấn tượng người đọc • Biểu đồ có giá trị lâu dài, vào lịch sử • Đòi hỏi phải suy nghĩ thiết kế biểu đồ Nguyên tắc soạn biểu đồ • Nói lên thật (tell the truth, show the data) • Tối đa hố tỉ lệ liệu mực in (high data-ink ratio) • Tối đa hố mật độ liệu (maximize data density) • Nghiêm chỉnh! (Tránh hoa h) Ngun lí1: Nói lên thật (hiển thị toàn liệu) Nguyên tắc 2: Tối đa hoá tỉ lệ liệu mực in Data-ink ratio = data-ink Total ink used to print graphic = Proportion of a graphic’s ink devoted to the non-redundant display of data-information = 1.0 – proportion of graphic that can be erased without the loss of information Nguyên tắc 2: Tối đa hoá tỉ lệ liệu mực in Histogram of Midterm Results 20 18 16 # of Students 14 12 10 D/F C B- B B+ Scoring Buckets A- A A+ Nguyên tắc 2: Tối đa hoá tỉ lệ liệu mực in • Erase non-data ink • Erase redundant data-ink 18 # of Students Histogram of Midterm Results 20 18 16 # of Students 14 11 12 10 C D/F C B- B B+ Scoring Buckets A- A A+ B- B B+ Scoring Buckets A- A Nguyên tắc 3: Tối đa hoá mật độ liệu Nguyên tắc 4: Nghiêm chỉnh Quá "unfriendly"! R EP CP FIND FINDGREP GREP LS MAB RCP RM L Time 450 400 350 300 250 200 150 100 50 Quá màu mè ! 90 80 70 60 50 40 30 20 10 1st Qtr0 3rd Qtr East West North R Copy Compile Remove 400 300 Note almost no growth in compile/remove times Time in Seconds 200 100 Number of Replicas 8 CP FIND FINDGREP GREP LS MAB RCP RM EP L Time 450 400 350 300 250 200 150 100 50 Biểu đồ với ggplot2 • Phân bố: histogram • Tần số: barplot • So sánh: boxplot • Liên quan: scatterplot ... 1.0 M 0.8 gender bmd bmd gender F 1.0 M 0.8 25 50 age 75 25 50 age 75 Scatter plot – liệu theo thời gian Dữ liệu "nâng điểm" • 44 học sinh (Sơn La) • Điểm thật điểm nâng • mơn học: tốn, lí, hóa,... trị khoa học (gần khơng khuyến khích) • Tuy nhiên, dùng để mơ tả liệu có sẵn hay "summary data" • Ví dụ: tuổi thọ số lãnh đạo, thị qua biểu đồ name dd db HCMinh 2/9/1969 19/5/1890 LDuẩn 10/7/1986... theo giới tính 75 p = ggplot(data=dat, aes(x=pcfat, fill=gender)) count gender 50 F M 25 p1 = p + geom_histogram(position="dodge") 10 20 30 40 50 pcfat 0.08 p2 = ggplot(data=dat, aes(x=pcfat, fill=gender,

Ngày đăng: 22/02/2020, 20:00

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan