31
GII THI U VR Lê Tn Phùng 1 Mđầu R là phn mm thống kê đang ngày càng phổ biến trên thế gii, có mã ngun mvà hoàn toàn min phí. R là phn mm thng kê rt mnh, nhiều ưu điểm, được chp nhận như một công cthng kê chính thc bi nhiu tp chí khoa hc uy tín trên thế gii. R có thdownload min phí twebsite chính thc: http://www.r-project.org/ Tài liu này nhm cung cấp cho độc ginhng kiến thức và thao tác cơ bản để sdng R trong công vic phân tích thống kê thông thường. Đối tượng ca tài liu này là những người đã có kiến thc thống kê cơ bản, hiểu và đã thực hin các thng kê mô t, thng kê phân tích thông thường như kiểm định t (t student test), ANOVA, Chi bình phương, phân tích hồi quy đơn biến và đa biến. Chính vì vy, các kiến thc vthng kê skhông được nhc li. Phn phân tích thng kê phi tham ssđược trình bày mt tài liu khác. Tài liu này hy vọng được xem như nguồn cung cp nn tảng cơ bản, giúp độc gibước đầu làm quen vi R, để có ththam khảo sâu hơn các tài liu vR mà hiện nay đang có rất nhiu trên mng internet.

Giới thiệu sơ lược về phần mềm thống kê R

Embed Size (px)

Citation preview

Page 1: Giới thiệu sơ lược về phần mềm thống kê R

GIỚI THIỆU VỀ R

Lê Tấn Phùng

1 Mở đầu

R là phần mềm thống kê đang ngày càng phổ biến trên thế giới, có mã nguồn mở và hoàn

toàn miễn phí.

R là phần mềm thống kê rất mạnh, nhiều ưu điểm, được chấp nhận như một công cụ thống kê

chính thức bởi nhiều tạp chí khoa học uy tín trên thế giới.

R có thể download miễn phí từ website chính thức:

http://www.r-project.org/

Tài liệu này nhằm cung cấp cho độc giả những kiến thức và thao tác cơ bản để sử dụng R

trong công việc phân tích thống kê thông thường. Đối tượng của tài liệu này là những người

đã có kiến thức thống kê cơ bản, hiểu và đã thực hiện các thống kê mô tả, thống kê phân tích

thông thường như kiểm định t (t student test), ANOVA, Chi bình phương, phân tích hồi quy

đơn biến và đa biến. Chính vì vậy, các kiến thức về thống kê sẽ không được nhắc lại. Phần

phân tích thống kê phi tham số sẽ được trình bày ở một tài liệu khác.

Tài liệu này hy vọng được xem như nguồn cung cấp nền tảng cơ bản, giúp độc giả bước đầu

làm quen với R, để có thể tham khảo sâu hơn các tài liệu về R mà hiện nay đang có rất nhiều

trên mạng internet.

Page 2: Giới thiệu sơ lược về phần mềm thống kê R

2 Một số khái niệm và đặc tính cơ bản của R

2.1 Các đặc tính cơ bản của R

- Giao diện của R: Giao diện R tương đối đơn giản, chỉ gồm 1 cửa sổ lệnh (Hình 1). Hệ

thống menu giúp thực hiện một số công việc sẽ được trình bày ở các phần sau, nhưng

hầu như toàn bộ các phân tích thống kê đều thực hiện qua cửa sổ lệnh này.

Hình 1: Giao diện của R

- Thông thường, các phần mềm thống kê hay dùng như SPSS, EpiInfo, Stata… trực tiếp

tương tác với bộ số liệu (data) để thực hiện các yêu cầu thống kê, tính toán. Ví dụ, để

thực hiện so sánh 2 số trung bình bằng SPSS, việc trước hết là phải mở bộ số liệu. Sau

đó sẽ dùng Các lệnh qua menu hoặc syntax để tác động lên các biến số liên quan. Tuy

nhiên, R làm việc không hoàn toàn theo cách thông thường này, mà làm việc thông

qua các đối tượng, gọi là object, chứ không làm việc trực tiếp trên bộ số liệu.

- Khi R làm việc thì các biến số (variable), bộ số liệu (data), kết quả, các hàm số

(function) v.v… đều được lưu trong trong bộ nhớ dưới dạng các đối tượng (sau đây

gọi là object). Mỗi object có tên riêng biệt. Người dùng tác động lên các object này

bằng các hàm số (function) hoặc các toán tử (như phép tính số học, các toán tử luận

lỳ, các phép so sánh…).

- Một hàm số trong R bao gồm tên hàm và phải luôn luôn đi kèm với 2 dấu ngoặc đơn

mở và đóng, mặc dù có khi không cần có gì bên trong 2 dấu ngoặc đơn này. Ví dụ

ls(). Những gì chứa bên trong 2 dấu ngoặc đơn gọi là arguments của hàm đó (có thể

tạm dịch là đối số của hàm đó). Đối số của hàm có thể là một object (bộ số liệu, công

thức…) hoặc toán tử.

Page 3: Giới thiệu sơ lược về phần mềm thống kê R

- Toán tử bao gồm:

Toán tử số học: Ví dụ như cộng (+), trừ ( - ), nhân (*), chia (/), bình phương

(^), căn bậc 2 (sqrt) v.v…

Toán tử luận lý như và (&), hoặc (|), không bằng (!) v.v…

Toán tử so sánh như bằng (==) , lớn hơn (>), nhỏ hơn (<), lớn hơn hoặc bằng

(≥), nhỏ hơn hoặc bằng (≤) v.v…

- R làm việc dựa trên cấu trúc lệnh được gõ trực tiếp. Các lệnh dùng menu trong R còn

hạn chế.

- Trong quá trình thao tác, để thực hiện các lệnh đã sử dụng trước đó, hoặc dùng các

lệnh trước đó để chỉnh sửa thành một lệnh mới thì có thể sử dụng phím mũi tên để gọi

lại các lệnh vừa thực hiện. Điều này làm cho người dùng tiết kiệm thời gian và công

sức vì không cần phải gõ lại toàn bộ lệnh cũ.

- Có thể dùng dấu chấm phẩy để phân biệt 2 hoặc nhiều lệnh khác nhau mà không cần

phải xuống hàng. Ví dụ, ta muốn thực hiện 3 phép tính: 2+3, 4*7, và 10/5, ta thực

hiện 3 phép tính trên cũng một dòng lệnh của R mà không cần xuống hàng như sau:

> 2+3;4*7;10/5

[1] 5

[1] 28

