You are on page 1of 24

GIỚI THIỆU VỀ R VÀ RSTUDIO

Lê Tấn Phùng*, MD, MPH, PhD

1. Mở đầu
R là chương trình 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à chương trình 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 trong và ngoài nước.
R có thể download miễn phí từ website chính thức:
https://cran.r-project.org
RStudio là nền tảng (platform) nhằm mục đích giúp R được sử dụng, tương tác, thao tác
dễ dàng và thuận tiện hơn. RStudio có thể download bản miễn phí từ website chính thức:
https://www.rstudio.com
RStudio đã giúp cho việc sử dụng R trở nên dễ dàng, thuận tiện hơn nhiều bằng những
dấu nhắc lệnh, những gợi ý sử dụng ngay trên giao diện. Do đó, các hướng dẫn và minh họa
trong bài này sẽ sử dụng RStudio thay cho giao diện R “cổ điển” đòi hỏi người dùng phải nhớ
chính xác các lệnh, các hàm, các package cần thiết.
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, đã thực hiện, hiểu và giải thích được 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.

*
Trường Đại học Quốc tế Miền Đông (EIU)
1
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). Ngoài
ra còn có hệ thống menu giúp thực hiện một số công việc, 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

- Tuy nhiên, trong bài viết này giao diện của RStudio sẽ được dùng để thay cho giao diện
R “cổ điển” ở trên, với tốt nhất là 4 cửa sổ từ trái sang phải và từ trên xuống theo chiều
kim đồng hồ như sau: cửa sổ mã nguồn (Source); cửa sổ Environment, History; cửa số
Files, Plots, Packages, Help, Viewers; và cửa số Console (Hình 2).

Hình 2: Giao diện của RStudio

