sử dụng biểu đồ phân tích - Pdf 23

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

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 hoà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). -4 -2 0 2 4
-2 -1 0 1 2
x
y

chnh và cho các s liu này. Tuy nhiên, chúng ta cng có th kim soá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à đng biu
din 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

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
Biu đ 4. nh h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…



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))
> 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)

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
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
Biu đ 4. nh hng ca pch=16 và col=”red”,
bty=”l”. 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:

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 soá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")
0 50 100 150 200
-4 -2 0 2 4Text 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)

> 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 tam8.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”)

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 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 đ cho mt bin s ri rc (discrete variable):
barplot

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

> barplot(sex.freq,
horiz = TRUE,
col = rainbow(length(sex.freq)),
main=”Frequency of males and females”)

8.4 Biu đ cho hai bin s ri rc (discrete variable):
barplot

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] (67.3,80]
19 24 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

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]
(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]

Biu đ 8a. Tn s cho 3 nhóm tui 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”)
123456

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.
Biu đ 9b. Thêm tên biu đ và tên ca trc
trung và trc hoành bng xlab và ylab. 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)

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
Biu đ 10a. Xác sut phân phi mt đ cho
bin age (đ tui).
Biu đ 10b. Xác sut phân phi mt đ cho
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)])

(1:n)/n
-2 -1 0 1 2
50 60 70 80
Normal Q-Q Plot
Theoreti cal Quantiles
Sample Quantiles
Biu đ 11. Xác sut phân phi mt đ cho
bin age (đ tui).
Biu đ 12. Kim tra bin age có theo lut
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 hoà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)


mg/ L
Nam Nu
345678
Box plot of total cholesterol
mg/L
Biu đ 14a. Trong biu đ này, chúng ta
thy trung v ca total cholesterol  n gii
thp hn nam gii, nhng đ dao đng gia
hai nhóm không khác nhau bao nhiêu.
Biu đ 14b. Total cholesterol cho tng
gii tính, vi màu sc và hình hp nm
ngang. 8.6.4 Biu đ thanh (bar chart)

 v biu đ thanh ca bin s bmi, chúng ta ch đn gin lnh:

> barplot(bmi, col=”blue”)

kg/m^2
0 5 10 15 20 25

Biu đ 15. Biu đ thanh cho bin bmi. 8.6.5 Biu đ đim (dotchart)

Mt đ th khác cung cp thông tin ging nh barplot là dotchart:


chúng ta phi dùng đn hàm ifelse. Trong lnh sau đây, nu sex==”Nam” thì v kí
t s 16 (ô tròn), nu không nam thì v kí t s 22 (tc ô vuông):

> plot(hdl, tc, pch=ifelse(sex=="Nam", 16, 22))

Kt qu là Biu đ 18a. Chúng ta cng có th thay kí t thành “M” (nam) và “F”
n(xem Biu đ 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
2468
345678
hdl
tc
Biu đ 18a. Mi liên h gia tc và hdl theo
tng gii tính đc th hin bng hai kí hiu
du.
Biu đ 18a. Mi liên h gia tc và hdl theo
tng gii tính đc th hin bng hai kí t. Chúng ta cng có th v mt đng biu din hi qui tuyn tính (regression line) qua các
đim trên bng cách tip tc ra các lnh 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)

Kt qu là Biu đ 19a di đây. Chúng ta cng có th dùng hàm trn (smooth function)
đ biu din mi liên h gia hai bin s.  th sau đây s dng lowess (mt hàm
thông thng nht) trong vic “làm trn” s liu tc và hdl (Biu đ 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")


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status