[1] 2

- Khi viết một lệnh quá dài, cần phải xuống hàng để dễ theo dõi thì ta sử dụng phím

Enter để xuống hàng. Lúc này, sẽ không có dấu nhắc > như thường lệ mà thay vào đó

R tự dộng thêm dấu + trước dòng mới, cho phép tiếp tục viết lệnh. Lưu ý thao tác này

chỉ thực hiện được khi câu lệnh ở dòng trên vẫn chưa chưa được hoàn thành.

- Trong quá trình làm việc, khi cần biết thông tin gì, người dùng có thể tìm trực tiếp

trên R bằng cách gõ lệnh > help(), trong đó, nội dung trong dấu ngoặc đơn là nội

dung cần tìm hiểu. Ví dụ, để tìm hiểu hàm data.frame, ta gõ >help(data.frame).

Cũng có thể gõ dấu chấm hỏi (?) ngay phía trước nội dung cần muốn biết, ví dụ:

?data.frame.

- Khác với các phần mềm thống kê khác khi mọi lệnh, hàm đều có sẵn trong chương

trình. Ngoài những lệnh và hàm cơ bản tích hợp sẵn trong R, một số hàm của R được

chứa trong những gói (package) khác nhau và cần phải download về khi cần sử dụng.

Ví dụ, hàm describe được chứa trong package “psych”, không có sẵn khi cài đặt R.

Do đó, để sử dụng hàm này, trước hết phải cài đặt package “psych” vào R, sau đó

dùng hàm library() để gọi package psych. Lúc này mới sử dụng được hàm

describe.

- Để cài đặt một package, có thể sử dụng lệnh hoặc menu.

> install.packages(psych)

Hoặc từ menu (Hình 2): Chọn packages\install package(s)

Page 4: Giới thiệu sơ lược về phần mềm thống kê R

Hình 2: Cài đặt package từ menu lệnh

- Như trên đã nói, khi sử dụng hàm không có sẵn trực tiếp trong R (nhưng đã được cài

đặt package chứa hàm đó), đầu tiên phải dùng hàm library(), sau đó mới có thể

sử dụng các hàm có trong package được. Ví dụ, hàm read.spss nằm trong package

“foreign”, do đó để thực hiện hàm này, thao tác như sau:

> library(foreign)

> read.spss(“patient18.sav”, to.data.frame=TRUE)

2.2 Cách tạo, liệt kê, và xóa object

Tạo một object: Để tạo một object trong bộ nhớ của máy tính, người ta dùng ký hiệu “gán”

(<-). Ký hiệu này thường được viết từ trái sang phải (<-), nhưng viết ngược lại cũng được

chấp nhận. Hai ví dụ dưới đây là tương đương trong việc tạo ra một object tên là “exam”:

> exam<- a+15

> a+15 -> exam.

Nếu object đã được tạo ra trước đó (nhưng vẫn còn hiện diện trong bộ nhớ), thì thao tác trên

object này sẽ làm xóa đi giá trị trước đó của nó.

Liệt kê objects: Để liệt kê các objects hiện đang có trong bộ nhớ, sử dụng hàm ls(). Ví dụ ta

tạo ra 3 objects, sau đó muốn liệt kê các object này thì thao tác trên R như sau:

> patient<-12/2

> staff<-6+8

> hospital<-"khanh hoa"

> ls()

Page 5: Giới thiệu sơ lược về phần mềm thống kê R

[1] "hospital" "patient" "staff"

3 dòng lệnh đầu tiên để tạo ra 3 objects có tên là patient, staff, và hospital. Dòng lệnh cuối

cùng là để liệt kê các objects hiện có trong bộ nhớ.

Có thể dùng tùy chọn pat (viết tắt của pattern) để giới hạn sự liệt kê. Ví dụ khi chỉ cần liệt kê

những object có chữ “i” trong ví dụ trên thì thực hiện như sau:

> ls(pat="i")

[1] "hospital" "patient"

Có thể dùng hàm ls.str() để hiển thị đặc tính của objects (dạng số hay dạng chuỗi

v.v…). Ví dụ:

> ls.str()

hospital : chr "khanh hoa"

patient : num 6

staff : num 14

Xóa object: Dùng hàm rm(). Ví dụ, để xóa object tên là “hospital” trong ví dụ trên, thao tác

như sau:

> rm("hospital")

> ls()

[1] "patient" "staff"

Kết quả trên cho thấy sau khi xóa object “hospital” xong, sử dụng hàm ls() thì thấy chỉ còn 2

objects là “paient” và “staff”.

2.3 Thư mục làm việc

Cần phải xác định thư mục làm việc cho R. Các phần mềm khác, sau khi thực hiện xong cần

lưu trữ thì phần mềm sẽ hỏi lưu trữ ở đâu. Tuy nhiên, với R, cần phải xác định thư mục làm

việc trước.

Để biết hiện nay R đang làm việc ở thư mục nào, gõ getwd()

Để chọn thư mục làm việc, sử dụng hàm setwd(). Ví dụ muốn chọn thư mục làm việc là là

R thuộc thư mục phung\statistics nằm trên đĩa D, ta gõ:

setwd(“D:/phung/Statsitics/R”).

Lưu ý sử dụng / chứ không phải \ như window vẫn hay dùng.

Cách nhanh hơn để chọn thư mục làm việc được thực hiện trên menu như sau: File\change

dir…, và chọn thư mục cần lầm việc tại cửa sổ hiện lên (Hình 3).

Page 6: Giới thiệu sơ lược về phần mềm thống kê R

Hình 3: Chọn thư mục làm việc

Đặt mặc định thư mục làm việc: Vào biểu tượng R trên màn hình, click chuột phải, chọn

properties, chọn tab “shortcut”, và thay đổi thư mục tại mục “start in”.

2.4 Các lưu ý về cấu trúc lệnh

R làm việc dựa trên viết lệnh trực tiếp từ dấu nhắc của R (mặc định dấu nhắc của R là >).

Cấu trúc lệnh như sau:

> Lệnh <- hàm()

Page 7: Giới thiệu sơ lược về phần mềm thống kê R

Dấu <- tương đương với dấu = của một phương trình. Ví dụ, ta gán y=log(x) thì trong R sẽ

được viết là:

> y<-log(x)

2.5 Một số ký hiệu được sử dụng trong R

== Bằng

>= Lớn hơn hoặc bằng

<= Nhỏ hơn hoặc bằng

!= Khác, không bằng

> Lớn hơn

< Nhỏ hơn

