8
Phân tích s li u b ng bi u đ
Y u t th giác r t quan tr ng. Ng i Trung Qu c có câu “m t bi u đ có giá tr
b ng c v n ch vi t”. Qu th t, bi u đ t t có kh n ng gây n t ng cho ng i đ c báo
khoa h c r t l n, và th ng có giá tr đ i di n cho c cơng trình nghiên c u. Vì th bi u
đ là m t ph ng ti n h u hi u nh t đ nh n m nh thông đi p c a bài báo. Bi u đ
th ng đ c s d ng đ th hi n xu h ng và k t qu cho t ng nhóm, nh ng c ng có th
dùng đ trình bày d ki n m t cách g n gàng. Các bi u đ d hi u, n i dung phong phú
là nh ng ph ng ti n vơ giá. Do đó, nhà nghiên c u c n ph i suy ngh m t cách sáng t o
cách th hi n s li u quan tr ng b ng bi u đ . Vì th , phân tích bi u đ đóng m t vai trị
c c kì quan tr ng trong phân tích th ng kê. Có th nói, khơng có đ th là phân tích
th ng kê khơng có ngh a.
Trong ngơn ng R có r t nhi u cách đ thi t k m t bi u đ g n và đ p. Ph n l n
nh ng hàm đ thi t k bi u đ có s n trong R, nh ng m t s lo i bi u đ tinh vi và ph c
t p khác có th thi t k b ng các package chuyên d ng nh lattice hay trellis có
th t i t website c a R. Trong ch ng này tôi s ch cách v các bi u đ thông d ng
b ng cách s d ng các hàm ph bi n trong R.
8.1 Môi tr
ng và thi t k bi u đ
8.1.1 Nhi u bi u đ cho m t c a s (windows)
Thông th ng, R v m t bi u đ cho m t c a s . Nh ng chúng ta có th v nhi u
bi u đ trong m t c a s b ng cách s d ng hàm par. Ch ng h n nh
par(mfrow=c(1,2))có hi u n ng chia c a s ra thành 1 dòng và hai c t, t c là
chúng ta có th trình bày hai bi u đ k c nh bên nhau. Còn par(mfrow=c(2,3))
chia c a s ra thành 2 dòng và 3 c t, t c chúng ta có th trình bày 6 bi u đ trong m c a
s . Sau khi đã v xong, chúng ta có th quay v v i “ch đ ” 1 c a s b ng l nh
par(mfrow=c(1,1).
Ví d sau đây t o ra m t d li u g m hai bi n x và y b ng ph ng pháp mô ph ng
(t c s li u hoàn toàn đ c t o ra b ng R). Sau đó, chúng ta chia c a s thành 2 dòng và
2 c t, và trình bày b n lo i bi u đ t d li u đ c mô ph ng:
>
>
>
>
>
>
>
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))
Histogram of x
20
15
Frequency
0
y
0
-2
5
-1
10
1
25
30
2
Scatter plot of y and x
-2
0
2
4
-4
-2
0
x
x
Box plot of y
Bar chart of x
2
4
2
-2
-2
-1
0
0
1
2
-4
Bi u đ 1. Cách chia c a s thành 2 dịng và 2 c t
và trình bày 4 bi u đ trong cùng m t c a s .
8.1.2
t tên cho tr c tung và tr c hoành
Bi u đ th ng có tr c tung (y-axis) và tr c hồnh. Vì d li u th ng đ c g i
b ng các ch vi t t t, cho nên bi u đ c n ph i có tên cho t ng bi n đ d theo dõi.
Trong ví d sau đây, bi u đ bên trái khơng có tên mà ch dùng tên c a bi n g c (t c x và
y), cịn bên ph i có tên d hi u h n.
>
>
>
>
>
>
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 l nh trên, xlab (vi t t t t x label)và ylab (vi t t t t y label) dùng đ đ t
tên cho tr c hoành và tr c tung. Còn main đ c dùng đ đ t tên cho bi u đ . Chú ý
r ng trong main có kí hi u \n dùng đ vi t dịng th hai (n u tên g i bi u đ quá dài).
2
1
0
-1
-2
-2
-1
y
0
Production
1
2
Production and x factor
Second line of title here
-4
-2
0
2
4
-4
-2
x
0
2
4
X factor
Bi u đ 2. Bi u đ bên trái khơng có tên g i, bi u
đ bên ph i có tên g i cho tr c tung, tr c hoành và
tên c a bi u đ .
Ngồi ra, chúng ta cịn có th s d ng 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”)
0
-1
-2
Production
1
2
Plot of production and x factor
-4
-2
0
X factor
Figure 1
2
4
8.1.3 Cho gi i h n c a tr c tung và tr c hồnh
N u khơng cung c p gi i h n c a tr c tung và tr c hồnh, R s t đ ng tìm đi u
ch nh và cho các s li u này. Tuy nhiên, chúng ta c ng có th ki m sốt bi u đ b ng
cách s d ng xlim và ylim đ cho R bi t c th gi i h n c a hai tr c 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 lo i và đ
ng bi u di n
Trong m t dãy bi u đ , chúng ta có th yêu c u R v nhi u ki u và đ
di n khác nhau.
>
>
>
>
>
par(mfrow=c(2,2))
plot(y, type="l");
plot(y, type="b");
plot(y, type="o");
plot(y, type="h");
title("lines")
title("both")
title("overstruck")
title("high density")
1
100
150
200
0
50
100
Index
Index
overstruck
high density
150
200
150
200
1
0
-1
-2
-2
-1
y
0
1
2
50
2
0
y
0
-2
-1
y
0
-2
-1
y
1
2
both
2
lines
0
50
100
150
200
0
Index
Bi u đ 3. Ki u bi u đ và đ
50
100
Index
ng bi u di n.
Ngồi ra, chúng ta c ng có th nhi u đ
ng bi u di n b ng lty nh sau:
ng bi u
>
>
>
>
>
par(mfrow=c(2,2))
plot(y, type="l",
plot(y, type="l",
plot(y, type="l",
plot(y, type="l",
lty=1);
lty=2);
lty=3);
lty=4);
title(main="Production
title(main="Production
title(main="Production
title(main="Production
2
1
y
-2
-1
0
1
0
100
150
200
0
50
100
150
Index
lty=2
Production data
Production data
200
1
-1
-2
-2
-1
y
0
1
2
Index
lty=1
0
y
-1
-2
50
2
0
y
sub="lty=1")
sub="lty=2")
sub="lty=3")
sub="lty=4")
Production data
2
Production data
data",
data",
data",
data",
0
50
100
150
200
0
Index
lty=3
Bi u đ 4. nh h
50
100
150
200
Index
lty=4
ng c a lty.
8.1.5 Màu s c, khung, và kí hi u
Chúng ta có th ki m soát màu s c c a m t bi u đ b ng l nh col. Giá tr m c
đ nh c a col là 1. Tuy nhiên, chúng ta có th thay đ i các màu theo ý mu n h oc b ng
cách cho s ho c b ng cách vi t ra tên màu nh “red”, “blue”, “green”,
“orange”, “yellow”, “cyan”, v.v…
Ví d sau đây dùng m t hàm đ v ba đ
xanh lá cây:
ng bi u di n v i ba màu đ , xanh n
> 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")
c bi n, và
0.0
0.2
0.4
runif(10)
0.6
0.8
1.0
Lines in various colours
2
4
6
8
10
Index
Ngồi ra, chúng ta cịn có th v đ
ng bi u di n b ng cách t ng b dày c a m i đ
> 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")
0.0
0.2
0.4
runif(5)
0.6
0.8
1.0
Varying the line thickness
1
2
3
4
5
Index
Hình d ng c a bi u đ c ng có th thay đ i b ng type nh sau:
> op <- par(mfrow=c(3,2))
ng:
> plot(runif(5), type = 'p',
main = "plot type 'p'
> plot(runif(5), type = 'l',
main = "plot type 'l'
> plot(runif(5), type = 'b',
main = "plot type 'b'
> plot(runif(5), type = 's',
main = "plot type 's'
> plot(runif(5), type = 'h',
main = "plot type 'h'
> plot(runif(5), type = 'n',
main = "plot type 'n'
> par(op)
(stair steps)")
(histogram)")
(no plot)")
0.7
runif(5)
0.3
0.5
0.9
0.7
0.5
2
3
4
5
1
2
3
4
Index
plot type 'b' (both points a nd line s)
plot type 's' (sta ir steps)
5
0.2
0.4
0.4
0.6
runif(5)
0.8
0.8
Index
0.6
runif(5)
(both points and lines)")
plot type 'l' (lines)
0.3
1
runif(5)
(lines)")
0.9
plot type 'p' (points)
(points)")
1
2
3
4
5
1
2
3
4
Index
plot type 'h' (histogra m)
plot type 'n' (no plot)
5
0.6
runif(5)
0.4
0.3
0.2
0.2
0.1
runif(5)
0.4
Index
1
2
3
Index
4
5
1
2
3
4
5
Index
Khung bi u đ có th ki m sốt b ng l nh bty v i các thông s nh sau:
bty=”n”
bty=”o”
bty=”c”
bty=”l”
bty=”7”
Khơng có vịng khung chung quanh bi u đ
Có 4 khung chung quanh bi u đ
V m t h p g m 3 c nh chung quanh bi u đ theo hình ch C
V h p 2 c nh chung quanh bi u đ theo hình ch L
V h p 2 c nh chung quanh bi u đ theo hình s 7
Cách hay nh t đ b n đ c làm quen v i các cách v bi u đ này là b ng cách th trên R
đ bi t rõ h n.
Kí hi u c a m t bi u đ c ng có th thay th b ng cách cung c p s cho pch (plotting
character) trong R. Các kí hi u thơng d ng là:
Available symbols
21
22
23
24
25
16
17
18
19
20
11
12
13
14
15
6
7
8
9
10
1
2
3
4
5
0
-2
-1
y
1
2
> plot(x, y, col=”red”, pch=16, bty=”l”)
-4
-2
0
2
4
x
Bi u đ 4.
bty=”l”.
nh h
ng c a pch=16 và col=”red”,
8.1.6 Ghi chú (legend)
Hàm legend r t có ích cho vi c ghi chú m t bi u đ và giúp ng i đ c hi u
đ c ý ngh a c a bi u đ t t h n. Cách s d ng legend có th minh jo b ng 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ó ngh a là đ t ph n ghi chú vào tr c hoành (x-axis) b ng 2
và tr c tung (y-axis) b ng -2.
-2
0
y
2
4
Scatter plot of y and x
Production
Regression line
-4
*
-4
-2
0
2
4
x
Bi u đ 5. nh h
8.1.7 Vi t ch
ng c a legend
trong bi u đ
Ph n l n các bi u đ không cung c p ph ng ti n đ vi t ch hay ghi chú trong
bi u đ , hay có cung c p nh ng r t h n ch . Trong R có hàn mtext() cho phép
chúng ta đ t ch vi t hay gi i thích bên c nh hay trong bi u đ .
B t đ u t phía d i c a bi u đ (side=1), chúng ta chuy n theo h ng kim
đ ng h đ n c nh s 4. L nh plot trong ví d sau đây khơng in tên c a tr c và tên c a
bi u đ , nh ng ch cung c p m t cái khung. Trong ví d này, chúng ta s d ng cex
(character expansion) đ ki m sốt kích th c c a ch vi t. Theo m c đ nh thì cex=1,
nh ng v i cex=2, ch vi t s có kích th c g p hai l n kích th c m c đ nh. L nh
text() cho phép chúng ta đ t ch vi t vào m t v trí c th . L nh th nh t đ t ch
vi t trong ngo c kép và trung tâm t i x=15, y=4.3. Qua s d ng adj, chúng ta cịn
có th s p x p v phía trái (adj=0) sao cho t a đ là đi m xu t phát c a ch vi t.
>
>
>
>
>
>
>
>
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")
Text on side 3, cex=1.5
40, 5), right aligned
4
text(15, 4.3)
Text on side 4, cex=2
0
-4
-2
Text on side 2, cex=1.2
2
text(35, 3.5), left aligned
0
50
Text on side 1, cex=1
100
150
200
8.1.8
t kí hi u vào bi u đ . abline() có th s d ng đ v m t đ
v i nh ng thông s nh sau:
ng th ng,
abline(a,b): đ ng h i qui tuy n tính a=intercept và b=slope.
abline(h=30) v m t đ ng ngang t i y=30.
abline(v=12) v m t đ ng th ng đ ng t i đi m x=12.
Ngồi ra, chúng ta cịn có th cho vào bi u đ m t m i tên đ ghi chú m t đi m s li u
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
y
0
2
4
Scatter plot of y and x
-4
-2
0
2
4
x
Gi s chúng ta mu n ghi chú ngay t i x=0 và y=0 là đi m trung tâm, chúng ta tr c h t
dùng arrows đ v m i tên. Trong l nh sau đây, arrows(-1, 1, 1.5, 1.5) có
ngh a nh sau t a đ x=-1, y=1 b t đ u v m i tên và ch m d t t i t a đ x=1.5, y=1.5.
Ph n text(0, 1) yêu c u R vi t ch t i t a đ x=0, y=1.
> arrows(-1, 1.0, 1.5, 1.5)
> text(0, 1, "Trung tam", cex=0.7)
2
4
Scatter plot of y and x
-4
-2
y
0
Trung tam
-4
-2
0
2
4
x
8.2 S li u cho phân tích bi u đ
Sau khi đã bi t qua môi tr ng và nh ng l a ch n đ thi t k m t bi u đ , bây
gi chúng ta có th s d ng m t s hàm thông d ng đ v các bi u đ cho s li u. Theo
tôi, bi u đ có th chia thành 2 lo i chính: bi u đ dùng đ mô t m t bi n s và bi u đ
v m i liên h gi a hai hay nhi u bi n s . T t nhiên, bi n s có th là liên t c hay không
liên t c, cho nên, trong th c t , chúng ta có 4 lo i bi u đ . Trong ph n sau đây, tôi s
đi m qua các lo i bi u đ , t đ n gi n đ n ph c t p.
Có l cách t t nh t đ tìm hi u cách v đ th b ng R là b ng m t d li u th c t .
Tôi s quay l i ví d 2 trong ch ng tr c. Trong ví d đó, chúng ta có d li u g m 8
c t (hay bi n s ): id, sex, age, bmi, hdl, ldl, tc, và tg. (Chú ý, id
là mã s c a 50 đ i t ng nghiên c u; sex là gi i tính (nam hay n ); age là đ tu i;
bmi là t s tr ng l ng; hdl là high density cholesterol; ldl là low density
cholesterol; tc là t ng s - total – cholesterol; và tg triglycerides). D li u đ c ch a
trong directory directory c:\works\insulin d i tên chol.txt. Tr c khi v đ
th , chúng ta b t đ u b ng cách nh p d li u này vào R.
> setwd(“c:/works/stats”)
> cong <- read.table(“chol.txt”, header=TRUE, na.strings=”.”)
> attach(cong)
Hay đ ti n vi c theo dõi tôi s nh p các d li u đó b ng các l nh 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,
63,
61,
60,
51,
64,
51,
45,
50,
58,
bmi <- c( 17,
20,
22,
24,
60,
60,
70,
60,
60,
18,
21,
22,
24,
65,
42,
51,
55,
45,
18,
21,
22,
24,
47,
64,
63,
74,
63,
18,
21,
22,
25,
65,
49,
54,
48,
52,
76,
44,
57,
46,
64,
61,
45,
70,
49,
45,
59,
80,
47,
69,
64,
57,
48,
60,
72,
62)
18, 18, 19, 19, 19, 19, 20, 20, 20, 20, 20,
21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22,
23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24,
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,
5.0,
3.1,
4.4,
3.0,
3.0,
1.3,
3.0,
4.3,
4.1,
3.0,
1.2,
1.7,
2.3,
4.4,
4.0,
0.7,
2.0,
6.0,
2.8,
2.1,
4.0,
2.1,
3.0,
3.0,
3.0,
4.1,
4.0,
3.0,
2.0,
3.0,
4.3,
4.1,
2.6,
1.0,
3.0,
4.0,
4.0,
4.4,
4.0,
3.0,
4.3,
4.2,
4.3,
4.6,
tc <-c (4.0,
6.2,
4.3,
5.6,
6.2,
3.5,
4.1,
4.8,
8.3,
6.7,
4.7,
3.0,
4.0,
5.8,
6.3,
7.7,
4.0,
3.0,
7.6,
6.0,
5.0,
6.9,
3.1,
5.8,
4.0,
4.2,
5.7,
5.3,
3.1,
3.7,
5.9,
5.7,
5.3,
5.4,
6.1,
6.1,
5.3,
5.4,
6.3,
6.7,
5.9,
7.1,
4.5,
8.2,
8.1,
4.0,
3.8,
5.9,
6.2,
6.2)
tg <- c(1.1,
1.7,
2.2,
3.3,
2.4,
2.1,
1.0,
2.7,
3.0,
3.3,
0.8,
1.6,
1.1,
1.0,
2.0,
1.1,
1.1,
0.7,
1.4,
2.6,
2.1,
1.5,
1.0,
2.5,
1.8,
1.5,
1.0,
1.7,
0.7,
1.2,
2.6,
2.7,
2.9,
2.4,
1.9,
1.5,
3.9,
2.5,
2.4,
3.3,
5.4,
3.0,
6.2,
1.4,
4.0,
1.9,
3.1,
1.3,
2.7,
2.5)
2.0,
4.0,
4.2,
4.0,
4.0)
cong <- data.frame(sex, age, bmi, hdl, ldl, tc, tg)
Sau khi đã có s li u, chúng ta s n sàng ti n hành phân tích s li u b ng bi u đ nh sau:
8.3 Bi u đ
barplot
cho m t bi n s
r i r c (discrete variable):
Bi n sex trong d li u trên có hai giá tr (nam và nu), t c là m t bi n không liên
t c. Chúng ta mu n bi t t n s c a gi i tính (bao nhiêu nam và bao nhiêu n ) và v m t
bi u đ đ n gi n.
th c hi n ý đ nh này, tr c h t, chúng ta c n dùng hàm table đ
bi t t n s :
> sex.freq <- table(sex)
> sex.freq
sex
Nam Nu
22 28
Có 22 nam và 28 n a trong nghiên c u. Sau đó dùng hàm barplot đ th hi n t n s
này nh sau:
> barplot(sex.freq, main=”Frequency of males and females”)
Bi u trên c ng có th có đ
c b ng m t l nh đ n gi n h n (Bi u đ 8a):
> barplot(table(sex), main=”Frequency of males and females”)
Frequency of males and females
0
5
Nam
10
15
20
Nu
25
Frequency of males and females
Nam
Nu
0
Bi u đ 8a. T n s gi i tính th hi n b ng
c ts .
5
10
15
20
25
Bi u đ 8b. T n s gi i tính th hi n b ng
dịng s .
Thay vì th hi n t n s nam và n b ng 2 c t, chúng ta có th th hi n b ng hai dịng
b ng thơng s horiz = TRUE, nh sau (xem k t qu trong Bi u đ 6b):
> barplot(sex.freq,
horiz = TRUE,
col = rainbow(length(sex.freq)),
main=”Frequency of males and females”)
8.4 Bi u đ
barplot
cho hai bi n s
r i r c (discrete variable):
Age là m t bi n s liên t c. Chúng ta có th chia b nh nhân thành nhi u nhóm
d a vào đ tu i. Hàm cut có ch c n ng “c t” m t bi n liên t c thành nhi u nhóm r i
r c. Ch ng h n nh :
> ageg <- cut(age, 3)
> table(ageg)
ageg
(42,54.7] (54.7,67.3]
19
24
(67.3,80]
7
Có hi u qu chia bi n age thành 3 nhóm. T n s c a ba nhóm này là: 42 tu i đ n 54.7
tu i thành nhóm 1, 54.7 đ n 67.3 thành nhóm 2, và 67.3 đ n 80 tu i thành nhóm 3.
Nhóm 1 có 19 b nh nhân, nhóm 2 và 3 có 24 và 7 b nh nhân.
Bây gi chúng ta mu n bi t có bao nhiêu b nh nhân trong t ng đ tu i và t ng gi i tính
b ng l nh 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
K t qu trên cho th y chúng ta có 10 b nh nhân nam và 9 n trong nhóm tu i th nh t,
10 nam và 14 n a trong nhóm tu i th hai, v.v…
th hi n t n s c a hai bi n này,
chúng ta v n dùng barplot:
> barplot(age.sex, main=”Number of males and females in each age
group”)
0
0
2
5
4
10
6
8
15
10
20
12
14
Number of males and females in each age group
(42,54.7]
(54.7,67.3]
(67.3,80]
(42,54.7]
(54.7,67.3]
(67.3,80]
Age group
Bi u đ 7a. T n s gi i tính và nhóm tu i
th hi n b ng c t s .
Bi u đ 7b. T n s gi i tính và nhóm tu i
th hi n b ng hai dịng s .
Trong Bi u đ 7a, m i c t là cho m t đ tu i, và ph n đ m c a c t là n , và ph n màu
nh t là t n s c a nam gi i. Thay vì th hi n t n s nam n trong m t c t, chúng ta c ng
có th th hi n b ng 2 c t v i beside=T nh sau (Bi u đ 7b):
barplot(age.sex, beside=TRUE, xlab="Age group")
8.5 Bi u đ hình trịn
T n s m t bi n r i r c c ng có th th hi n b ng bi u đ hình trịn. Ví d sau đây v
bi u đ t n s c a đ tu i. Bi u đ 8a là 3 nhóm đ tu i, và Bi u đ 8b là bi u đ t n s
cho 5 nhóm tu i:
> pie(table(ageg))
pie(table(cut(age,5)))
(42,54.7]
(49.6,57.2]
(42,49.6]
(72.4,80]
(67.3,80]
(54.7,67.3]
Bi u đ 8a. T n s cho 3 nhóm tu i
(64.8,72.4]
(57.2,64.8]
Bi u đ 8b. T n s cho 5 nhóm tu i
8.6 Bi u đ cho m t bi n s liên t c: stripchart và hist
8.6.1 Stripchart
Bi u đ strip cho chúng ta th y tính liên t c c a m t bi n s . Ch ng h n nh
chúng ta mu n tìm hi u tính liên t c c a triglyceride (tg), hàm stripchart() s giúp
trong m c tiêu này:
> stripchart(tg,
main=”Strip chart for triglycerides”, xlab=”mg/L”)
Strip chart for triglycerides
1
2
3
4
5
6
mg/L
Chúng ta th y bi n s tg có s b t liên t c, nh t là các đ i t ng có tg cao. Trong khi
ph n l n đ i t ng có đ tg th p h n 5, thì có 2 đ i t ng v i tg r t cao (>5).
8.6.2 Histogram
Age là m t bi n s liên t c.
v bi u đ t n s c a bi n s age, chúng ta ch
đ n gi n l nh hist(age). Nh đã đ c p trên, chúng ta có th c i ti n đ th này b ng
cách cho thêm t a đ chính (main) và t a đ c a tr c hoành (xlab) và tr c tung
(ylab):
> hist(age)
> hist(age, main="Frequency distribution by age group", xlab="Age
group", ylab="No of patients")
Histogram of age
8
0
0
2
2
4
6
No of patients
6
4
Frequency
8
10
10
12
12
Frequency distribution by age group
40
50
60
70
80
40
50
60
age
70
80
Age group
Bi u đ 9a. Tr c tung là s b nh nhân (đ i Bi u đ 9b. Thêm tên bi u đ và tên c a tr c
t ng nghiên c u) và tr c hoành là đ tu i. trung và tr c hoành b ng xlab và ylab.
Ch ng h n nh tu i 40 đ n 45 có 6 b nh nhân,
t 70 đ n 80 tu i có 4 b nh nhân.
Chúng ta c ng có th bi n đ i bi u đ thành m t đ th phân ph i xác su t b ng hàm
plot(density) nh sau (k t qu trong Bi u đ 10a):
> plot(density(age),add=TRUE)
density.default(x = age)
Density
0.00
0.00
0.01
0.02
0.02
0.01
Density
0.03
0.03
0.04
0.04
Histogram of age
30
40
50
60
70
N = 50 Bandwidth = 3.806
80
90
40
50
60
70
80
age
Bi u đ 10a. Xác su t phân ph i m t đ cho Bi u đ 10b. Xác su t phân ph i m t đ cho
bi n age (đ tu i).
bi n age (đ tu i) v i nhi u interquartile.
Chúng ta có th v hai đ th ch ng lên b ng cách dùng hàm interquartile nh sau (k t
qu xem Bi u đ 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 kho ng cách 0.5*iqr (t ng đ i “g n” nhau). Nh ng
chúng ta có th bi n đ i thông s này thành 1.5*iqr đ làm cho phân ph i th c t h n:
>
>
>
>
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)
Density
0.00
0.01
0.02
0.03
0.04
Histogram of age
30
40
50
60
70
80
90
age
Chúng ta có th bi n đ i bi u đ thành m t đ th phân ph i xác su t tích l y (cumulative
distribution) b ng hàm plot và sort nh sau:
> n <- length(age)
> plot(sort(age), (1:n)/n, type="s", ylim=c(0,1))
K t qu đ
c trình bày trong ph n trái c a bi u đ sau đây (Bi u đ 11).
60
0.0
50
0.2
0.4
(1:n)/n
0.6
Sample Quantiles
70
0.8
80
1.0
Normal Q-Q Plot
50
60
70
80
-2
sort(age)
-1
0
1
2
Theoretical Quantiles
Bi u đ 11. Xác su t phân ph i m t đ cho Bi u đ 12. Ki m tra bi n age có theo lu t
bi n age (đ tu i).
phân ph i chu n hay không.
Trong đ th trên, tr c tung là xác su t tích l y và tr c hồnh là đ tu i t th p đ n cao.
Ch ng h n nh nhìn qua bi u đ , chúng ta có th th y kho ng 50% đ i t ng có tu i th p
h n 60.
bi t xem phân ph i c a age có theo lu t phân ph i chu n (normal distribution) hay
không chúng ta có th s d ng hàm qqnorm.
> qqnorm(age)
Tr c hoành c a bi u đ trên là đ nh l ng theo lu t phân ph i chu n (theoretical
quantile) và tr c hoành đ nh l ng c a s li u (sample quantiles). N u phân ph i c a
age theo lu t phân ph i chu n, thì đ ng bi u di n ph i theo m t đ ng th ng chéo 45
đ (t c là đ nh l ng phân ph i và đ nh l ng s li u b ng nhau). Nh ng qua Bi u đ
12, chúng ta th y phân ph i c a age không h n theo lu t phân ph i chu n.
8.6.3 Bi u đ h p (boxplot)
v bi u đ h p c a bi n s tc, chúng ta ch đ n gi n l nh:
> boxplot(tc, main="Box plot of total cholesterol", ylab="mg/L")