2
- Cửa sồ Source là nơi viết, tạo các mã (code) và lưu trữ các mã để có thể thực hiện các
mã này thông qua lệnh “run”. Cửa sổ Console là nơi người dùng trực tiếp gõ lệnh và
lệnh sẽ thực thi ngay sau khi chấm dứt câu lệnh, tương tự như gõ lệnh trực tiếp trên cửa
sổ R cổ điển. Các chức năng của 2 cửa sổ khác trùng với tên gọi của nó.
- 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 phải luôn luôn làm việc trực tiếp trên bộ số liệu.
- Khác với các phần mềm thống kê khác, cùng một vấn đề nhưng R có thể có những cách
tiếp cận để giải quyết vấn đề khác nhau. Có thể sử dụng các lệnh, các hàm cơ bản của
R (đã có sẵn khi cài đặt chương trình) hoặc sử dụng các package khác nhau mà cần phải
được cài đặt. Ví dụ, để vẽ biều đồ, ngoài các hàm cơ bản đã có sẵn trong R mà không
cần cài đặt thêm như boxplot ( ) để vẽ biểu đồ hộp, hist ( ) để vẽ biểu đồ histogram,
barplot ( ) để vẽ biểu đồ thanh…, người ta có thể dùng package “ggplot2” để cho kết
quả tương tự nhưng với những biểu đồ “bắt mắt” và nhiều tùy chỉnh hơn.
- Chính vì lý do trên, cách tốt nhất và nên làm nhất để giải quyết các vấn đề thống kê còn
phân vân khi sử dụng R là tìm kiếm các giải pháp khác nhau trên môi trường internet
thông qua các search engines (mà phổ biến nhất là google search) bằng ngôn ngữ
tiếng Anh. Điều này tưởng chừng đơn giản nhưng rất hiệu quả và nên được thực hiện
trong quá trình giải quyết vấn đề.
- 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 (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
(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 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ó tham số bên trong 2 dấu ngoặc đơn này. Ví dụ
như hàm ls () dùng để liệt kê các object có trong thư mục làm việc và hàm này không
cần có tham số nào giữa dấu ngoặc. 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à tham số hoặc đố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ử.
- Toán tử bao gồm:

• Toán tử số học: Ví dụ như cộng (+), trừ ( - ), nhân (*), chia (/), lũy thừa (^), căn
bậc 2 (sqrt) v.v…

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

3
• 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 (<=), không bằng (!=) v.v…
- 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:

- 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.
- 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ề và “gọi” ra khi cần sử
dụng. Ví dụ, hàm read.epiinfo được chứa trong package “foreign”, 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 “foreign” vào R bằng
lệnh install.packages ( ), sau đó dùng hàm library ( ) để gọi package “foreign”. Lúc này
mới sử dụng được hàm read.epinfo. Trình tự cụ thể như sau:

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


Tạo một object: Để tạo một object trong R, ngoài dùng dấu = như trong các phần mềm
thống kê khác, người ta dùng ký hiệu “gán” (<-), với phím tắt hay được sử dụng là Alt – (bấm
đồng thời phím Alt và dấu -). Các ví dụ:

4
Nếu object đã được tạo ra trước đó (nhưng vẫn còn hiện diện trong bộ nhớ), thì các thao
tác tiếp theo trên object này sẽ làm xóa đi giá trị trước đó của nó. Như ví dụ trên, nay ta thay
đổi giá trị a thì giá trị cũ sẽ thay đổi:

Xóa object: Dùng hàm rm (‘tên object’).

2.3. Thư mục làm việc (working directory)


Điều quan trọng cần lưu ý khi phân tích với R là cần phải xác định thư mục làm việc
cho R trước khi bắt đầu phân tích.
Để biết hiện tại R đang làm việc ở thư mục nào, sử dụng lệnh 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à 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.
Đặt mặc định thư mục làm việc: Vào biểu tượng RStudio 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” như highlight
màu vàng trong Hình 3.

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

5
2.4. 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:
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:

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


Hàm names (‘tên data frame’)
Hàm names ( ) dùng để liệt kê tên các biến của bộ số liệu. Vì dụ liệt kê các biến của data
frame “hypertension” đã tạo ra ở trên:

6
3.3. 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 hypertension là những bệnh nhân nam (gender = 1),
đặt tên là hypertension.male, từ bộ số liệu hypertension ở trên, sử dụng cú pháp và cho kết quả
như sau:

4. Nhập bộ số liệu thành định dạng R


Có 4 định dạng hay gặp khi thu thập số liệu thô. Đó là định dạng theo excel, SPSS, Stata
và EpiInfo (hoặc EpiData), với các file có đuôi lần lượt là xls (hoặc xlsx), sav, dta và rec. Để
chuyển đổi các file số liệu sang định dạng R trước khi phân tích số liệu, có 2 package hay được
sử dụng cho mục đích này, đó là “tidyverse” và “foreign”. Do đó, điều trước tiên cần làm là
phải cài đặt 1 trong 2 package này vào R tùy thuộc vào người dùng sử dụng package nào.
Chuyển đổi file excel với đuôi xls hoặc xlsx rất hay gặp trong thực tế. Điều lưu ý quan
trọng: trước khi thực hiện chuyển đổi, cần kiểm tra kỹ file excel và điều chỉnh để các cột, các
hàng theo đúng định dạng (format) mong muốn. Ví dụ dạng số, dạng ngày, dạng text v.v…
Sử dụng package “readxl” trong tidyverse với hàm read_excel để chuyển đổi file excel
sang định dạng R. Ví dụ cú pháp cụ thể cho file excel “patient” như sau:

Cũng cú pháp tương tự, sử dụng package “haven” để chuyển đổi các file spss, stata sang
định dạng R với các hàm sau đây (lấy file tên là patient.sav và patient.dta làm ví dụ):
- Chuyển đổi file spss: read_spss (‘patient.sav’)
- Chuyển đổi file stata: read_dta (‘patient.dta’)
Với package “foreign”, các hàm chuyển đổi như sau:
- Chuyển đổi file spss: read.spss (‘patient.sav’, to.data.frame = TRUE)
- Chuyển đổi file stata: read.dta (‘patient.dta’)
- Chuyển đổi file EpiInfo hoặc EpiData: read.epiinfo (‘patient.rec’)

7
5. Thống kê mô tả

5.1. Mô tả bộ số liệu
Một data dạng R sẽ bao gồm tên data đó và các biến số của nó. Ví dụ với data đặt tên là
“patient” các hàm head ( ) sẽ liệt kê 6 quan sát đầu tiên của data patient; hàm names ( ) sẽ liệt
kê tên các biến số:

Như vật, “patient” có 6 biến số, với tên gọi lần lượt như ở trên. Để phân biệt với các
biến số của bộ số liệu khác, khi viết biến số cần kèm theo tên data đi trước biến số và cách nhau
bởi dấu $. Ví dụ, muốn viết biến age của data “patient”, thực hiện như sau: patient$age.
5.1.1. Mô tả bộ số liệu hoặc biến số
Có 3 hàm cơ bản: names ( ), summary ( ), và str ( ).
Hàm names ( ) liệt kê tên các biến số có trong bộ số liệu như đã minh họa ở trên.
Hàm summary ( ) có thể áp dụng cho bộ số liệu (tên data) hoặc cho từng biến số. Hàm
này sẽ cho ra thông tin của tất cả các biến số trong bộ số liệu. Nếu là biến số dạng số sẽ cho
thông tin về giá trị tối đa, tối thiểu, trung bình, trung vị, bách phân vị thứ nhất và thứ ba, các
thông tin về số liệu trống. Ví dụ với bộ số liệu “patient”:

Ví dụ về sử dụng hàm summary cho một biến, ví dụ như biến tuổi:

Hàm str ( ) cho thông tin chi tiết hơn về bộ số liệu hoặc một biến số nào đó (str là viết
tắt của từ structure). Ví dụ về thông tin của bộ số liệu “patient”:
8
Ví dụ như thông tin của biến số age và biến số religion của bộ số liệu “patient”:

5.1.2. Thống kê đo lường độ tập trung và phân tán


Các thống kê này bao gồm tính giá trị trung bình, trung vị, phương sai, độ lệch chuẩn
thông qua các hàm mean ( ), median ( ), var ( ), sd ( ). Cần có thêm tham số na.rm = TRUE để
loại các trường hợp có số liệu trống, nếu không sẽ cho kết quả zero. Các ví dụ với biến số age
của bộ số liệu “patient”:

Hãy so sánh khi không có tham số na.rm:

5.2. Thống kê mô tả ban đầu sử dụng package “summarytools”


Package “summarytools” là một công cụ hữu ích giúp cho nhà phân tích có ngay một
cái nhìn tổng quát về bộ số liệu thông qua 4 hàm (function) liệt kê trong bảng dưới đây.
Chức năng Chi tiết
freq() Bảng tần số, thể hiện số lượng, tỉ lệ, số cộng dồn, và số liệu trống (missing).
ctable() Bảng tổng hợp (cross-tabulation) giữa các cặp biến số phân loại/ rời rạc, thể
hiện hàng, cột, tỉ lệ theo hàng, cột.
descr() Thống kê mô tả đơn biến đối với số liệu dạng số, đồng thời cho biết các đo
lường về độ tập trung và phân tán.
dfSummary() Tóm tắt bộ số liệu (Data frame Summaries), thể hiện thông tin của toàn bộ
các biến số theo tính chất của từng biến số, bao gồm thống kê đơn biến và/
hoặc phân bố tần số, biểu đồ thanh hoặc histogram, số liệu trống và tỉ lệ.
Hàm này rất hữu ích trong việc phát hiện nhanh các bất thường và nhận biết
xu hướng.

9
Chi tiết các tiện ích trong package “summarytools” sẽ được trình báy trong một chuyên
đề riêng. Tài liệu này sẽ chỉ nêu lên những hàm cơ bản giúp nhà phân tích có cái nhìn nhanh về
tính chất và xu hướng của bộ số liệu và các biến số của nó.
5.2.1. Lập bảng tần số với freq ( )
Hàm freq ( ) sẽ cho kết quả các thông tin như kiểu biến số (Type); Tần suất (Freq); Tỉ
lệ % thực tế, tức là không tính các giá trị bị trống (% valid); Tỉ lệ % cộng dồn thực tế (% valid
Cum.); Tổng số (Total); Tỉ lệ % trên tổng số, tức là tính cả các số liệu trống (% Total); và Tỉ lệ
cộng dồn trên tổng số (% Total Cum.).
Hàm freq ( ) có thể sử dụng cho 1 biến số hoặc cho cả bộ số liệu. Ví dụ với data “patient”:

5.2.2. Lập bảng tổng hợp (cross table) với hàm ctable ( )
ctable() tạo ra bảng tổng hợp cho các cặp biến phân loại. Lấy ví dụ với data “patient”,
khi không có yêu cầu tính Chi bình phương, OR hay RR:

Khi muốn có kết quả phân tích Chi bình phương, giá trị tỉ suất chênh (OR) hoặc nguy
cơ tương đối (RR), thêm tùy chọn sau đây vào trong hàm:
- Thêm phân tích Chi bình phương, thêm tùy chọn: chisq = TRUE
- Thêm kết quả tính toán OR, thêm tùy chọn: OR = TRUE
- Thêm kết quả tính toán RR, thêm tùy chọn: RR = TRUE.

10
5.2.3. Thống kê mô tả với hàm descr ( )
Hàm descr( ) cung cấp công cụ để phân tích từng biến số cho ra kết quả các phân tích
thống kê bao gồm trung bình, độ lệch chuẩn, trung vị, các bách phân vị Q1, Q3, IQR, kể cả các
thống kê liên quan đến độ phân tán như skewness, kurtesis. Ví dụ:

Mặc định, hàm này cho nhiều thống kê khác nhau. Tuy nhiên, có thể quy định thông số
thống kê cụ thể nào mong muốn được phân tích thông qua tùy chọn stat = c ( ).
11
5.2.4. Thống kê tóm tắt bộ số liệu với hàm dfSummary ( )
Hàm dfSummary() tạo ra một bảng tóm tắt về các thống kê (Stats/ Values), tần số (Freqs
(% of Valid), biểu đồ (Graph), số quan sát có giá trị (Valid) và số giá trị trống (Missing) của tất
cả các biến số trong bộ số liệu. Đây là công cụ hữu ích cho phép người đọc có cái nhìn tổng
quát về tính chất của từng biến số trong bộ số liệu.
Tuy nhiên, để có thể đọc được bảng này trong Rstudio, cần thêm hàm view để thực thi.
Cụ thể như sau:

12
5.3. Các thống kê phân tích thông dụng
Phần này trình bày các hàm phân tích thống kê hay gặp sử dụng các hàm có sẵn trong
R. Sẽ có các cách khác nhau để thực hiện các phân tích này khi sử dụng các package khác nhau,
đồng thời từng kỹ thuật phân tích sẽ có những yêu cầu, giả định, giải thích kết quả riêng. Các
trình bày dưới đây chỉ mang tính hướng dẫn chung. Các chuyên đề riêng cho từng phân tích
thống kê sẽ được trình bày ở những bài viết khác.
5.3.1. Phân tích Chi bình phương
Ngoài phân tích Chi bình phương sử dụng package “summarytools” như đã nói tại mục
5.2.2, có thể sử dụng hàm chisq.test ( ) để thực hiện kiểm định này, với tham số là table (x,y).
Ví dụ để thực hiện kiểm định Chi bình phương điểm hài lòng (satisfied) của bệnh nhân nam và
nữ trong bộ số liệu “patient”, cú pháp như sau:

Có thể lập bảng trước, sau đó thực hiện kiểm định, theo cách sau:

5.3.2. 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):

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

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ó số
quan sát bằng nhau và so sánh ghép cặp. Tùy chọn paired = TRUE được thêm vào cho trường
hợp này. Lấy từ ví dụ y1 và y2 đã tạo ra trong ví dụ trên:

5.3.3. So sánh trung bình của 3 nhóm trở lên (oneway ANOVA)
Hàm aov ( ) sẽ cho kết quả phân tích ANOVA đơn giản. Ví dụ, để tìm hiểu sự khác
nhau giữa kích thước trung bình (size) giữa các loài khác nhau (pop) với nhau, thực hiện trên
R với tuần tự tạo nhóm và phân tích ANOVA như sau:

14
5.3.4. 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, data = m)
Trong đó: y là biến phụ thuộc và x là biến độc lập, m là tên data.
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),
áp dụng hàm ở trên với y là satisfied, x là age, m là patient, thực hiện trong R như sau:

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:

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.