a&b a và b

a|b a hoặc b

! Không là, khác

is.na(x) Có phải x là biến số bị bỏ trống (missing)

# Những cấu trúc sau dấu này sẽ không có tác dụng trong R, do đó được sử dụng để ghi

chú những công việc thực hiện trong R, cũng giống như dấu * sử dụng trong Stata hoặc

SPSS. Ví dụ, để thực hiện lệnh tìm hàm logarit của x, ta gõ như sau:

# Dat y la ham logarit cua x

>y <-log(x)

2.6 Một số lưu ý khi đặt tên trong R

- R phân biệt chữ hoa và chữ thường. Do đó, “sample” sẽ khác với “Sample” trong R.

- Không dùng khoàng trắng

- Không dùng gạch dưới _

- Có thể sử dụng dấu chấm (.) để đặt tên. Ví dụ: mysample hoặc my.sample

3 Các hàm cơ bản

3.1 Tạo bộ số liệu

Hàm data.frame()

Đây là hàm dùng để tập hợp các biến với nhau thành một bộ số liệu hoàn chỉnh. Ví dụ, ta

muốn xây dựng bộ số liệu gồm có 4 biến số khác nhau nhưng chưa được ghép lại thành một

bộ số liệu hoàn chỉnh, bao gồm: mã đối tượng (id), tuổi (age), giới (gender), và huyết áp tâm

thu (sbp). Ta muốn ghép 4 biến này vào một bộ số liệu mang tên là “hypertension”. Trình tự

như sau:

Page 8: Giới thiệu sơ lược về phần mềm thống kê R

Nhập số liệu cho một biến: Sử dụng hàm c(). Đây là hàm để nhập trực tiếp số liệu. Chữ c là

viết tắt của chữ concatenation, tức là “móc nối vào với nhau”. Với ví dụ trên, ta tạo số liệu

cho 4 biến trên như sau:

> id <- c(1,2,3,4,5,6,7,8,9)

> age <- c(23,45,54,36,55,43,44,37,41)

> gender <- c(1,0,1,1,1,0,1,0,0)

> sbp <- c(120,125,145,130,154,178,155,180,110)

Sau đó, sử dụng hàm data.frame() như sau để tạo bộ số liệu:

>hypertension<-data.frame(id,age,gender,sbp)

3.2 Lưu bộ số liệu dưới dạng tập tin của R

Hàm save(object, file=”tên file.rda”)

Ví dụ, ta đã tạo được đối tượng là hypertension như ở trên, ta muốn lưu thành tên tập tin

“dieutra” thì thực hiện như sau:

>save(hypertension,file=”dieutra.rda”)

3.3 Chỉnh sửa bộ số liệu

Hàm edit(data.frame())

Hàm này dùng để chỉnh sửa số liệu đã có hoặc nhập trực tiếp; tương tự như bảng tính Excel

hoặc SPSS. Ví dụ, để chỉnh sửa số liệu của tập tin điều tra, ta thực hiện như sau:

> edit(data.frame(hypertension))

Lưu ý là dùng tên đối tượng (hypertension) chứ không phải dùng tên tập tin (dieutra).

3.4 Liệt kê các biến của một đối tượng

Hàm names()

Hàm names() dùng để liệt kê tên các biến của đối tượng. Vì dụ:

> names(benhnhan)

[1] "patientid" "hospital" "v1" "v2" "v3"

[6] "v4" "v5" "v6" "v7" "v8"

[11] "v9" "v10" "v11" "v12" "v13"

[16] "v14" "v15" "v16" "v17" "v18"

[21] "v19" "v20" "v21" "v22" "v23"

[26] "v24" "v25" "v26" "satisfied" "gender"

[31] "ethnicity" "age" "religion" "marital" "occupation"

[36] "address1" "address2" "address3" "distance" "insurance"

[41] "fillout" "patient" "income" "depart" "date"

Page 9: Giới thiệu sơ lược về phần mềm thống kê R

Ví dụ trên yêu cầu R liệt kê các biến số của đối tượng “benhnhan”, và các biến số được liệt

kê với tên trong ngoặc kép và bao gồm 45 biến.

Để liệt kê toàn bộ số liệu trong một object, chỉ cần gõ tên object là đủ, ví dụ:

> benhnhan

patientid hospital v1r v2 v3 v4 v5 v6 v7 v8r v9 v10 v11 v12r v13 v14 v15r

1 1 vn 4 4 4 4 1 5 5 4 5 5 5 5 5 5 4

2 3 vn 4 4 4 4 1 5 5 4 5 5 5 5 5 5 5

3 4 vn 4 4 4 4 1 5 5 4 5 5 5 5 5 5 5

4 5 vn 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4

5 6 vn 2 4 5 4 4 4 4 2 2 4 4 4 4 4 3

6 7 vn 3 3 4 5 3 3 5 1 4 5 4 3 4 4 1

……

Khi cần liệt kê thông tin theo số cột, số hàng nhất định, có thể sử dụng dấu ngoặc vuông sau

tên object để chỉ định sự giới hạn này.

Ví dụ, chỉ liệt kê số liệu của hàng thứ 2 (quan sát thứ 2) và cột thứ 7 (biến thứ 7) của object

“benhnhan”, gõ benhnhan[2,7] (Hàng trước, cột sau)

benhnhan[1:10,]: Hiển thị số liệu của các quan sát từ 1 đến 10 với tất cả các biến số

benhnhan[4:8,1:5]: Hiển thị số liệu của các quan sát từ 4 đến 8 đối với cá biến số từ 1 đến

5 (các biến số khác không cần hiển thị).

3.5 Tạo bộ số liệu con

Hàm subset()

Hàm này được dùng để tạo ra một bộ số liệu con từ bộ số liệu có sẵn theo một số điều kiện

nhất định. Ví dụ, muốn tại bộ số liệu benhnhan.gia là những bệnh nhân tuổi từ 60 trở lên, ở

tại Nha Trang, sử dụng cú pháp như sau:

> benhnhan.gia<-subset(benhnhan,age>59,address== “nt”)

4 Nhập số liệu

4.1 Nhập số liệu từ file excel

Trước hết cần lưu file excel dưới một file dạng csv bằng cách dùng lệnh “Save as…” từ

Excel. Sau đó trong R dùng hàm read.csv(“tên file”,header=TRUE).

Ví dụ ta có 1 file Excel tên là patient.xls và muốn chuyển đổi file này thành file mà R có thể

đọc được. Trước hết, mở file patient.xls từ Excel. Sau đó, chọn trong menu: File\Save as…,

