8
Phân tích s liu bng biu đ
Yu t th giác rt quan trng. Ngi Trung Quc có câu “mt biu đ có giá tr
bng c vn ch vit”. Qu tht, biu đ tt có kh nng gây n tng cho ngi đc báo
khoa hc rt ln, và thng có giá tr đi din cho c công trình nghiên cu. Vì th biu
đ là mt phng tin hu hiu nht đ nhn mnh thông đip ca bài báo. Biu đ
thng đc s dng đ th hin xu hng và kt qu cho tng nhóm, nhng cng có th
dùng đ trình bày d kin mt cách gn gàng. Các biu đ d hiu, ni dung phong phú
là nhng phng tin vô giá. Do đó, nhà nghiên cu cn phi suy ngh mt cách sáng to
cách th hin s liu quan trng bng biu đ. Vì th, phân tích biu đ đóng mt vai trò
cc kì quan trng trong phân tích thng kê. Có th nói, không có đ th là phân tích
thng kê không có ngha.
Trong ngôn ng R có rt nhiu cách đ thit k mt biu đ gn và đp. Phn ln
nhng hàm đ thit k biu đ có sn trong R, nhng mt s loi biu đ tinh vi và phc
tp khác có th thit k bng các package chuyên dng nh lattice hay trellis có
th ti t website ca R. Trong chng này tôi s ch cách v các biu đ thông dng
bng cách s dng các hàm ph bin trong R.
8.1 Môi trng và thit k biu đ
8.1.1 Nhiu biu đ cho mt ca s (windows)
Thông thng, R v mt biu đ cho mt ca s. Nhng chúng ta có th v nhiu
biu đ trong mt ca s bng cách s dng hàm par. Chng hn nh
par(mfrow=c(1,2))có hiu nng chia ca s ra thành 1 dòng và hai ct, tc là
chúng ta có th trình bày hai biu đ k cnh bên nhau. Còn par(mfrow=c(2,3))
chia ca s ra thành 2 dòng và 3 ct, tc chúng ta có th trình bày 6 biu đ trong m ca
s. Sau khi đã v xong, chúng ta có th quay v vi “ch đ” 1 ca s bng lnh
par(mfrow=c(1,1).
Ví d sau đây to ra mt d liu gm hai bin x và y bng phng pháp mô phng
(tc s liu hoàn toàn đc to ra bng R). Sau đó, chúng ta chia ca s thành 2 dòng và
2 ct, và trình bày bn loi biu đ t d liu đc mô phng:
> par(mfrow=c(2,2))
> N <- 200
> x <- runif(N, -4, 4)
> y <- sin(x) + 0.5*rnorm(N)
> plot(x,y, main=”Scatter plot of y and x”)
> hist(x, main=”Histogram of x”)
> boxplot(y, main=”Box plot of y”)
> barplot(x, main=”Bar chart of x”)
> par(mfrow=c(1,1))
-4 -2 0 2 4
-2 -1 0 1 2
Scatter plot of y and x
x
y
Histogram of x
x
Frequency
-4 -2 0 2 4
0 5 10 15 20 25 30
-2 -1 0 1 2
Box plot of y Bar chart of x
-2 0 2
Biu đ 1. Cách chia ca s thành 2 dòng và 2 ct
và trình bày 4 biu đ trong cùng mt ca s.
8.1.2 t tên cho trc tung và trc hoành
Biu đ thng có trc tung (y-axis) và trc hoành. Vì d liu thng đc gi
bng các ch vit tt, cho nên biu đ cn phi có tên cho tng bin đ d theo dõi.
Trong ví d sau đây, biu đ bên trái không có tên mà ch dùng tên ca bin gc (tc x và
y), còn bên phi có tên d hiu hn.
> par(mfrow=c(1,2))
> N <- 200
> x <- runif(N, -4, 4)
> y <- sin(x) + 0.5*rnorm(N)
> plot(x,y)
> plot(x, y, xlab=”X factor”,
ylab=”Production”,
main=”Production and x factor \n Second line of title here”)
> par(mfrow=c(1,1))
Trong các lnh trên, xlab (vit tt t x label)và ylab (vit tt t y label) dùng đ đt
tên cho trc hoành và trc tung. Còn main đc dùng đ đt tên cho biu đ. Chú ý
rng trong main có kí hiu \n dùng đ vit dòng th hai (nu tên gi biu đ quá dài).
-4 -2 0 2 4
-2 -1 0 1 2
x
y
-4 -2 0 2 4
-2 -1 0 1 2
Production and x factor
Second line of title here
X factor
Production
Biu đ 2. Biu đ bên trái không có tên gi, biu
đ bên phi có tên gi cho trc tung, trc hoành và
tên ca biu đ.
Ngoài ra, chúng ta còn có th s dng hàm title và sub đ đt tên:
> plot(x, y, xlab=”Time”,
ylab=”Production”)
> title(main=“Plot of production and x factor”,
sub=”Figure 1”)
-4 -2 0 2 4
-2 -1 0 1 2
X factor
Production
Plot of production and x factor
Fi
g
ure 1
8.1.3 Cho gii hn ca trc tung và trc hoành
Nu không cung cp gii hn ca trc tung và trc hoành, R s t đng tìm điu
chnh và cho các s liu này. Tuy nhiên, chúng ta cng có th kim soát biu đ bng
cách s dng xlim và ylim đ cho R bit c th gii hn ca hai trc này:
> plot(x, y, xlab=”X factor”,
ylab=”Production”,
main=”Plot of production and x factor”,
xlim=c(-5, 5),
ylim=c(-3, 3))
8.1.4 Th loi và đng biu din
Trong mt dãy biu đ, chúng ta có th yêu cu R v nhiu kiu và đng biu
din khác nhau.
> par(mfrow=c(2,2))
> plot(y, type="l"); title("lines")
> plot(y, type="b"); title("both")
> plot(y, type="o"); title("overstruck")
> plot(y, type="h"); title("high density")
0 50 100 150 200
-2 -1 0 1 2
Index
y
lines
0 50 100 150 200
-2 -1 0 1 2
Index
y
both
0 50 100 150 200
-2 -1 0 1 2
Index
y
overstruck
0 50 100 150 200
-2 -1 0 1 2
Index
y
high density
Biu đ 3. Kiu biu đ và đng biu din.
Ngoài ra, chúng ta cng có th nhiu đng biu din bng lty nh sau:
> par(mfrow=c(2,2))
> plot(y, type="l", lty=1); title(main="Production data", sub="lty=1")
> plot(y, type="l", lty=2); title(main="Production data", sub="lty=2")
> plot(y, type="l", lty=3); title(main="Production data", sub="lty=3")
> plot(y, type="l", lty=4); title(main="Production data", sub="lty=4")
0 50 100 150 200
-2 -1 0 1 2
Index
y
Production data
lty=1
0 50 100 150 200
-2 -1 0 1 2
Index
y
Production data
lty=2
0 50 100 150 200
-2 -1 0 1 2
Index
y
Production data
lt
y
=3
0 50 100 150 200
-2 -1 0 1 2
Index
y
Production data
lt
y
=4
Biu đ 4. nh hng ca lty.
8.1.5 Màu sc, khung, và kí hiu
Chúng ta có th kim soát màu sc ca mt biu đ bng lnh col. Giá tr mc
đnh ca col là 1. Tuy nhiên, chúng ta có th thay đi các màu theo ý mun hoc bng
cách cho s hoc bng cách vit ra tên màu nh “red”, “blue”, “green”,
“orange”, “yellow”, “cyan”, v.v…
Ví d sau đây dùng mt hàm đ v ba đng biu din vi ba màu đ, xanh nc bin, và
xanh lá cây:
> plot(runif (10), ylim=c(0,1), type='l')
> for (i in c('red', 'blue', 'green'))
{
lines(runif (10), col=i )
}
> title(main="Lines in various colours")
246810
0.0 0.2 0.4 0.6 0.8 1.0
Ind e x
runif(10)
Lines in various colours
Ngoài ra, chúng ta còn có th v đng biu din bng cách tng b dày ca mi đng:
> plot(runif(5), ylim=c(0,1), type='n')
> for (i in 5:1)
{
lines( runif(5), col=i, lwd=i )
}
> title(main="Varying the line thickness")
12345
0.0 0.2 0.4 0.6 0.8 1.0
Ind ex
runif(5)
Varying the line thickness
Hình dng ca biu đ cng có th thay đi bng type nh sau:
> op <- par(mfrow=c(3,2))
> plot(runif(5), type = 'p',
main = "plot type 'p' (points)")
> plot(runif(5), type = 'l',
main = "plot type 'l' (lines)")
> plot(runif(5), type = 'b',
main = "plot type 'b' (both points and lines)")
> plot(runif(5), type = 's',
main = "plot type 's' (stair steps)")
> plot(runif(5), type = 'h',
main = "plot type 'h' (histogram)")
> plot(runif(5), type = 'n',
main = "plot type 'n' (no plot)")
> par(op)
12345
0.3 0.5 0.7 0.9
plot type 'p' (points)
Index
runif(5)
12345
0.3 0.5 0.7 0.9
plot type 'l' (lines)
Index
runif(5)
12345
0.2 0.4 0.6 0.8
plot type 'b' (both points and lines)
Index
runif(5)
12345
0.4 0.6 0.8
plot type 's' (stair steps)
Index
runif(5)
12345
0.1 0.2 0.3 0.4
plot type 'h' (histogram)
Index
runif(5)
12345
0.2 0.4 0.6
plot type 'n' (no plot)
Index
runif(5)
Khung biu đ có th kim soát bng lnh bty vi các thông s nh sau:
bty=”n”
Không có vòng khung chung quanh biu đ
bty=”o”
Có 4 khung chung quanh biu đ
bty=”c”
V mt hp gm 3 cnh chung quanh biu đ theo hình ch C
bty=”l”
V hp 2 cnh chung quanh biu đ theo hình ch L
bty=”7”
V hp 2 cnh chung quanh biu đ theo hình s 7
Cách hay nht đ bn đc làm quen vi các cách v biu đ này là bng cách th trên R
đ bit rõ hn.
Kí hiu ca mt biu đ cng có th thay th bng cách cung cp s cho pch (plotting
character) trong R. Các kí hiu thông dng là:
Available symbols
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25
> plot(x, y, col=”red”, pch=16, bty=”l”)
-4 -2 0 2 4
-2 -1 0 1 2
x
y
Biu đ 4. nh hng ca pch=16 và col=”red”,
bty=”l”.
8.1.6 Ghi chú (legend)
Hàm legend rt có ích cho vic ghi chú mt biu đ và giúp ngi đc hiu
đc ý ngha ca biu đ tt hn. Cách s dng legend có th minh jo bng ví d sau
đây:
> N <- 200
> x <- runif(N, -4, 4)
> y <- x + 0.5*rnorm(N)
> plot(x,y, pch=16, main=”Scatter plot of y and x”)
> reg <- lm(y~x)
> abline(reg)
> legend(2,-2, c("Production","Regression line"), pch=16, lty=c(0,1))
Thông s legend(2, -2) có ngha là đt phn ghi chú vào trc hoành (x-axis) bng 2
và trc tung (y-axis) bng -2.
-4 -2 0 2 4
-4 -2 0 2 4
Scatter plot of y and x
x
y
*
Production
Regression line
Production
Regression line
Biu đ 5. nh hng ca legend
8.1.7 Vit ch trong biu đ
Phn ln các biu đ không cung cp phng tin đ vit ch hay ghi chú trong
biu đ, hay có cung cp nhng rt hn ch. Trong R có hàn mtext() cho phép
chúng ta đt ch vit hay gii thích bên cnh hay trong biu đ.
Bt đu t phía di ca biu đ (side=1), chúng ta chuyn theo hng kim
đng h đn cnh s 4. Lnh plot trong ví d sau đây không in tên ca trc và tên ca
biu đ, nhng ch cung cp mt cái khung. Trong ví d này, chúng ta s dng cex
(character expansion) đ kim soát kích thc ca ch vit. Theo mc đnh thì cex=1,
nhng vi cex=2, ch vit s có kích thc gp hai ln kích thc mc đnh. Lnh
text() cho phép chúng ta đt ch vit vào mt v trí c th. Lnh th nht đt ch
vit trong ngoc kép và trung tâm ti x=15, y=4.3. Qua s dng adj, chúng ta còn
có th sp xp v phía trái (adj=0) sao cho ta đ là đim xut phát ca ch vit.
> plot(y, xlab=" ", ylab=" ", type="n")
> mtext("Text on side 1, cex=1", side=1,cex=1)
> mtext("Text on side 2, cex=1.2", side=2,cex=1.2)
> mtext("Text on side 3, cex=1.5", side=3,cex=1.5)
> mtext("Text on side 4, cex=2", side=4,cex=2)
> text(15, 4.3, "text(15, 4.3)")
> text(35, 3.5, adj=0, "text(35, 3.5), left aligned")
> text(40, 5, adj=1, "text(40, 5), right aligned")
0 50 100 150 200
-4 -2 0 2 4
Text on side 1, cex=1
Text on side 2, cex=1.2
Text on side 3, cex=1.5
Text on side 4, cex=2
text(15, 4.3)
text(35, 3.5), left aligned
4
0, 5), right aligned
8.1.8 t kí hiu vào biu đ. abline() có th s dng đ v mt đng thng,
vi nhng thông s nh sau:
abline(a,b): đng hi qui tuyn tính a=intercept và b=slope.
abline(h=30) v mt đng ngang ti y=30.
abline(v=12) v mt đng thng đng ti đim x=12.
Ngoài ra, chúng ta còn có th cho vào biu đ mt mi tên đ ghi chú mt đim s liu
nào đó.
> N <- 200
> x <- runif(N, -4, 4)
> y <- x + 0.5*rnorm(N)
> plot(x,y, pch=16, main=”Scatter plot of y and x”)
-4 -2 0 2 4
-4 -2 0 2 4
Scatter plot of y and x
x
y
Gi s chúng ta mun ghi chú ngay ti x=0 và y=0 là đim trung tâm, chúng ta trc ht
dùng arrows đ v mi tên. Trong lnh sau đây, arrows(-1, 1, 1.5, 1.5) có
ngha nh sau ta đ x=-1, y=1 bt đu v mi tên và chm dt ti ta đ x=1.5, y=1.5.
Phn text(0, 1) yêu cu R vit ch ti ta đ x=0, y=1.
> arrows(-1, 1.0, 1.5, 1.5)
> text(0, 1, "Trung tam", cex=0.7)
-4 -2 0 2 4
-4 -2 0 2 4
Scatter plot of y and x
x
y
Trung tam
8.2 S liu cho phân tích biu đ
Sau khi đã bit qua môi trng và nhng la chn đ thit k mt biu đ, bây
gi chúng ta có th s dng mt s hàm thông dng đ v các biu đ cho s liu. Theo
tôi, biu đ có th chia thành 2 loi chính: biu đ dùng đ mô t mt bin s và biu đ
v mi liên h gia hai hay nhiu bin s. Tt nhiên, bin s có th là liên tc hay không
liên tc, cho nên, trong thc t, chúng ta có 4 loi biu đ. Trong phn sau đây, tôi s
đim qua các loi biu đ, t đn gin đn phc tp.
Có l cách tt nht đ tìm hiu cách v đ th bng R là bng mt d liu thc t.
Tôi s quay li ví d 2 trong chng trc. Trong ví d đó, chúng ta có d liu gm 8
ct (hay bin s): id, sex, age, bmi, hdl, ldl, tc, và tg. (Chú ý, id
là mã s ca 50 đi tng nghiên cu; sex là gii tính (nam hay n); age là đ tui;
bmi là t s trng lng; hdl là high density cholesterol; ldl là low density
cholesterol; tc là tng s - total – cholesterol; và tg triglycerides). D liu đc cha
trong directory directory c:\works\insulin di tên chol.txt. Trc khi v đ
th, chúng ta bt đu bng cách nhp d liu này vào R.
> setwd(“c:/works/stats”)
> cong <- read.table(“chol.txt”, header=TRUE, na.strings=”.”)
> attach(cong)
Hay đ tin vic theo dõi tôi s nhp các d liu đó bng các lnh sau đây:
sex <- c(“Nam”, “Nu”, “Nu”,“Nam”,“Nam”, “Nu”,“Nam”,“Nam”,“Nam”, “Nu”,
“Nu”,“Nam”, “Nu”,“Nam”,“Nam”, “Nu”, “Nu”, “Nu”, “Nu”, “Nu”,
“Nu”, “Nu”, “Nu”, “Nu”,“Nam”,“Nam”, “Nu”,“Nam”, “Nu”, “Nu”,
“Nu”,“Nam”,“Nam”, “Nu”, “Nu”,“Nam”, “Nu”,“Nam”, “Nu”, “Nu”,
“Nam”, “Nu”,“Nam”,“Nam”,“Nam”, “Nu”,“Nam”,“Nam”, “Nu”, “Nu”)
age <- c(57, 64, 60, 65, 47, 65, 76, 61, 59, 57,
63, 51, 60, 42, 64, 49, 44, 45, 80, 48,
61, 45, 70, 51, 63, 54, 57, 70, 47, 60,
60, 50, 60, 55, 74, 48, 46, 49, 69, 72,
51, 58, 60, 45, 63, 52, 64, 45, 64, 62)
bmi <- c( 17, 18, 18, 18, 18, 18, 19, 19, 19, 19, 20, 20, 20, 20, 20,
20, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22,
22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24,
24, 24, 24, 25, 25)
hdl <- c(5.000,4.380,3.360,5.920,6.250,4.150,0.737,7.170,6.942,5.000,
4.217,4.823,3.750,1.904,6.900,0.633,5.530,6.625,5.960,3.800,
5.375,3.360,5.000,2.608,4.130,5.000,6.235,3.600,5.625,5.360,
6.580,7.545,6.440,6.170,5.270,3.220,5.400,6.300,9.110,7.750,
6.200,7.050,6.300,5.450,5.000,3.360,7.170,7.880,7.360,7.750)
ldl <- c(2.0, 3.0, 3.0, 4.0, 2.1, 3.0, 3.0, 3.0, 3.0, 2.0,
5.0, 1.3, 1.2, 0.7, 4.0, 4.1, 4.3, 4.0, 4.3, 4.0,
3.1, 3.0, 1.7, 2.0, 2.1, 4.0, 4.1, 4.0, 4.2, 4.2,
4.4, 4.3, 2.3, 6.0, 3.0, 3.0, 2.6, 4.4, 4.3, 4.0,
3.0, 4.1, 4.4, 2.8, 3.0, 2.0, 1.0, 4.0, 4.6, 4.0)
tc <-c (4.0, 3.5, 4.7, 7.7, 5.0, 4.2, 5.9, 6.1, 5.9, 4.0,
6.2, 4.1, 3.0, 4.0, 6.9, 5.7, 5.7, 5.3, 7.1, 3.8,
4.3, 4.8, 4.0, 3.0, 3.1, 5.3, 5.3, 5.4, 4.5, 5.9,
5.6, 8.3, 5.8, 7.6, 5.8, 3.1, 5.4, 6.3, 8.2, 6.2,
6.2, 6.7, 6.3, 6.0, 4.0, 3.7, 6.1, 6.7, 8.1, 6.2)
tg <- c(1.1, 2.1, 0.8, 1.1, 2.1, 1.5, 2.6, 1.5, 5.4, 1.9,
1.7, 1.0, 1.6, 1.1, 1.5, 1.0, 2.7, 3.9, 3.0, 3.1,
2.2, 2.7, 1.1, 0.7, 1.0, 1.7, 2.9, 2.5, 6.2, 1.3,
3.3, 3.0, 1.0, 1.4, 2.5, 0.7, 2.4, 2.4, 1.4, 2.7,
2.4, 3.3, 2.0, 2.6, 1.8, 1.2, 1.9, 3.3, 4.0, 2.5)
cong <- data.frame(sex, age, bmi, hdl, ldl, tc, tg)
Sau khi đã có s liu, chúng ta sn sàng tin hành phân tích s liu bng biu đ nh sau:
8.3 Biu đ cho mt bin s ri rc (discrete variable):
barplot
Bin sex trong d liu trên có hai giá tr (nam và nu), tc là mt bin không liên
tc. Chúng ta mun bit tn s ca gii tính (bao nhiêu nam và bao nhiêu n) và v mt
biu đ đn gin. thc hin ý đnh này, trc ht, chúng ta cn dùng hàm table đ
bit tn s:
> sex.freq <- table(sex)
> sex.freq
sex
Nam Nu
22 28
Có 22 nam và 28 na trong nghiên cu. Sau đó dùng hàm barplot đ th hin tn s
này nh sau:
> barplot(sex.freq, main=”Frequency of males and females”)
Biu trên cng có th có đc bng mt lnh đn gin hn (Biu đ 8a):
> barplot(table(sex), main=”Frequency of males and females”)
Nam Nu
Frequency of males and females
0 5 10 15 20 25
Nam Nu
Frequency of males and females
0 5 10 15 20 25
Biu đ 8a. Tn s gii tính th hin bng
ct s.
Biu đ 8b. Tn s gii tính th hin bng
dòng s.
Thay vì th hin tn s nam và n bng 2 ct, chúng ta có th th hin bng hai dòng
bng thông s horiz = TRUE, nh sau (xem kt qu trong Biu đ 6b):
> barplot(sex.freq,
horiz = TRUE,
col = rainbow(length(sex.freq)),
main=”Frequency of males and females”)
8.4 Biu đ cho hai bin s ri rc (discrete variable):
barplot
Age là mt bin s liên tc. Chúng ta có th chia bnh nhân thành nhiu nhóm
da vào đ tui. Hàm cut có chc nng “ct” mt bin liên tc thành nhiu nhóm ri
rc. Chng hn nh:
> ageg <- cut(age, 3)
> table(ageg)
ageg
(42,54.7] (54.7,67.3] (67.3,80]
19 24 7
Có hiu qu chia bin age thành 3 nhóm. Tn s ca ba nhóm này là: 42 tui đn 54.7
tui thành nhóm 1, 54.7 đn 67.3 thành nhóm 2, và 67.3 đn 80 tui thành nhóm 3.
Nhóm 1 có 19 bnh nhân, nhóm 2 và 3 có 24 và 7 bnh nhân.
Bây gi chúng ta mun bit có bao nhiêu bnh nhân trong tng đ tui và tng gii tính
bng lnh table:
> age.sex <- table(sex, ageg)
> age.sex
ageg
sex (42,54.7] (54.7,67.3] (67.3,80]
Nam 10 10 2
Nu 9 14 5
Kt qu trên cho thy chúng ta có 10 bnh nhân nam và 9 n trong nhóm tui th nht,
10 nam và 14 na trong nhóm tui th hai, v.v… th hin tn s ca hai bin này,
chúng ta vn dùng barplot:
> barplot(age.sex, main=”Number of males and females in each age
group”)
(42,54.7] (54.7,67.3] (67.3,80]
Number of males and females in each age group
0 5 10 15 20
(42,54.7] (54.7,67.3] (67.3,80]
Age group
0 2 4 6 8 101214
Biu đ 7a. Tn s gii tính và nhóm tui
th hin bng ct s.
Biu đ 7b. Tn s gii tính và nhóm tui
th hin bng hai dòng s.
Trong Biu đ 7a, mi ct là cho mt đ tui, và phn đm ca ct là n, và phn màu
nht là tn s ca nam gii. Thay vì th hin tn s nam n trong mt ct, chúng ta cng
có th th hin bng 2 ct vi beside=T nh sau (Biu đ 7b):
barplot(age.sex, beside=TRUE, xlab="Age group")
8.5 Biu đ hình tròn
Tn s mt bin ri rc cng có th th hin bng biu đ hình tròn. Ví d sau đây v
biu đ tn s ca đ tui. Biu đ 8a là 3 nhóm đ tui, và Biu đ 8b là biu đ tn s
cho 5 nhóm tui:
> pie(table(ageg))
pie(table(cut(age,5)))
(42,54.7]
(54.7,67.3]
(67.3,80]
(42,49.6]
(49.6,57.2]
(57.2,64.8]
(64.8,72.4]
(72.4,80]
Biu đ 8a. Tn s cho 3 nhóm tui Biu đ 8b. Tn s cho 5 nhóm tui
8.6 Biu đ cho mt bin s liên tc: stripchart và hist
8.6.1 Stripchart
Biu đ strip cho chúng ta thy tính liên tc ca mt bin s. Chng hn nh
chúng ta mun tìm hiu tính liên tc ca triglyceride (tg), hàm stripchart() s giúp
trong mc tiêu này:
> stripchart(tg,
main=”Strip chart for triglycerides”, xlab=”mg/L”)
123456
Strip chart for triglycerides
mg/L
Chúng ta thy bin s tg có s bt liên tc, nht là các đi tng có tg cao. Trong khi
phn ln đi tng có đ tg thp hn 5, thì có 2 đi tng vi tg rt cao (>5).
8.6.2 Histogram
Age là mt bin s liên tc. v biu đ tn s ca bin s age, chúng ta ch
đn gin lnh hist(age). Nh đã đ cp trên, chúng ta có th ci tin đ th này bng
cách cho thêm ta đ chính (main) và ta đ ca trc hoành (xlab) và trc tung
(ylab):
> hist(age)
> hist(age, main="Frequency distribution by age group", xlab="Age
group", ylab="No of patients")
Histogram of age
age
Frequency
40 50 60 70 80
024681012
Frequency distribution by age group
Age group
No of patients
40 50 60 70 80
024681012
Biu đ 9a. Trc tung là s bnh nhân (đi
tng nghiên cu) và trc hoành là đ tui.
Chng hn nh tui 40 đn 45 có 6 bnh nhân,
t 70 đn 80 tui có 4 bnh nhân.
Biu đ 9b. Thêm tên biu đ và tên ca trc
trung và trc hoành bng xlab và ylab.
Chúng ta cng có th bin đi biu đ thành mt đ th phân phi xác sut bng hàm
plot(density) nh sau (kt qu trong Biu đ 10a):
> plot(density(age),add=TRUE)
30 40 50 60 70 80 90
0.00 0.01 0.02 0.03 0.04
density.default(x = age)
N = 50 Bandwidth = 3.806
Density
Histogram of age
age
Density
40 50 60 70 80
0.00 0.01 0.02 0.03 0.04
Biu đ 10a. Xác sut phân phi mt đ cho
bin age (đ tui).
Biu đ 10b. Xác sut phân phi mt đ cho
bin age (đ tui) vi nhiu interquartile.
Chúng ta có th v hai đ th chng lên bng cách dùng hàm interquartile nh sau (kt
qu xem Biu đ 10b):
> iqr <- diff(summary(age)[c(2,5)])
> des <- density(age, width=0.5*iqr)
> hist(age, xlim=range(des$x), probability=TRUE)
> lines(des, lty=2)
Trong đ th trên, chúng ta dùng khong cách 0.5*iqr (tng đi “gn” nhau). Nhng
chúng ta có th bin đi thông s này thành 1.5*iqr đ làm cho phân phi thc t hn:
> iqr <- diff(summary(age)[c(2,5)])
> des <- density(age, width=1.5*iqr)
> hist(age, xlim=range(des$x), probability=TRUE)
> lines(des, lty=2)
Histogram of age
age
Density
30 40 50 60 70 80 90
0.00 0.01 0.02 0.03 0.04
Chúng ta có th bin đi biu đ thành mt đ th phân phi xác sut tích ly (cumulative
distribution) bng hàm plot và sort nh sau:
> n <- length(age)
> plot(sort(age), (1:n)/n, type="s", ylim=c(0,1))
Kt qu đc trình bày trong phn trái ca biu đ sau đây (Biu đ 11).
50 60 70 80
0.0 0.2 0.4 0.6 0.8 1.0
sort(age)
(1:n)/n
-2 -1 0 1 2
50 60 70 80
Normal Q-Q Plot
Theoreti cal Quantiles
Sample Quantiles
Biu đ 11. Xác sut phân phi mt đ cho
bin age (đ tui).
Biu đ 12. Kim tra bin age có theo lut
phân phi chun hay không.
Trong đ th trên, trc tung là xác sut tích ly và trc hoành là đ tui t thp đn cao.
Chng hn nh nhìn qua biu đ, chúng ta có th thy khong 50% đi tng có tui thp
hn 60.
bit xem phân phi ca age có theo lut phân phi chun (normal distribution) hay
không chúng ta có th s dng hàm qqnorm.
> qqnorm(age)
Trc hoành ca biu đ trên là đnh lng theo lut phân phi chun (theoretical
quantile) và trc hoành đnh lng ca s liu (sample quantiles). Nu phân phi ca
age theo lut phân phi chun, thì đng biu din phi theo mt đng thng chéo 45
đ (tc là đnh lng phân phi và đnh lng s liu bng nhau). Nhng qua Biu đ
12, chúng ta thy phân phi ca age không hn theo lut phân phi chun.
8.6.3 Biu đ hp (boxplot)
v biu đ hp ca bin s tc, chúng ta ch đn gin lnh:
> boxplot(tc, main="Box plot of total cholesterol", ylab="mg/L")
345678
Box plot of total cholesterol
mg/ L
Biu đ 13. Trong biu đ này, chúng ta thy median
(trung v) khong 5.6 mg/L, 25% total cholesterol thp
hn 4.1, và 75% thp hn 6.2. Total cholesterol thp nht
là khoang 3, và cao nht là trên 8 mg/L.
Trong biu đ sau đây, chúng ta so sánh tc gia hai nhóm nam và n:
> boxplot(tc ~ sex, main=”Box plot of total cholestrol by sex”,
ylab="mg/L")
Kt qu trình bày trong Biu đ 14a. Chúng ta có th bin đ giao din ca đ th bng
cách dùng thông s horizontal=TRUE và thay đi màu bng thông s col nh sau
(Biu đ 14b):
> boxplot(tc~sex, horizontal=TRUE, main="Box plot of total
cholesterol", ylab="mg/L", col = "pink")
Nam Nu
345678
Box plot of total cholesterol by sex
mg/ L
Nam Nu
345678
Box plot of total cholesterol
mg/L
Biu đ 14a. Trong biu đ này, chúng ta
thy trung v ca total cholesterol n gii
thp hn nam gii, nhng đ dao đng gia
hai nhóm không khác nhau bao nhiêu.
Biu đ 14b. Total cholesterol cho tng
gii tính, vi màu sc và hình hp nm
ngang.
8.6.4 Biu đ thanh (bar chart)
v biu đ thanh ca bin s bmi, chúng ta ch đn gin lnh:
> barplot(bmi, col=”blue”)
kg/m^2
0 5 10 15 20 25
Biu đ 15. Biu đ thanh cho bin bmi.
8.6.5 Biu đ đim (dotchart)
Mt đ th khác cung cp thông tin ging nh barplot là dotchart:
> dotchart(bmi, xlab="Body mass index (kg/m^2)", main="Distribution of
BMI")
18 20 22 24
Distribution of BMI
Body mass index (kg/m^2)
Biu đ 16. Biu đ đim bin bmi.
8.7 Phân tích biu đ cho hai bin liên tc
8.7.1 Biu đ tán x (scatter plot)
tìm hiu mi liên h gia hai bin, chúng ta dùng biu đ tán x. v biu đ tán x
v mi liên h gia bin s tc và hdl, chúng ta s dng hàm plot. Thông s th nht
ca hàm plot là trc hoành (x-axis) và thông s th 2 là trc tung. tìm hiu mi liên
h gia tc và hdl chúng ta đn gin lnh:
> plot(tc, hdl)
345678
2468
tc
hdl
Biu đ 17. Mi liên h gia tc và hdl. Trong biu đ
này, chúng ta v bin s hdl trên trc tung và tc trên
trc hoành.
Chúng ta mun phân bit gii tính (nam và n) trong biu đ trên. v biu đ đó,
chúng ta phi dùng đn hàm ifelse. Trong lnh sau đây, nu sex==”Nam” thì v kí
t s 16 (ô tròn), nu không nam thì v kí t s 22 (tc ô vuông):
> plot(hdl, tc, pch=ifelse(sex=="Nam", 16, 22))
Kt qu là Biu đ 18a. Chúng ta cng có th thay kí t thành “M” (nam) và “F”
n(xem Biu đ 18b):
> plot(hdl, tc, pch=ifelse(sex=="Nam", “M”, “F”))
345678
2468
tc
hdl
M
F
F
M
M
F
M
M
M
F
F
M
F
M
M
FF
F
F
F
F
F
F
F
M
MF
M
F
F
F
M
M
F
F
M
F
M
F
FM
F
M
M
M
F
M
M
F
F
2468
345678
hdl
tc
Biu đ 18a. Mi liên h gia tc và hdl theo
tng gii tính đc th hin bng hai kí hiu
du.
Biu đ 18a. Mi liên h gia tc và hdl theo
tng gii tính đc th hin bng hai kí t.
Chúng ta cng có th v mt đng biu din hi qui tuyn tính (regression line) qua các
đim trên bng cách tip tc ra các lnh sau đây:
> plot(hdl ~ tc, pch=16, main="Total cholesterol and HDL cholesterol",
xlab="Total cholesterol", ylab="HDL cholesterol", bty=”l”)
> reg <- lm(hdl ~ tc)
> abline(reg)
Kt qu là Biu đ 19a di đây. Chúng ta cng có th dùng hàm trn (smooth function)
đ biu din mi liên h gia hai bin s. th sau đây s dng lowess (mt hàm
thông thng nht) trong vic “làm trn” s liu tc và hdl (Biu đ 19b).
> plot(hdl ~ tc, pch=16,
main="Total cholesterol and HDL cholesterol with LOEWSS smooth
function",
xlab="Total cholesterol", ylab="HDL cholesterol", bty=”l”)
> lines(lowess(hdl, tc, f=2/3, iter=3), col="red")