15
Hồi quy tuyến tính đa biến:
Hàm lm (y ~ x1 + x2 + x3 +…+ xn, data = m)
Trong đó: y là biến phụ thuộc, x1, x2, x3,…, xn là các biến độc lập định lượng, m là tên
data. Trường hợp có biến độc lập là biến định tính (phân loại) thì sử dụng factor ( ) cho các biến
này.
Ví dụ phân tích hồi quy tuyến tính đa biến trên bộ số liệu patient với biến phụ thuộc y
là điểm số hài lòng (satisfied), x1 là tuổi (age), x2 là biến phân loại giới (gender) (phải sử dụng
factor ( ) cho biến này), với bộ số liệu m = patient, cú pháp cụ thể và kết quả như sau:

5.3.5. 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, data = m)
summary (fit): Hiển thị kết quả
exp (coef (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ư
Ví dụ, phân tích có hài lòng hay không (y = satisfied2, với 1 là hài lòng và 0 là không
hài lòng) đối với giới (x = gender), phân tích hồi quy logistic như sau:

16
Để tính OR và 95% độ tin cậy của OR, thực hiện cú pháp:

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…). Ngoài các hàm vẽ
biểu đồ tích hợp sẵn trong R, nhiều package khác đã được xây dựng và cho kết quả rất đáng
chú ý như ggplot2, Lattice, Plotly v.v… Các bài viết chuyên đề sẽ được trình bày để minh họa
cho các gói này.
Tài liệu này hướng dẫn vẽ 3 biểu đồ cơ bản sử dụng các công cụ vẽ biều đồ đã tích hợp
sẵn trong R mà không phải cài đặt thêm. Package hiện nay đang được sử dụng rất phổ biến
trong vẽ biểu đồ là ggplot2 sẽ được hướng dẫn trong một tài liệu khác.
Chúng ta sẽ sử dụng một data file tên là hsb2 để minh họa cho các biểu đồ sẽ trình bày
dưới đây. Cấu trúc và giá trị của file hsb2 như sau:

17
File hsb2 thu thập số liệu của 200 học sinh, bao gồm các biến số 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
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
write, biến dạng số, là điểm môn viết
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. 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 đồ.
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:

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


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

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:

19
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 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:

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

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: beside = TRUE. Dưới đây là biểu đồ dạng stacked theo các tùy chọn
tương tự như biểu đồ trên.

20
Nếu muốn các thanh nằm cạnh nhau, sử dụng tùy chọn beside = TRUE như sau:

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


Hàm chung là: boxplot (x ~ g), trong đó x là biến số dạng số, g 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.

21
6.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ụ:

22
23
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/
https://bookdown.org/steve_midway/DAR/

24

You might also like