chọn csv (comma deliminated). Đối với Excel 2007, chọn Save as… rồi chọn Other format,

rồi chọn csv (comma deliminated). File đã được chuyển thành csv phải được lưu trữ trong thư

mục làm việc của R.

Page 10: Giới thiệu sơ lược về phần mềm thống kê R

Sau khi đã biến đổi thành dạng csv, ta dùng lệnh sau đây để chuyển file patient.csv thành file

patient.rda như sau:

> benhnhan<-read.csv(“patient.csv”,header=TRUE)

> save(benhnhan, file=”patient.rda”)

Lệnh đầu tiên yêu cầu R đọc file csv với dòng đầu tiên của file csv là tên cột (biến), lưu vào

object tên là “benhnhan”.

Lệnh thứ hai lưu object benhnhan thành file R có tên patient.rda

4.2 Nhập số liệu từ file SPSS

Dùng hàm read.spss(“tên file”, to.data.frame=TRUE).

Hàm này có trong package foreign. Do đó, cần phải gọi package này trước khi dùng hàm

read.spss.

Ví dụ, muốn chuyển số liệu từ file SPSS có tên là staff.sav, ta thao tác như sau:

>library(foreign)

> nhanvien<-read.spss(“staff.sav”,to.data.frame=TRUE)

>save(nhanvien,file=”staff.rda”)

Lệnh đầu tiên là để “gọi” hàm read.spss từ thư viện foreign, vì hàm read.spss không

có trong các hàm cơ bản trực tiếp của R.

4.3 Nhập số liệu từ file Stata

Sử dụng hàm read.dta(“tên file”) từ package foreign.

4.4 Nhập số liệu từ text file

Sử dụng hàm read.table(“tên file”, header=TRUE,sep=”,”)

Trong đó, sep= “,” hàm ý rằng các cột (các biến) được cách nhau bởi dấy phẩy. Nếu các

cột cách nhau bằng khoảng trắng thì sử dụng sep=” “ (Có 1 khoảng trắng ở giữa 2 dấu

ngoặc kép).

4.5 Lưu số liệu

Có 2 hàm quan trọng:

Write.table(x, file=” “)

Save(x,y,z,file=” “)

Còn có các tùy chọn khác, nhưng chỉ cần hiểu và thực hành với các tùy chọn trên. Trong đó,

x là tên đối tượng, tên file đặt nằm giữa 2 dấu ngoặc kép.

Page 11: Giới thiệu sơ lược về phần mềm thống kê R

5 Các phân tích thống kê

Như trên đã nói, R làm việc trực tiếp trên object. Do đó, khi sử dụng bộ số liệu từ Stata hoặc

SPSS hoặc từ Excel, txt, ta phải tạo object bằng hàm read, sau đó sẽ gắn object vào R để có

thể bắt đầu phân tích.

Ví dụ, ta muốn phân tích bộ số liệu từ tập tin patient.sav. Trước tiên phải tạo object, ví dụ tạo

object mang tên “benhnhan”:

> benhnhan <- read.spss(“patient.sav”,to.data.frame=TRUE)

Sau đó, gắn object benhnhan vào R để có thể bắt đầu phân tích:

> attach(benhnhan)

5.1 Thống kê mô tả

5.1.1 Thông tin bộ số liệu hoặc biến số

Có 3 hàm cơ bản: summary(x), describe(x), và str(x).

Hàm summary(x)

Trong đó x là object hoặc biến số. Hàm này sẽ giúp liệt kê từng biến với các thông tin về giá

trị nhỏ nhất, giá trị lớn nhất, trung bình, median, 1st quarter, 3

rd quarter (đối với biến dạng số)

hoặc thống kê mô tả đối với biến dạng phân loại.

Summary() cũng có thể dùng để thống kê theo biến.

Ví dụ:

Thống kê tuổi (age) của bệnh nhân, R cho kết quả giá trị tuổi tối thiểu (Min), bách phân vị

thứ nhất (1st Qu.), Median, trung bình (Mean), bách phân vị thứ 3 (3

rd Qu.), giá trị tối đa, và

số liệu trống (Na’s), như sau:

> summary(age)

Min. 1st Qu. Median Mean 3rd Qu. Max. NA's

19.00 31.00 42.00 46.21 57.50 91.00 5.00

Thống kê số bệnh nhân theo biến địa chỉ huyện (address3), R cho kết quả là Cam Ranh (cr)

có 139 bệnh nhân, Vạn ninh (vn) có 141 bệnh nhân.

> summary(address3)

cr vn

139 141

Khi cần thống kê mô tả cho một biến số của một object trong khi nhiều object đã được gắn

với R thì khi sử dụng hàm summary cần phải cho R biết rõ object nào. Ví dụ, muốn summary

biến số “age” của object “benhnhan”, sử dụng lệnh như sau:

> summary(benhnhan["age"])

age

Page 12: Giới thiệu sơ lược về phần mềm thống kê R

Min. :19.00

1st Qu.:31.00

Median :42.00

Mean :46.21

3rd Qu.:57.50

Max. :91.00

NA's : 5.00

Lưu ý, trong trường hợp này, tên biến phải đặt trong ngoặc kép.

Hàm describe(x)

Đây là hàm nằm trong package “psych”. Do đó, muốn sử dụng hàm describe() cần phải

cài đặt package “psych” vào R, và phải gọi package psych trước khi thi hành hàm describe.

Ví dụ:

> library(psych)

> describe(benhnhan)

var n mean sd median trimmed

patientid 1 280 1.465100e+02 83.48 1.460000e+02 1.467400e+02

hospital* 2 280 1.500000e+00 0.50 2.000000e+00 1.500000e+00

v1r 3 280 3.360000e+00 0.96 3.000000e+00 3.340000e+00

v2 4 278 3.510000e+00 0.83 4.000000e+00 3.560000e+00

v3 5 278 3.710000e+00 0.83 4.000000e+00 3.750000e+00

v4 6 279 3.730000e+00 0.79 4.000000e+00 3.770000e+00

v5 7 276 3.190000e+00 1.08 3.000000e+00 3.200000e+00

Hàm này sẽ cho biết các thông số: số thứ tự biến (var), tổng số quan sát (n) trừ những giá trị

bị bỏ trống, trung bình (mean), độ lệch chuẩn (sd), trung vị (median), trimed, giá trị tối thiểu

(min), giá trị tối đa (max), khoảng (range), skew, và kurtosis.

Hàm str(x)

Hàm này cũng tương tự như describe() hoặc summary(), nhưng cho thông tin chi tiết

hơn, bao gồm bao nhiêu quan sát, bao nhiêu biến, rồi liệt kê đặc tính của từng biến. Hàm này

tương đương như lệnh describe của Stata. Ví dụ:

> str(benhnhan)

'data.frame': 280 obs. of 55 variables:

$ patientid : num 1 3 4 5 6 7 8 9 10 11 ...

$ hospital : Factor w/ 2 levels "cr","vn": 2 2 2 2 2 2 2 2 2 2 ...

Page 13: Giới thiệu sơ lược về phần mềm thống kê R

$ v1r : num 4 4 4 4 2 3 2 3 4 3 ...

$ v2 : num 4 4 4 4 4 3 5 3 4 2 ...

$ v3 : num 4 4 4 4 5 4 3 5 4 3 ...

$ v4 : num 4 4 4 4 4 5 4 4 4 4 ...

$ v5 : num 1 1 1 4 4 3 3 2 5 2 ...

$ v6 : num 5 5 5 4 4 3 5 4 4 1 ...

$ v7 : num 5 5 5 4 4 5 4 5 4 3 ...

$ v8r : num 4 4 4 4 2 1 2 3 3 4 ...

$ v9 : num 5 5 5 4 2 4 3 3 4 2 ...

5.1.2 Tính giá trị trung bình

Hàm mean(x,na.rm=TRUE)

Trong đó x là tên biến hoặc object, na.rm=TRUE khi loại bỏ giá trị missing trong tính giá trị

trung bình, FALSE khi không loại bỏ giá trị missing. R sẽ cho ra giá trị là missing (NA) khi

có bất kỳ trị nào bị missing.

5.1.3 Tính độ lệch chuẩn

Hàm sd(x,na.rm=TRUE)

5.1.4 Tính phương sai

Hàm var(x,na.rm=TRUE)

5.1.5 Tính median

Hàm median(x,na.rm=TRUE)

5.1.6 Thống kê theo nhóm

Dùng lệnh by để phân tích. Ví dụ, muốn tính trung bình tuổi theo giới của object benhnhan,

dùng lệnh by như sau:

> by(age,gender,mean,na.rm=TRUE)

gender: 1

[1] 48.66

------------------------------------------------------------

gender: 2

[1] 43.32065

5.1.7 Thống kê biến phân loại thành bảng

Sử dụng hàm table(x,y), trong đó x, y là 2 biến phân loại. x sẽ được cho kết quả theo

hàng, và y sẽ được cho kết quả theo cột. Hàm này sẽ cho giá trị tuyệt đối nhưng không cho

giá trị phần trăm kèm theo. Muốn có giá trị phần trăm thì sử dụng hàm

Page 14: Giới thiệu sơ lược về phần mềm thống kê R

prop.table(x,1), trong đó x là object và 1 nếu tính phần trăm theo hàng hoặc 2 nếu tính

phần trăm theo cột.

Ví dụ tính số dân tộc (tên biến là ethnicity) theo bệnh viện (tên biến là hospital, bao gồm 2

bệnh viện: Cam Ranh (cr) và Vạn Ninh (vn):

> table(hospital, ethnicity)

ethnicity

hospital Kinh Raglai Other

cr 137 1 1

vn 141 0 0

> prop.table(table(hospital, ethnicity),1)

ethnicity

hospital Kinh Raglai Other

cr 0.985611511 0.007194245 0.007194245

vn 1.000000000 0.000000000 0.000000000

> prop.table(table(hospital, ethnicity),2)

ethnicity

hospital Kinh Raglai Other

cr 0.4928058 1.0000000 1.0000000

vn 0.5071942 0.0000000 0.0000000

5.2 Các thống kê phân tích thông dụng

5.2.1 So sánh trung bình sử dụng kiểm định t

R dùng hàm t.test() để thực hiện kiểm định này. Tùy theo loại biến số cần so sánh, ta

phân biệt các loại t test như sau:

So sánh trung bình 2 nhóm độc lập: t.test(y~x), trong đó y là biến liên tục và x là biến

nhị phân.

So sánh trung bình 2 nhóm độc lập: t.test(y1,y2), trong đó y1, y2 là 2 biến số liên tục.

So sánh trung bình ghép cặp: t.test(y1,y2,paired=TRUE), trong đó y1 và y2 là 2

biến số liên tục (phải có số quan sát bằng nhau).

So sánh trung bình một mẫu (so sánh với một số trung bình khác): t.test(y,mu=3),

trong đó y là biến liên tục, mu=3 là so sánh với số trung bình có sẵn, trong ví dụ này số trung

bình này bằng 3.

Các ví dụ:

So sánh trung bình 2 nhóm độc lập với nhóm là biến nhị phân: Ví dụ so sánh tuổi trung bình

(age) giữa 2 giới tính (gender):

Page 15: Giới thiệu sơ lược về phần mềm thống kê R

> t.test(age~gender)

Welch Two Sample t-test

data: age by gender

t = 2.4963, df = 180.509, p-value = 0.01344

alternative hypothesis: true difference in means is not equal to 0

95 percent confidence interval:

1.274746 10.890990

sample estimates:

mean in group Male mean in group Female

50.16667 44.08380

So sánh trung bình của 2 biến v1 và biến v2 (cả 2 biến đều là biến liên tục)

> t.test(v1,v2)

Welch Two Sample t-test

data: v1 and v2

t = -11.8247, df = 564.435, p-value < 2.2e-16

alternative hypothesis: true difference in means is not equal to 0

95 percent confidence interval:

-1.033137 -0.738803

sample estimates:

mean of x mean of y

2.636678 3.522648

So sánh trung bình của 2 nhóm ghép cặp: 2 nhóm này gồm biến y1 và biến y2, được tạo ra

trực tiếp trên R bằng hàm c(). Sau đó so sánh trung bình.

> y1<-c(5.1,6.3,7.8,6.9,9.11)

> y2<-c(4.7,5.3,4.6,6.1,8.5)

> t.test(y1,y2,paired=TRUE)

Paired t-test

data: y1 and y2

t = 2.36, df = 4, p-value = 0.07766

alternative hypothesis: true difference in means is not equal to 0

95 percent confidence interval:

-0.2120912 2.6160912

sample estimates:

mean of the differences

Page 16: Giới thiệu sơ lược về phần mềm thống kê R

1.202

So sánh trung bình của một mẫu: So sánh tuổi trung bình (age) của một mẫu so với tuổi trung

bình là 46:

> t.test(age,mu=46)

One Sample t-test

data: age

t = 0.1813, df = 274, p-value = 0.8563

alternative hypothesis: true mean is not equal to 46

95 percent confidence interval:

43.95682 48.45773

sample estimates:

mean of x

46.20727

So sánh tuổi trung bình (age) theo giới, với giả định phương sai không bằng nhau

(var.equal=FALSE):

> t.test(age~gender,var.equal=FALSE)

Welch Two Sample t-test

data: age by gender

t = 2.4963, df = 180.509, p-value = 0.01344

alternative hypothesis: true difference in means is not equal to 0

95 percent confidence interval:

1.274746 10.890990

sample estimates:

mean in group Male mean in group Female

50.16667 44.08380

5.2.2 So sánh trung bình của trên 2 nhóm (oneway ANOVA)

Hàm anova() sẽ cho kết quả phân tích ANOVA. Ví dụ, để tìm hiểu sự khác nhau giữa tuổi

trung bình (age) giữa các nhóm nghề nghiệp (occupation) với nhau, thực hiện trên R như sau:

> anova(lm(age~occupation))

Analysis of Variance Table

Response: age

Df Sum Sq Mean Sq F value Pr(>F)

occupation 6 25412 4235.4 15.666 2.18e-15 ***

Residuals 265 71644 270.4

Page 17: Giới thiệu sơ lược về phần mềm thống kê R

---

Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Phân tích từng nhóm sau phân tích ANOVA (post estimation) thì sử dụng hàm

pairwise.t.test(). Theo ví dụ trên, muốn phân tích sự khác nhau giữa các nhóm nghề

nghiệp thực sự nằm giữa các cặp nhóm nào, sử dụng phương pháp Boferroni, ta thao tác như

sau:

> pairwise.t.test(age,occupation,p.adj="bonferroni")

Pairwise comparisons using t tests with pooled SD

data: age and occupation

Unemployed Farmer Fisher Worker Teacher Officer

Farmer 1.0000 - - - - -

Fisher 1.0000 1.0000 - - - -

Worker 0.2861 0.0266 0.0271 - - -

Teacher 1.0000 0.6814 0.3917 1.0000 - -

Officer 1.0000 1.0000 1.0000 0.4079 1.0000 -

Other 1.9e-06 2.9e-08 0.0064 4.0e-12 3.1e-08 0.0005

P value adjustment method: bonferroni

Kết quả trên cho thấy sự khác nhau thực sự nằm ở nhóm worker với farmer (p values bằng

0.0266 và 0.0271), và nhóm Other với các nhóm khác.

5.2.3 Hồi quy tuyến tính

Hàm lm() (linear regression)được sử dụng trong phân tích hồi quy tuyến với R.

Hồi quy tuyến tính đơn

Hàm lm(y~x)

Trong đó: y là biến phụ thuộc và x là biến độc lập.

Ví dụ, để phân tích hồi quy tuyến tính cho biến số sự hài lòng (satisfied) với tuổi (age), thực

hiện trong R như sau:

> lm(satisfied~age)

Call:

lm(formula = satisfied ~ age)

Coefficients:

(Intercept) age

3.203180 0.006801

Page 18: Giới thiệu sơ lược về phần mềm thống kê R

Kết quả trên cho ta biết 2 hệ số cơ bản: intercept (a) và beta (b) trong phương trình tuyến tính

y = a +bx

Tuy nhiên, để R cho biết nhiều thông số hơn thì ta làm 2 bước: đầu tiên tạo 1 object cho hàm

tuyến tính. Sau đó sử dụng hàm summary để biết chi tiết các thông số của hàm tuyến tính

này. Trong ví dụ trên, đầu tiên ta tạo 1 object, ví dụ đặt tên là reg là hàm tuyến tính của

satisfied và age, sau đó sử dụng hàm summary:

> reg<-lm(satisfied~age)

> summary(reg)

Call:

lm(formula = satisfied ~ age)

Residuals:

Min 1Q Median 3Q Max

-2.4752 -0.5024 -0.3392 0.5384 1.6404

Coefficients:

Estimate Std. Error t value Pr(>|t|)

(Intercept) 3.203180 0.122283 26.195 < 2e-16 ***

age 0.006801 0.002451 2.775 0.00593 **

---

Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.7479 on 259 degrees of freedom

(19 observations deleted due to missingness)

Multiple R-squared: 0.02887, Adjusted R-squared: 0.02512

F-statistic: 7.7 on 1 and 259 DF, p-value: 0.005925

Ta thấy theo cách này, R đã cho ta biết 3 nội dung quan trọng:

Phần dư (residuals) với các thông tin về số tối thiểu, tối đa, median, và phân vị 1 và 3;

Các hệ số trong phương trình hồi quy với các thông tin về ước lượng (estimate), sai số chuẩn

(std. error), t value và p values.

R2

và Adjusted R2, cùng với F test và p value của test này.

Hồi quy tuyến tính đa biến:

Hàm lm(y~x1+x2+x3+…+xn)

Trong đó: y là biến phụ thuộc, x1, x2,x3,…, xn là biến độc lập.

Page 19: Giới thiệu sơ lược về phần mềm thống kê R

Ví dụ, phân tích hồi quy tuyến tính đa biến giữa biến số phụ thuộc là điểm số hài lòng

(satisfied) và các biến v1, v2, v3:

> reg3<-lm(satisfied~v1+v2+v3)

> summary(reg3)

Call:

lm(formula = satisfied ~ v1 + v2 + v3)

Residuals:

Min 1Q Median 3Q Max

-3.04867 -0.46194 0.00303 0.41630 1.61933

Coefficients:

Estimate Std. Error t value Pr(>|t|)

(Intercept) 1.64259 0.30025 5.471 1.06e-07 ***

v1 0.08126 0.04717 1.723 0.08612 .

v2 0.28430 0.05543 5.129 5.74e-07 ***

v3 0.18067 0.05599 3.227 0.00141 **

---

Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.7101 on 257 degrees of freedom

(19 observations deleted due to missingness)

Multiple R-squared: 0.1532, Adjusted R-squared: 0.1434

F-statistic: 15.5 on 3 and 257 DF, p-value: 2.672e-09

Phân tích hồi quy tuyến tính đa biến trong đó một số biến độc lập là biến dạng phân loại:

Sử dụng hàm factor cho các biến phân loại để tạo thành các dummy variable (còn gọi là

indicator variable). Ví dụ có 2 biến phân loại là marital và occupation thì cú pháp như sau:

> reg<-lm(satisfied~age+factor(marital)+factor(occupation))

> summary(reg)

Call:

lm(formula = satisfied ~ age + factor(marital) + factor(occupation))

Page 20: Giới thiệu sơ lược về phần mềm thống kê R

Residuals:

Min 1Q Median 3Q Max

-2.39750 -0.51410 -0.07205 0.51995 1.72556

Coefficients:

Estimate Std. Error t value Pr(>|t|)

(Intercept) 2.999844 0.207146 14.482 < 2e-16 ***

age 0.010035 0.003112 3.225 0.00143 **

factor(marital)Married 0.073316 0.168362 0.435 0.66361

factor(marital)Divorced -0.596047 0.408798 -1.458 0.14610

factor(marital)Windowed -0.421777 0.239611 -1.760 0.07960 .

factor(occupation)Farmer 0.021495 0.162386 0.132 0.89480

factor(occupation)Fisher 0.003336 0.206392 0.016 0.98712

factor(occupation)Worker -0.029534 0.202621 -0.146 0.88423

factor(occupation)Teacher 0.186299 0.215169 0.866 0.38743

factor(occupation)Officer 0.092148 0.212778 0.433 0.66534

factor(occupation)Other 0.073461 0.167994 0.437 0.66229

---

Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.7408 on 247 degrees of freedom

(22 observations deleted due to missingness)

Multiple R-squared: 0.07475, Adjusted R-squared: 0.03729

F-statistic: 1.996 on 10 and 247 DF, p-value: 0.03437

5.2.4 Hồi quy logistic

Tương tự như hồi quy tuyến tính, nhưng sử dụng hàm glm() thay vì lm(). Các hàm sau

phân tích hồi quy logistic:

fit<-glm(y~x1+x2+x3)

summary(fit): Hiển thị kết quả

exp(fit): tính OR (lũy thừa hệ số e của coeficient)

confint(fit): 95% độ tin cậy của coeficient

exp(confint(fit): 95% độ tin cậy OR

predict(fit,type=”response”): Giá trị tiên đoán

residuals(fit,type=”deviance”): Phân tích phần dư

Page 21: Giới thiệu sơ lược về phần mềm thống kê R

Ví dụ, phân tích nguy cơ nhồi máu cơ tim (infarction) với dùng thuốc tránh thai (pill), phân

tích hồi quy logistic như sau:

> fit<-glm(infarction~pill)

> summary(fit)

Call:

glm(formula = infarction ~ pill)

Deviance Residuals:

Min 1Q Median 3Q Max

-0.3966 -0.2048 -0.2048 0.6035 0.7952

Coefficients:

Estimate Std. Error t value Pr(>|t|)

(Intercept) 0.20482 0.03332 6.147 3.62e-09 ***

pill 0.19173 0.06548 2.928 0.00377 **

---

Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for gaussian family taken to be 0.1843039)

Null deviance: 42.496 on 223 degrees of freedom

Residual deviance: 40.915 on 222 degrees of freedom

AIC: 260.85

Number of Fisher Scoring iterations: 2

> confint(fit)

Waiting for profiling to be done...

2.5 % 97.5 %

(Intercept) 0.13951205 0.2701265

pill 0.06338972 0.3200752

> exp(coef(fit))

(Intercept) pill

1.227303 1.211346

Page 22: Giới thiệu sơ lược về phần mềm thống kê R

> exp(confint(fit))

Waiting for profiling to be done...

2.5 % 97.5 %

(Intercept) 1.149713 1.310130

pill 1.065442 1.377231

5.2.5 Phân tích chi bình phương

Phâ n tích chi bình phương với số có sẵn (tương tự như lệnh tabi của Stata)

Đầu tiên sử dụng hàm matrix() để tạo object. Sau đó dùng hàm chisq.test() để tính.

Ví dụ, muốn tính chi bình phương của các số dưới đây:

27 40

89 102

Trước hết dùng hàm matrix() để tạo ra object x, sau đó dùng hàm chisq.test() để

tính như sau:

> x<-matrix(c(27,40,89,102),ncol=2)

> chisq.test(x)

Pearson's Chi-squared test with Yates' continuity correction

data: x

X-squared = 0.561, df = 1, p-value = 0.4539

ncol dùng để chỉ số cột (column).

Phân tích chi bình phương từ biến số của một bộ số liệu có sẵn:

Sử dụng trực tiếp hàm chisq.test(table()). Ví dụ, trong object benhnhan ta có 2

biến phân loại tên là hospital (gồm 2 giá trị cr và vn), và biến giới (nam=1, nữ=2). Muốn tính

chi bình phương có thể làm 2 cách trực tiếp và gián tiếp như sau:

Trực tiếp:

> chisq.test(table(gender,hospital))

Pearson's Chi-squared test with Yates' continuity correction

Page 23: Giới thiệu sơ lược về phần mềm thống kê R

data: table(gender, hospital)

X-squared = 0.0078, df = 1, p-value = 0.9296

Gián tiếp: Tạo một object để trên cơ sở hàm table() trước, sau đó tính chi bình phương

trực tiếp từ object này. Ví dụ trên:

> m<-table(gender,hospital)

> m

hospital

gender cr vn

Male 50 49

Female 89 92

> prop.table(m)

hospital

gender cr vn

Male 0.1785714 0.1750000

Female 0.3178571 0.3285714

> chisq.test(m)

Pearson's Chi-squared test with Yates' continuity correction

data: m

X-squared = 0.0078, df = 1, p-value = 0.9296

6 Vẽ biểu đồ

Đây là thế mạnh của R, và là một trong những lý do khiến nhiều người quay lưng với các

phần mềm thông dụng khác để sử dụng R. Các biểu đồ của R tạo ra có thể được lưu với nhiều

định dạng khác nhau, bao gồm PDF, file hình ảnh (bmp, tiff, jpeg…).

Tài liệu này chỉ hướng dẫn vẽ 3 biểu đồ cơ bản. Rất nhiều biểu đồ khác cao cấp hơn hoặc chi

tiết hơn xin xem trực tiếp trên website của R và các tài liệu R khác có sẵn trên internet.

Chúng ta sẽ sử dụng một data file tên là hsb2.sav của SPSS để minh họa cho các biểu đồ sẽ

trình bày dưới đây.

File hsb2 thu thập số liệu của 200 học sinh, được cấu trúc như sau:

ID, Biến số (numeric), là số ID của học sinh

FEMALE, biến định danh (nominal), bằng 1 (nam) hoặc 2 (nữ)

RACE, biến định danh, gồm 4 giá trị: 1: Hispanic, 2: Asian, 3: African America và 4: Da

trắng

Page 24: Giới thiệu sơ lược về phần mềm thống kê R

SES, tình trạng kinh tế, biến thứ tự (ordinal), gồm 3 giá trị: 1: thấp, 2: trung bình, 3: cao

SCHTYP, kiểu trường học, biến định danh, gồm 1: trường công, 2: trường tư

PROG, chương trình học, biến định danh, gồm 1: phổ thông, 2: chuyên biệt, 3: nghề

READ, biến dạng số, là điểm môn đọc

MATH, biến dạng số, là điểm môn toán

SCIENCE, biến dạng số, là điểm môn khoa học

SOCST, biến dạng số, là điểm môn xã hội

6.1.1 Biểu đồ dạng thanh (bar chart)

Áp dụng cho những biến số rời rạc.

Biểu đồ đơn: Áp dụng chỉ cho 1 biến số. Cấu trúc hàm chung là barplot(table(x)),

trong đó x là biến số cần tạo biểu đồ.

Có thể thực hiện từng bước: Tạo 1 object bằng hàm table() trước, sau đó sẽ vẽ biểu đồ

bằng object này.

Ví dụ, muốn tạo biểu đồ biểu thị chương trình học (PROG), ta có thể thực hiện trực tiếp như

sau:

barplot(table(PROG))

Hoặc tạo ra 1 object, ví dụ tên là program, sau đó dùng hàm barplot:

> program<-table(PROG)

> barplot(program)

Nếu muốn biểu đồ nằm ngang, ta thêm “horiz=TRUE” như sau:

> barplot(program,horiz=TRUE)

Page 25: Giới thiệu sơ lược về phần mềm thống kê R

Ta có các tùy chọn sau đây được thêm vào thành phần chính của hàm barplot():

- Tên trục tung: ylab=”ten truc tung”

- Tên trục hoành: xlab=”ten truc hoanh”

- Tên biểu đồ: main=”ten bieu do”

- Tô màu cho các thanh: col=c(“mau1”, “mau2”, “mau3”…)

- Tạo ghi chú: legend=rownames(object)

Các ví dụ sau đây minh họa cho các tùy chọn này:

> barplot(program,main="phan bo chuong trinh",xlab="loai chuong

trinh",ylab="so hoc sinh",

col=c("red","green","yellow"),legend=rownames(program))

Biểu dồ có so sánh hai biến: Trong trường hợp này, cấu trúc lệnh cũng giống như trên nhưng

thêm biến thứ hai. Cụ thể như sau: barplot(table(y,x)), trong đó x sẽ nằm trục

Page 26: Giới thiệu sơ lược về phần mềm thống kê R

hoành (biểu đồ dọc) hoặc trục tung (biểu đồ ngang). Ví dụ, muốn biểu hiện chương trình học

theo nam và nữ (biến FEMALE), thực hiện trên R như sau:

> barplot(table(FEMALE,PROG))

Hoặc có thể tạo 1 object trước, sau đó sử dụng hàm bar.plot()

> program2<-table(FEMALE,PROG)

> barplot(program)

Để tạo một biểu đồ nằm ngang, thêm tùy chọn: horiz=TRUE như trên

> program2<-table(FEMALE,PROG)

> barplot(program2,horiz=TRUE)

Tương tự như trong trường hợp trên, các tùy chọn (options) đều có thể sử dụng trong biểu đồ

dạng này. Mặc định, biểu đồ dạng thanh có 2 biến số sẽ được ghép vào 1 thanh cho 2 biến số

(gọi là stacked bar plot). Nếu muốn chọn 2 phân loại thành 2 thanh riêng biệt nằm cạnh nhau,

ta sử dụng tùy chọn: bedside=TRUE.

> barplot(program2,main="Phan bo chuong trinh",xlab="Loai chuong trinh",

Page 27: Giới thiệu sơ lược về phần mềm thống kê R

+ ylab="So hoc sinh",col=c("red","dark blue"),legend=rownames(program2))

> barplot(program2,main="Phan bo chuong trinh",xlab="Loai chuong trinh",

+ ylab="So hoc sinh",col=c("red","dark blue"),legend=rownames(program2),

+ beside=TRUE)

6.1.2 Biểu đồ hình hộp (Box Plot)

Hàm chung là: boxplot(x~m), trong đó x là biến số dạng số, m là nhóm mà ta muốn tạo

ra các box plot theo nhóm. Các tùy chọn bao gồm:

- varwidth=TRUE nếu ta muốn chiều rộng của hộp tỉ lệ với căn bậc hai của cở mẫu

- horizontal=TRUE nếu ta muốn hình hộp nằm ngang.

- Các tùy chọn khác như tên trục, tên biểu đồ, màu, chú thích… giống như đã trình bày

trong biểu đồ hình thanh.

> boxplot(READ,main="Diem mon doc",col=c("red"))

Page 28: Giới thiệu sơ lược về phần mềm thống kê R

> boxplot(READ~PROG,col=c("red","green","yellow"),horizontal=TRUE)

6.1.3 Biểu đồ scatter

Đây là dạng biểu đồ rất hay sử dụng trong phân tích thống kê. Biểu đồ cho ta cái nhìn sơ khởi

về mối quan hệ giữa 2 biến liên tục với nhau. Hàm sử dụng như sau:

Biểu đồ scatter đơn thuần: plot (x,y)

Thêm đường hồi quy màu đỏ: abline(lm(y~x),col=”red”)

Thêm đường lowess màu xanh: lines(lowess(x,y),col=”dark blue”)

Các ví dụ:

> plot(READ,WRITE,main="Tuong quan giua READ va WRITE")

Page 29: Giới thiệu sơ lược về phần mềm thống kê R

> abline(lm(WRITE~READ),col="red")

> lines(lowess(READ,WRITE),col="darkblue")

Page 30: Giới thiệu sơ lược về phần mềm thống kê R
Page 31: Giới thiệu sơ lược về phần mềm thống kê R

TÀI LIỆU THAM KHẢO CHÍNH

Nguyễn Văn Tuấn: Phân tích dữ liệu và tạo biểu đồ bằng R. NXB Khoa học kỹ thuật –

Thành phố Hồ Chí Minh. 2006

Emmanuel Paradis: R for beginners. 2005

An Introduction to R từ website: http://www.r-project.org/

Quick-R homepage at: http://www.statmethods.net/