Tải bản đầy đủ (.pdf) (252 trang)

Luận văn tốt nghiệp đại học phân tích số liệu thống kê với ngôn ngữ r

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.66 MB, 252 trang )

TRƯỜNG ĐẠI HỌC CẦN THƠ
KHOA KHOA HỌC TỰ NHIÊN
BỘ MÔN TOÁN

LUẬN VĂN TỐT NGHIỆP ĐẠI HỌC
Chủ đề
PHÂN TÍCH SỐ LIỆU THỐNG KÊ
VỚI NGÔN NGỮ R

Giáo viên hướng dẫn
NGUYỄN THỊ HỒNG DÂN
BỘ MÔN TOÁN – Khoa KHTN

Sinh viên thực hiện
HỒNG VIỆT MINH
TOÁN ỨNG DỤNG – K38
MSSV: B1203839

Cần Thơ, tháng 12 năm 2015


PHÂN TÍCH SỐ LIỆU THỐNG KÊ VỚI NGÔN NGỮ R
LỜI CẢM ƠN
---~~~--Đề tài được nhận vào ngày 6 tháng 5 năm 2015, sau 7 tháng thực hiện với sự
tận tâm hướng dẫn của Cô Nguyễn Thị Hồng Dân, cùng với sự giúp đỡ của bạn bè
tôi đã hoàn thành luận văn này. Nhân đây tôi xin được gửi lời cảm ơn đến gia đình,
Thầy Cô và bạn bè.
Trước hết, con xin gửi lời cảm ơn đến Cha và Mẹ. Người luôn quan tâm nhắc
nhở con trong suốt quá trình đi học. Là một điểm tựa vững chắc cho con, là chốn
bình yên nhất cho con quay về mỗi khi cảm thấy mỏi mệt.
Em xin cảm ơn Cô Nguyễn Thị Hồng Dân, người đã định hướng cho em ngay


từ khi mới nhận đề tài luận văn. Và trong suốt quá trình thực hiện luận văn, Cô luôn
nhiệt tình hướng dẫn và không ngần ngại sửa lỗi cho em, từng dấu câu từng chữ viết
sai chính tả cho đến cách trình bày, sắp ý của mỗi ví dụ, trong từng nội dung.
Em xin cảm ơn Cô Phạm Bích Như và Cô Lê Thị Kiều Oanh. Hai cố vấn học
tập của em trong suốt 4 năm Đại học. Người luôn quan tâm và giúp đỡ em trong
suốt quá trình học Đại học.
Em xin chân thành cảm ơn quý Thầy, quý Cô thuộc Khoa Khoa học Tự nhiên
trường Đại học Cần Thơ đã truyền dạy kiến thức, kinh nghiệm, kỹ năng cho em
trong suốt những năm học qua.
Tôi xin cảm ơn các bạn Trần Thị Ngọc Hân, Đoàn Hải Nghi, Mai Thị Hồng
Diễm, Trần Anh Đào, Lê Thị Huỳnh Mai và hai em Tiêu Ngọc Quí, Nguyễn Thị
Diễm My. Cảm ơn các bạn vì luôn ủng hộ và giúp đỡ cho tôi trong quá trình làm
luận văn. Đặc biệt xin cảm ơn bạn Châu Thị Minh Thư, cảm ơn Thư vì đã giúp
Minh bước cuối cùng để hoàn chỉnh luận văn của mình.
Xin gửi lời cám ơn đến tất cả các bạn sinh viên thuộc hai lớp Toán ứng dụng
khóa 38 Khoa Khoa học Tự nhiên, trường Đại học Cần Thơ. Những người bạn luôn
cùng tôi vượt qua những khó, những buồn vui trong quảng đời sinh viên của mình.
Cuối cùng, tôi xin gửi lời cảm ơn đến các bạn nằm trong Ban cán sự và Ban
chấp hành lớp. Cảm ơn các bạn vì tất cả những gì các bạn đã làm cho tập thể lớp.
Mặc dù, đã cố gắng hoàn thiện luận văn bằng tất cả năng lực của bản thân và
sự giúp đỡ của bạn bè cũng như sự hướng dẫn tận tâm của người hướng dẫn, tuy
nhiên luận văn không thể tránh khỏi những thiếu sót, rất mong nhận được những
đóng góp quý báu của quý Thầy Cô và các bạn. Mọi sự trao đổi xin bạn đọc vui
lòng gửi mail về địa chỉ
Cần Thơ, ngày 6 tháng 12 năm 2015
Hồng Việt Minh

2



PHÂN TÍCH SỐ LIỆU THỐNG KÊ VỚI NGÔN NGỮ R
MỤC LỤC
LỜI CẢM ƠN ........................................................................................................... 2
MỤC LỤC ................................................................................................................ 3
DANH MỤC BẢNG ................................................................................................. 5
PHẦN GIỚI THIỆU .................................................................................................. 6
PHẦN NỘI DUNG ................................................................................................... 8
CHƯƠNG 1: NGÔN NGỮ R VÀ CÁC THAO TÁC CƠ BẢN................................. 8
1.1. Phần mềm R ....................................................................................................... 8
1.2. Package R ........................................................................................................... 9
1.3. Môi trường làm việc ......................................................................................... 14
1.4. Tính toán đơn giản ............................................................................................ 16
1.5. Các đối tượng cơ bản ........................................................................................ 17
1.6. Hàm .................................................................................................................. 20
1.7. Nhập dữ liệu ..................................................................................................... 22
1.8. Biên tập dữ liệu ................................................................................................ 24
1.9. Lớp của các đối tượng trong R .......................................................................... 29
CHƯƠNG 2: VẼ BIỂU ĐỒ VỚI NGÔN NGỮ R ................................................... 30
2.1. Một số thao tác cơ bản ...................................................................................... 30
2.2. Biểu đồ cho biến số rời rạc ............................................................................... 33
2.3. Biểu đồ cho biến số liên tục .............................................................................. 37
CHƯƠNG 3: PHÂN TÍCH SỐ LIỆU THỐNG KÊ VỚI NGÔN NGỮ R ................ 43
3.1. Tính toán xác suất và mô phỏng........................................................................ 43
3.2. Thống kê mô tả ................................................................................................. 46
3.3. Kiểm định giả thuyết thống kê .......................................................................... 52
3.4. Hệ số tương quan .............................................................................................. 62
3.5. Mô hình hồi qui ................................................................................................ 65
3.6. Tỷ số nguy cơ RR (risk ration), tỷ số OR (Odds ratio) ...................................... 91
3.7. Mô hình hồi qui logistic .................................................................................... 93
3.8. Phân tích sự kiện............................................................................................. 105

3.9. Phân tích phương sai....................................................................................... 112
3.10. Chuỗi thời gian trong R ................................................................................ 131
3.11. Dự báo ngắn cho chuỗi thời gian bằng phương pháp san bằng mũ ................ 141
3.12. Dự báo chuỗi thời gian bằng mô hình Box - Jenkins ..................................... 146
3.13. Mô hình Box – Jenkins với biến giả (ARMAX, ARIMAX và SARIMAX) ... 157
3.14. Tìm mô hình Box - Jenkins tối ưu với hàm auto.arima(x, ...) ........................ 157
3.15. Dự báo chuỗi thời gian từ số liệu làm trơn .................................................... 157
3.14. Dự báo chuỗi thời gian từ số liệu mờ ............................................................ 160
3.15. Dự báo chuỗi thời gian bằng mô hình chuỗi thời gian mờ
Abbasov Mamedova ............................................................................................................. 168
3.16. Mô hình ARMA - ARCH/GARCH ............................................................... 172
3.17. Chuỗi thời gian nhiều chiều .......................................................................... 180
KẾT LUẬN ........................................................................................................... 207
TÀI LIỆU THAM KHẢO ..................................................................................... 208
3


PHÂN TÍCH SỐ LIỆU THỐNG KÊ VỚI NGÔN NGỮ R
Phụ lục 1: Một vài bộ số liệu đã sử dụng trong luận văn ........................................ 209
Phụ lục 2: Một số package hữu ít trên R ................................................................ 215
Phụ lục 3: Tạo một package R cho Windows ......................................................... 217
Phụ lục 4: Vài nét về package AnalyzeTS ............................................................. 230

\

4


PHÂN TÍCH SỐ LIỆU THỐNG KÊ VỚI NGÔN NGỮ R
DANH MỤC BẢNG

Bảng 1.1. Một số kí hiệu thường dùng trong R .............................................. 14
Bảng 1.2. Một số cú pháp cơ bản .................................................................. 16
Bảng 1.3. Một số hàm cơ bản ........................................................................ 17
Bảng 2.1. Tham số thông dụng khi vẽ biểu đồ ............................................... 31
Bảng 2.2. Giá trị pch thường dùng để vẽ đồ thị ............................................. 31
Bảng 2.4. Tham số thông dụng của biểu đồ cột ............................................. 34
Bảng 2.5. Tham số thông dụng của biểu đồ tròn ............................................ 36
Bảng 3.1. Một số phép toán xác suất ............................................................. 43
Bảng 3.2. Một số hàm phân phối xác suất của đại lượng ngẫu nhiên ............. 43
Bảng 3.3: Một số hàm thống kê mô tả ........................................................... 47
Bảng 3.4: Các tham số của hàm Descriptives và hàm Frequencies ................ 47
Bảng 3.4: Một số hàm thống kê cơ bản về chuỗi thời gian .......................... 132
Bảng 3.5: Ý nghĩa các tham số của hàm ur.df.............................................. 135
Bảng 3.6: Một vài tham số thông dụng của hàm HoltWinters ...................... 141
Bảng 3.7: Ý nghĩa tham số order và seas của hàm PrintAIC ........................ 147
Bảng 3.8: Các hàm làm trơn số liệu ............................................................. 157
Bảng 3.9: Các tham số của hàm fuzzy.ts1 ................................................... 160
Bảng 3.10: Các tham số của hàm fuzzy.ts2 ................................................. 169
Bảng 3.11: Các hàm sử dụng để phân tích chuỗi thời gian nhiều chiều........ 180

5


PHÂN TÍCH SỐ LIỆU THỐNG KÊ VỚI NGÔN NGỮ R

PHẦN GIỚI THIỆU

1. Lý do chọn đề tài
Kể từ khi những con số chưa ra đời, con người đã biết đến thống kê. Người
tộc trưởng thống kê số lượng người trong tộc. Con người thống kê số thú vật nuôi.

Quan sát bầu trời và hoạt động của loài vật để dự đoán thời tiết,… Cùng với sự
phát triển của xã hội, thống kê đã dần trở thành một lĩnh vực không thể thiếu trong
xã hội. Nó là cơ sở quan trọng để các nguyên thủ quốc gia đưa ra đường lối phát
triển đất nước; Một cái nhìn khái quát cho nhà quản lý; Một điều kiện tiên quyết
cho tất cả các công trình nghiên cứu. Tóm lại mọi lĩnh vực của đời sống quanh
chúng ta đều sử dụng đến thống kê.
Tuy nhiên sẽ không thể thực hiện thống kê nếu thiếu một chiếc máy tính và
một phần mềm chuyên dụng. Trên thị trường hiện có rất nhiều phần mềm thống kê
với những ưu điểm riêng của nó. Hiện nay các nhà thống kê trên thế giới đang chú ý
và chuyển dần sang sử dụng phần mềm R. Một phần mềm hoàn toàn miễn phí với
một khả năng xử lý số liệu rất mạnh. Đặc biệt là chức năng thiết kế biểu đồ tuyệt
vời của nó.
Có thể nói R là một phần mềm thống kê vừa rộng lại vừa sâu, rộng là nó có
thể thống kê trên mọi lĩnh vực từ những phân tích phức tạp trong y học đến những
sự phân tích khá nhạy cảm trong kinh tế. Sâu vì tùy vào hiểu biết của người dùng về
nó, mà có thể tiến hành những phân tích đơn giản như thống kê mô tả, hồi qui cho
đến sâu hơn cho từng vấn đề chuyên biệt. Với hơn 7600 package (và con số này
luôn tăng hằng ngày) do các nhà thống kê trên thế giới xây dựng, hầu như không
một khía cạnh thống kê nào mà R không hỗ trợ. Có thể nói rằng, so với các phần
mềm thống kê khác R chỉ bằng đến hơn chứ không hề thua kém.
Tuy nhiên ở Việt Nam hiện nay, R vẫn còn khá xa lạ với những bạn sinh viên
chuyên ngành thống kê và với những người đang làm công tác thống kê. Bởi chưa
có nhiều sách tiếng Việt viết về R. Với mong muốn được góp ít công sức và hiểu
biết nhỏ nhoi của mình để giới thiệu phần mềm thống kê tuyệt vời này đến với mọi
người, tôi đã chọn đề tài “Phân tích số liệu thống kê với ngôn ngữ R” làm đề tài
luận văn tốt nghiệp Đại học của mình.
2. Mục tiêu nghiên cứu
Tìm hiểu về các hỗ trợ phân tích thống kê của ngôn ngữ R từ cơ bản đến
nâng cao. Từ đó viết thành một quyển sách hướng dẫn người dùng (người mới bất
đầu) sử dụng ngôn ngữ R vào các phân tích thống kê thông dụng để đạt kết quả tốt

nhất.

6


PHÂN TÍCH SỐ LIỆU THỐNG KÊ VỚI NGÔN NGỮ R
3. Đối tượng và phạm vi nghiên cứu
3.1. Đối tượng nghiên cứu
Ngôn ngữ R và một số package hỗ trợ trong các phân tích chuyên sâu.
3.2. Phạm vi nghiên cứu
Các bộ số liệu được sử dụng phân tích trong luận văn được thu từ các nguồn
sau: tự thu từ thực tế, trên internet, bạn bè và các bộ số liệu từ các package của R.
4. Phương pháp nghiên cứu
Đọc sách tham khảo về R trong phân tích số liệu thống kê.
Xem hướng dẫn phân tích qua các video trên youtube.
Thực hiện phân tích trên ngôn ngữ R.
Thảo luận nhóm.
Tổng hợp, phân tích kết quả và viết báo cáo.
5. Nội dung nghiên cứu
Luận văn gồm có 3 phần: phần giới thiệu, phần nội dung và phần kết luận.
Trong đó phần nội dung gồm 3 chương:
Chương 1: NGÔN NGỮ R VÀ CÁC THAO TÁC CƠ BẢN
Chương này giới thiệu về ngôn ngữ R, các tính toán cơ bản và một số thao tác
xử lý số liệu trước khi phân tích thống kê.
Chương 2: VẼ BIỂU ĐỒ VỚI NGÔN NGỮ R
Chương này giới thiệu về các hàm cơ bản cùng một số tùy chỉnh để vẽ một
biểu đồ với ngôn ngữ R.
Chương 3: PHÂN TÍCH SỐ LIỆU THỐNG KÊ VỚI NGÔN NGỮ R
Đây là chương trọng tâm của luận văn. Chương này giới thiệu các hàm cơ bản
và các hàm phức tạp từ các package dùng để phân tích số liệu thống kê. Với nhiều

phép xử lý số liệu khác nhau, có thể gom lại thành 6 chủ đề chính là: tính toán xác
suất và mô phỏng, thống kê mô tả, kiểm định giả thuyết thống kê, các mô hình hồi
qui, phân tích phương sai và phân tích chuỗi thời gian.

7


PHÂN TÍCH SỐ LIỆU THỐNG KÊ VỚI NGÔN NGỮ R
PHẦN NỘI DUNG
CHƯƠNG 1: NGÔN NGỮ R VÀ CÁC THAO TÁC CƠ BẢN
1.1. Phần mềm R
1.1.1. Download phần mềm R
Theo 5 bước sau:
Bước 1: Vào trang:
/>Bước 2: Dưới “Download and Install R”, nhấp chuột vào liên kết
“Download R for Windows”
Bước 3: Dưới “Subdirectories”, nhấp chuột vào liên kết “base”.
Bước 4: Trên trang kế tiếp, bạn sẽ thấy một đường liên kết có nội dung
“Download R 3.2.0 for Windows”
(hoặc R x.x.x, x.x.x cho biết phiên bản của R, ví dụ. R 3.1.2). Nhấp chuột vào liên
kết này.
Bước 5: Bạn có thể sẽ được hỏi rằng: bạn muốn “save” hoặc “run” một file
“R-3.2.0-win”. Chọn “save” và save file đó vào máy tính của bạn. Một icon
sẽ xuất hiện nơi bạn save file.
1.1.2. Cài đặt R trên máy tính cho hệ điều hành Windows
Theo 7 bước sau:
Bước 1: Nhấp đúp chuột vào icon

để chạy file cài đặt.


Bước 2: Bạn sẽ được yêu cầu chọn một ngôn ngữ để sử dụng trong suốt quá
trình cài đặt. Chọn English.
Bước 3: Một cửa sổ hiện ra và cho biết “R Setup Wizard” sẽ cài đặt R trên
máy tính của bạn. Nhấp vào “Next” để tiếp tục hoặc “Cancel” để thoát khỏi cài đặt.
Bước 4: Cửa sổ kế tiếp cho bạn thông tin về phần mềm R mà bạn đang cài đặt.
Nhấp “Next” một lần nữa.
Bước 5: Cửa sổ kế tiếp cho phép bạn chọn một thư mục để lưu trữ các file
chương trình của R. Mặc định nó sẽ lưu trên thư mục “C:\Program Files\R\R-3.2.0”
trên máy tính của bạn. Nhấp vào “Next” để tiếp tục, hoặc nhấp vào “Browse” để
chọn một thư mục khác (sau đó nhấp vào Next).
Bước 6: Trong cửa sổ kế tiếp, bạn có thể chọn một phiên bản (64 bit hoặc 32
bit) mà mình muốn cài đặt. Sau đó nhấp vào “Next” một lần nữa. Kế tiếp các cửa sổ
khác sẽ lần lượt hiện lên, bạn chỉ cần nhấn vào “Next” mà không cần chọn gì cả.
8


PHÂN TÍCH SỐ LIỆU THỐNG KÊ VỚI NGÔN NGỮ R
Bước 7: R sẽ được cài đặt theo đúng như những gì bạn đã chọn ở trên. Quá
trình cài đặt có thể sẽ mất vài phút. Khi hoàn thành, bạn sẽ thấy một cửa sổ
“Completing the R for Windows Setup Wizard”, nhấp vào “Finish” để kết thúc việc
cài đặt.
Sau khi hoàn tất việc cài đặt, một icon sẽ xuất hiện trên desktop của máy tính.

1.2. Package R
1.2.1. Download một package
Bạn có thể tải tất cả các package (miễn phí) về máy tính của mình từ trang chủ
của R theo 6 bước sau:
Bước 1: Vào trang: cran.r-project.org
Bước 2: Nhấp vào thẻ “Packages” nằm bên trái của mục lục trang wed.
Bước 3: Nhấp tiếp vào liên kết “Table of available packages, sorted by date of

publication” để liệt kê các packages theo dạng bảng.
Bước 4: Nhấp vào packeges bạn muốn tải về.
Bước 5: Trên trang kế tiếp, trên dòng “Windows binaries”, nhấp vào liên kết
ngay phía sau mục “r-release” để tải một file nén về máy.
Bước 6: Chọn một thư mục để lưu file nén ấy.
1.2.2. Cài đặt một package vào R
Sau khi tải package về máy tính của bạn, bạn cần phải cài nó vào R để sử dụng
theo 4 bước sau:
Bước 1: Khởi động R.
Bước 2: Chọn menu “Packages” trên thanh menu của R.
Bước 3: Chọn thẻ “Install package(s) from local zip files…”.
Bước 4: Một cửa sổ hiện ra, bạn chọn file nén đã tải về ở trên và nhấp vào
“Open”.
Sau khi thực hiện xong 4 bước trên, một package sẽ được cài đặt vào máy tính
của bạn.
Ví dụ: Tải và cài đặt package BMA.
Vào trang: cran.r-project.org

9


PHÂN TÍCH SỐ LIỆU THỐNG KÊ VỚI NGÔN NGỮ R

Click

Click

10



PHÂN TÍCH SỐ LIỆU THỐNG KÊ VỚI NGÔN NGỮ R

Ấn Ctrl+f để mở
thanh tìm kiếm.
Nhập vào BMA và
ấn phím enter

Click

11


PHÂN TÍCH SỐ LIỆU THỐNG KÊ VỚI NGÔN NGỮ R

Nhấp vào để
tải Package

Tương tự chúng lần lượt tải về máy 5 package sau:
Deoptim; IDM; inline; leaps; robustbase
Vì package “BMA” liên kết với những packages ấy.
Sau khi tải về máy tính đầy đủ các package, chúng ta vào R và thao tác
như sau:

Click

12


PHÂN TÍCH SỐ LIỆU THỐNG KÊ VỚI NGÔN NGỮ R


Click vào để chọn đường
dẫn tới các file *.zip.

Bạn có thể chọn một lúc nhiều
file, click Open và chờ R xử lý.

Sau khi thực hiện xong các thao tác trên, package BMA sẽ được cài vào R.
1.2.3. Cài đặt trực tiếp một package từ internet.
Nếu máy tính đang được kết nối với internet, chúng ta có thể trực tiếp cài đặt
một package mà không cần phải tải package về máy tính.
Bước 1: Khởi động R.
Bước 2: Chọn menu “Packages” trên thanh menu của R.
Bước 3: Chọn thẻ “Install package(s)…”.
Bước 4: Một hộp thoại xuất hiện. Chọn quốc gia gần nhất và nhấp OK.
Bước 5: Một hộp thoại khác xuất hiện. Chọn tên package cần cài đặt vào
nhấp OK.
Sau khi thực hiện xong 5 bước trên, R sẽ tự động cài đặt package chúng ta
chọn và những package liên kết của nó vào R.
Chú ý: Nếu biết được chính xác tên package bạn cần cài đặt, bạn có thể sử
dụng hàm install.packages( ) để cài đặt. Ví dụ bạn cần cài package “MASS”, khi
máy đang kết nối internet bạn chỉ cần gõ install.packages(“MASS”).
1.2.4. Làm việc với package
Sau khi cài đặt một package vào R, để sử dụng nó, chúng ta gọi nó vào môi
trường làm việc của R bằng hàm library( ).
Khi không muốn làm việc với nó nữa, chúng ta dùng hàm detach( ).
13


PHÂN TÍCH SỐ LIỆU THỐNG KÊ VỚI NGÔN NGỮ R
Vì một lý do gì đó, chúng ta muốn gỡ bỏ nó khỏi R, hàm remove.packages( )

có thể giúp chúng ta thực hiện việc này.
1.3. Môi trường làm việc
1.3.1. Văn phạm ngôn ngữ R
Văn phạm chung của R:
> lệnh (command)
> hàm (function)

R là một ngôn ngữ đối tượng (object oriented language). Điều này có nghĩa là
dữ liệu trong R được chứa trong object. Định hướng này cũng có vài ảnh hưởng đến
cách viết của R. Chẳng hạn như bạn muốn viết “x bằng 5”, bạn phải viết “x==5”
thay vì viết “x=5”.
Đối với R, “x=5” tương đương với “x<-5” (cách viết “<-“ thường được dùng
hơn cách viết “=”)
Ví dụ: Ta có câu lệnh sau:
> reg<-lm(y~x1+x2+x3)

Trong câu lệnh trên, reg là một object, còn lm là một hàm, và y~x1+x2+x3 là
các tham số của hàm. Ký tự “~” là cho R biết y là một hàm của các biến x1, x2 và
x3. Kết quả phân tích sẽ được chứa trong object reg.
Ghi chú trong R:
Với R tất cả các câu chữ hay lệnh viết sau kí hệu # điều không có hiệu ứng,
nên người ta thường dùng nó để ghi chú.
Ví dụ:
> a<-3 #Gán 3 vào object a
> b=6 #Gán 6 vào object b
> a+b #Cộng giá trị của hai object a và b, và có kết quả:
[1] 9

Bảng 1.1. Một số kí hiệu thường dùng trong R
Kí hiệu

==
!=
<
>
<=

Ví dụ
x==5
x != 5
xx>y
z <= 7

x bằng 5
x không bằng 5
x nhỏ hơn y
x lớn hơn y
z nhỏ hơn hoặc bằng 7

>=

p >= 1

p lớn hơn hoặc bằng 1

&

a&b

a và b (AND)


a|b

a hoặc b (OR)

!a

Không là a (NOT)

|
!

Ý nghĩa

14


PHÂN TÍCH SỐ LIỆU THỐNG KÊ VỚI NGÔN NGỮ R
Cách đặt tên trong R:
Đặt tên một đối tượng (object) hay một biến số (variable) trong R khá linh
hoạt, vì R không có nhiều giới hạn như các phần mềm khác. Tên một object phải
được viết liền nhau (tức không được viết cách rời bằng một khoảng trắng). R cũng
phân biệt chữ viết thường và chữ viết hoa.
Ví dụ:
> ab<-2
> a b<-2
Error: unexpected symbol in "a b"
> Ab<-3
> ab+Ab
[1] 5


Một vài điều cần lưu ý khi đặt tên trong R
Không nên đặt tên một đối tượng hay một biến bằng ký tự “-“ hoặc “_”, như ab hay a_b.
Không nên đặt tên một object giống như một biến số trong một dữ liệu. Giả sử
chúng ta có một data frame (dữ liệu hay dataset) với biến số nhietdo trong đó, thì
không nên có một object trùng tên nhietdo, tức là không viết: nhietdo<-nhietdo.
Tuy nhiên, nếu data frame có tên là solieu thì chúng ta có thể đề cập đến biến số
nhietdo với một kí tự $ như sau: solieu$nhietdo (tức là biến số nhietdo trong
data.frame solieu) và trong trường hợp đó nhietdo<-solieu$nhietdo có thể chấp
nhận được.
1.3.2. Cửa sổ R Console
Là nơi giao tiếp giữa người dùng và R, các công việc sẽ được nhập trực tiếp
vào cửa sổ này sau dấu mời lệnh “>” và cửa sổ này cũng là nơi hiển thị kết quả
phân tích.
Ví dụ:
> rain <-scan(" />Read 100 items
> summary(rain)
Min. 1st Qu. Median Mean 3rd Qu. Max.
16.93
22.2
23.87 24.82
27.51 38.1

1.3.3. Script file
Trong cửa sổ R Consonle, các câu lệnh sẽ được người dùng nhập trực tiếp vào
sau dấu “>”. Tuy nhiên, điều đó không thuận lợi khi bạn cần viết một lúc nhiều lệnh
hoặc sửa đổi những câu lệnh đã viết ở trên. R cung cấp một giải pháp cho vấn đề
này là script file.
Script file có thể hiểu đơn giản là một vùng soạn thảo câu lệnh, sau đó bạn chỉ
việc quét khối các câu lệnh muốn chạy và ấn tổ hợp phím Ctrl+R, các câu lệnh sẽ

được chuyển sang cửa sổ Consonle và thực thi như bạn nhập trực tiếp vào.
Để mở một script file, trên thanh menu bạn chọn File/New script.
15


PHÂN TÍCH SỐ LIỆU THỐNG KÊ VỚI NGÔN NGỮ R
Ví dụ:
Soạn lệnh trong script file:
id<-c(1:10)
y<-c(3,6,8,6,9,4,6,1,5,7)
x1<-c(5,8,9,5,3,4,6,7,4,3)
x2<-c(6,6,3,2,5,8,0,3,6,8)
data<-data.frame(id,y,x1,x2)
data

Kết quả trong cửa sổ R Consonle sau khi chạy:
> id<-c(1:10)
> y<-c(3,6,8,6,9,4,6,1,5,7)
> x1<-c(5,8,9,5,3,4,6,7,4,3)
> x2<-c(6,6,3,2,5,8,0,3,6,8)
> data<-data.frame(id,y,x1,x2)
> data
id y x1 x2
1 1 3 5 6
2 2 6 8 6
3 3 8 9 3


Bấm tổ hợp phím Ctrl+S hoặc chọn lệnh File/Save trên thanh menu để save
một script file.

1.4. Tính toán đơn giản
Bạn có thể dùng R cho các phép toán sơ cấp như một chiếc máy tính thông
minh, một số thao tác đơn giản được tóm lược trong 2 bảng sau:
Bảng 1.2. Một số cú pháp cơ bản
Công việc
a+b
a–b
a.b
a.b.c
(a + b).c
a / b , b o
div(a/b)
b a ,b>0

Cú pháp
a+b
a-b
a*b
a*b*c
(a + b)*c
a/b
a%/%b
b^a

Ví dụ
5+7
5-7
5*7
1*2*8
(1 + 2)*3

5/7
10%/%3
5^7

16

Kết quả
12
-2
35
16
9
0.71428
3
78125


PHÂN TÍCH SỐ LIỆU THỐNG KÊ VỚI NGÔN NGỮ R

Bảng 1.3. Một số hàm cơ bản
Hàm
pi
sin 1 ( x)
ln(x)
log10 ( x)
ex
a

a
n


a

Cấu trúc
pi
asin(x)

Ví dụ
Kết quả
pi
3.141593
asin(sqrt(2)/2) 0.7853982

log(x)
log10(x)
exp(x)
abs(a)

log(21)
log(25)
exp(2)
abs(-8)

3.044522
3.218876
7.389056
8

sqrt(a)
a^(1/n)


sqrt(16)
8^(1/3)

4
2

1.5. Các đối tượng cơ bản
1.5.1. Vector
a) Tạo một vector
Để tạo một vector, ta có thể dùng hàm c( ) để đưa một chuỗi số (hoặc một kiểu
logic hay chuỗi ký tự) vào một object.
Ví dụ:
> a1<-c(3,5,7,8,9,5,8)
> a1
[1] 3 5 7 8 9 5 8

b) Truy xuất các phần tử của vector
Có 3 cách thông dụng để truy xuất các phần tử của một vector.
Truy xuất bằng chỉ số phần tử:
> x<-c(11,12,43,23,45,78)
> x[c(1,2,3)]
[1] 11 12 43

Sử dụng ký tự “-“ để loại bỏ những phần tử ở vị trí chỉ định:
> y<-c("lan", "diep", "hue", "cuc")
> y[-1]
[1] "diep" "hue" "cuc"

Truy xuất có điều kiện:

> z<-c(3,5,7,8,3,2,44,21,12,32,4)
> z[z>8]
[1] 44 21 12 32

17


PHÂN TÍCH SỐ LIỆU THỐNG KÊ VỚI NGÔN NGỮ R
c) Tạo dãy số bằng hàm seq, rep và gl
R có thể tạo ra những dãy số rất tiện cho việc mô phỏng. Những hàm thường
được sử dụng để làm việc này là seq( ), rep( ) và gl( ).
Hàm seq( ):
Công thức chung là seq(from, to, by= ) hay seq(from, to, length=)
> #Tạo ra một vector số từ 4 đến 10 với bước nhảy là 0.25
> seq(4,10,0.25)
[1] 4.00 4.25 4.50 4.75 5.00 5.25 5.50 5.75 6.00 6.25 6.50 6.75
[13] 7.00 7.25 7.50 7.75 8.00 8.25 8.50 8.75 9.00 9.25 9.50 9.75
[25] 10.00

Hàm rep( ):
Công thức là rep(x,times), trong đó x là một biến số, times là số lần lặp.
Tạo một dãy số từ 1 đến 5 lặp lại 4 lần
> rep(1:5,4)
[1] 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5

Hàm gl( ):
Hàm gl( ) dùng để tạo ra biến thứ bậc, tức biến không để tính toán mà có thể
đếm. Công thức chung của hàm gl( ) là gl(n, k, length = n*k, labels = 1:n).
> #Tạo ra biến gồm bậc 1 và 2; mỗi bậc được lặp lại 5 lần
> gl(2,5)

[1] 1 1 1 1 1 2 2 2 2 2
Levels: 1 2
> #Cho thêm ký hiệu:
> gl(2,3,label=c("do","xanh"))
[1] do do do xanh xanh xanh
Levels: do xanh

1.5.2. Factor
Câu lệnh factor để chuyển một dữ liệu thành một yếu tố.
> #Tạo một vector gioitinh gồm 13 "nam" và 12 "nu" .
> gioitinh<-c(rep("nam",13),rep("nu",12))
> # Biến đổi thành một factor.
> gioitinh1<-factor(gioitinh)
> gioitinh1
[1] nam nam nam nam nam nam nam nam nam nam nam
[12] nam nam nu nu nu nu nu nu nu nu nu
[23] nu nu nu
Levels: nam nu

Đối tượng gioitinh1 là một factor với hai cấp độ là nam và nu.

18


PHÂN TÍCH SỐ LIỆU THỐNG KÊ VỚI NGÔN NGỮ R
Chú ý: Các phần tử của một factor chỉ mang tính phân loại, không có ý nghĩa
toán học dù nó là con số đi nữa. Có nghĩa là ta không thể tính toán cho nó như đối
với những con số bình thường.
1.5.3. Data frame
a) Tạo một data frame

Có nhiều cách để tạo một data frame, đơn giản nhất là dùng hàm data.frame( ),
có công dụng tổ hợp các vector có cùng số phần tử lại thành một data frame, tên các
vector sẽ thành tiêu đề các cột.
Ví dụ:
> id<-c(1:10)
> y<-c(3,6,8,6,9,4,6,1,5,7)
> x1<-c(5,8,9,5,3,4,6,7,4,3)
> x2<-c(6,6,3,2,5,8,0,3,6,8)
> data<-data.frame(id,y,x1,x2)
> data
id y x1 x2
1 1 3 5 6
2 2 6 8 6


b) Truy xuất các cột của data frame
Với data frame data ở ví dụ trên, ta có thể truy xuất các cột của nó theo một số
cách sau:
> data[1:3]
id y x1
1 1 3 5
2 2 6 8

> data[,2]#truy xuất cột 2 theo dạng một vector
[1] 3 6 8 6 9 4 6 1 5 7
> #Truy xuất theo tiêu đề cột:
> data$y
[1] 3 6 8 6 9 4 6 1 5 7

1.5.4. Danh sách

a) Tạo một danh sách
Trong R, hàm list( ) dùng để tạo một danh sách.
Ví dụ:
> require(graphics)
> # tạo một danh sách gán vào đối tượng pts
> pts <- list(x = cars[,1], y = cars[,2])

19


PHÂN TÍCH SỐ LIỆU THỐNG KÊ VỚI NGÔN NGỮ R
> pts
$x
[1] 4 4 7 7 8 9 10 10 10 11 11 12 12
[14] 12 12 13 13 13 13 14 14 14 14 15 15 15


b) Truy xuất các phần của danh sách
Ta truy xuất các phần của danh sách thông qua tên của nó.
Ví dụ: Trong danh sách pts vừa tạo ở trên, ta có thể truy xuất mỗi phần x,
chúng ta dùng lệnh:
> pts$x
[1] 4 4 7 7 8 9 10 10 10 11 11 12 12
[14] 12 12 13 13 13 13 14 14 14 14 15 15 15
...

1.6. Hàm
1.6.1. Hàm có sẵn của R
Để biết một hàm cần có những tham số nào, chúng ta có thể dùng câu
lệnh args(function ).

Để có một cái nhìn cụ thể về hàm (ý nghĩa từng tham số trong nó, công
dụng,…) ta có thể dùng lệnh help( ), hay đơn giản là “?”
Để xem mã nguồn của các hàm trong R, ta chỉ cần gõ tên của nó.
Ví dụ:
> args(hist)
function (x, ...)
NULL
> help(plot)
> ?bar()
> arima
function (x, order = c(0L, 0L, 0L), seasonal = list(order = c(0L,
0L, 0L), period = NA), xreg = NULL, include.mean = TRUE,


1.6.2. Viết một hàm cho riêng mình
Ta có thể dùng R để lập trình những phép tính cá nhân mà R không có hỗ trợ
sẵn, từ đơn giản đến phức tạp. Ở đây chúng ta sẽ xem qua một số lệnh có cấu trúc
thông dụng và dùng chúng để xây dựng một số hàm tính toán đơn giản.
a) Câu lệnh if…else…
Nếu điều kiện đúng, thì thực hiện công việc trước else, ngược lại thực hiện
công việc sau else.
20


PHÂN TÍCH SỐ LIỆU THỐNG KÊ VỚI NGÔN NGỮ R
Ví dụ: Xây dựng hàm giải phương trình bậc nhất một ẩn: ∗ + = 0
> #Hàm giải phương trình bậc nhất một ẩn
> pt<-function(a,b){
+ if(a!=0) {x=-b/a; c("X"=x);}
+ else

+ if(b!=0)c("phuong trinh vo nghiem")
+ else
+ c("phuong trinh vo so nghiem")
+}
> pt(1,2) #giải pt: 1 ∗ + 2 = 0
Kết quả: X
-2
> pt(0,3) #giải pt: 0 ∗ + 3 = 0
[1] "phuong trinh vo nghiem"
> pt(0,0) #giải pt: 0 ∗ + 0 = 0
[1] "phuong trinh vo so nghiem"

b) Câu lệnh for…
Thực hiện công việc n lần (n là số lần lặp do người dùng lập trình).
Ví dụ: Xây dựng hàm tính

, x và n là hai số nguyên nhập từ bàn phím.

> mu<-function(x,n){
+ temp=1;
+ for(i in 1:n) temp = temp*x;
+ c("Ket qua"=temp);}
> mu(3,2)#Tính 3
Ket qua
9

c) Câu lệnh repeat…break
Công việc được lặp lại nhiều lần cho đến khi không thỏa mãn điều kiện.
Ví dụ: Xây dựng hàm tính tổng:
từ bàn phím.


= 1 + 2 + ⋯ + , với n là số nguyên nhập

> tong<-function(n){
+ s=0;i=1;
+ repeat{
+ s=s+i;
+ i=i+1;
+ if(i>n) break;}
+ c("Ket qua"=s)}
> tong(5)#Tính tổng: = 1 + 2 + 3 + 4 + 5
Ket qua
15

21


PHÂN TÍCH SỐ LIỆU THỐNG KÊ VỚI NGÔN NGỮ R
d) Câu lệnh while...
Xét điều kiện thực hiện, nếu điều kiện đúng thì thực hiện công việc cho đến
khi điều kiện không đúng.
Ví dụ: Xây dựng hàm tính n!, với n là một số nguyên nhập từ bàn phím.
> gt<-function(n){
+ temp=1;
+ i=1;
+ while(i<=n){
+ temp=temp*i;
+ i=i+1;
+}
+ c("Ket qua"=temp)

+}
> gt(4)#tinh 4!
Ket qua
24

1.7. Nhập dữ liệu
1.7.1. Nhập dữ liệu từ một file text
Trước khi nhập dữ liệu vào R từ một file số liệu, ta phải cho R biết vị trí thư
mục lưu trữ file số liệu đó bằng câu lệnh setwd( ).
Ta dùng lệnh read.table( ) để nhập dữ liệu vào R từ một file text.
Ví dụ: Chúng ta có một file text với tên “vd.txt” chứa số liệu cần phân tích và
được lưu trữ trong “D:/luan_van/data”, chúng ta đưa nó vào R bằng các lệnh sau:
> setwd("D:/luan_van/data")
> dat<- read.table("vd.txt", header=TRUE)
> dat
id
sex age bmi hdl ldl tc tg
1 1 Nam 57 17
5 2
4 1.1
2 2
Nu 64 18 4.38 3 3.5 2.1


1.7.2. Nhập dữ liệu từ Excel
Để đưa số liệu từ file Excel vào R, ta phải lưu nó dưới dạng file *.csv, dùng
hàm read.csv( ) để nhập số liệu từ file csv vào R.
Ví dụ: Chúng ta có file excel với tên “file.csv” được lưu trữ trong directory
“D:/luan_van/data”, để nhập số liệu này vào R, chúng ta dùng lệnh:
> setwd("D:/luan_van/data")

> dat<-read.csv("file.csv",header=FALSE)

22


PHÂN TÍCH SỐ LIỆU THỐNG KÊ VỚI NGÔN NGỮ R
> dat
V1 V2 V3 V4 V5 V6 V7
1 5.2 6.5 6.9 7
7 7 7.4
2
8
8
8 8 8.5 9
9


1.7.3. Nhập dữ liệu từ SPSS
Hàm read.spss( ) trong package “foreign” có thể nhập dữ liệu vào R từ một
file SPSS.
Ví dụ: Chúng ta có file SPSS với tên “file.sav” được lưu trữ trong directory
“D:/luan_van/data”, để nhập số liệu này vào R chúng ta dùng lệnh:
> library(foreign)
> setwd("D:/luan_van/data")
> dat<-read.spss("file.sav")
> dat
$id
[1] 1 2 3 4 5 6 7 8 9 10 11

"so hydrogen tieu thu"

attr(,"codepage")
[1] 1252
Warning message:
In read.spss("file.sav") :
file.sav: Unrecognized record type 7, subtype 18 encountered in system file

1.7.4. Nhập dữ liệu từ internet
Khi máy tính đang được kết nối với internet, bạn có thể đưa một bộ số liệu
trực tiếp từ internet vào R bằng câu lệnh scan( ).
Ví dụ: ở địa chỉ “ có một bộ
số liệu, chúng ta đưa bộ số liệu này vào R bằng cách dùng lệnh:
> dat<-scan(" />Read 84 items
> dat
[1] 1664.81 2397.53 2840.71 3547.29 3752.96 3714.74 4349.61
[8] 3566.34 5021.82 6423.48 7600.6 19756.21 2499.81 5198.24


1.7.5. Sử dụng dữ liệu trong các package
Một số package có kèm theo sẵn các bộ số liệu, chúng ta có thể gọi chúng ra
để sử dụng.
Để biết thêm thông tin (nguồn, ý nghĩa các biến,…) về những bộ số liệu đi
kèm này, chúng ta dùng lệnh: ??names, với names là tên của bộ dữ liệu.
23


PHÂN TÍCH SỐ LIỆU THỐNG KÊ VỚI NGÔN NGỮ R
Ví dụ:
> library(MASS)
> abbey
[1] 5.2 6.5 6.9 7 7

7 7.4
[8] 8
8
8
8 8.5 9 9

> ??abbey

Chú ý: Chúng ta có thể dùng hàm file.choose( ) để R hiện thị ra một của sổ
chọn file số liệu thay vì dùng lệnh setwd( ) và nhập đường dẫn như ở trên.
Ví dụ: Để đọc một file *.csv từ một thư mục nào đó trên ổ đĩa máy tính của
bạn có thể dùng lệnh sau:
> dat<-read.csv(file.choose(),header=TRUE)

1.8. Biên tập dữ liệu
1.8.1. Lọc bỏ số liệu trống ra khỏi data frame
Trong các bộ dữ liệu thực tế, vì một số lý do khách quan, bộ số liệu thường bị
thiếu mất một vài số liệu (trong bộ dữ liệu nó được ký hiệu nà NA), nhiều phép toán
trong R đòi hỏi bộ dữ liệu phải đầy đủ. Do đó nếu gặp phải những bộ dữ liệu thế
này, chúng ta phải loại bỏ những giá trị trống này ra khỏi dữ liệu, sau đó mới có thể
tiến hành phân tích được. Trong R có hàm na.omit( ) sẽ giúp chúng ta việc này.
Ví dụ: ta sẽ dùng bộ số liệu có tên cfseal trong package “MASS” để làm dùng
lệnh công dụng của hàm na.omit( ).
> #gọi dữ liệu
> library(DAAG)
> lung1<-cfseal$lung
> lung1
[1] 605.0 436.0 380.0 493.9 NA 550.0 470.0 592.5 605.0 799.9
[11] 995.0 785.0 910.0 1115.0 1142.6 1465.0 1250.0 1580.0 2000.0 1474.4
[21] NA 1220.0 1790.0 1510.0 NA NA 2735.0 NA 2380.0 NA

> length(lung1)
[1] 30
> mean(lung1)
[1] NA

Vector lung1 có 30 phần tử, nhưng vì có 6 giá trị NA nên không thể thực hiện
tính trung bình bằng hàm mean( ) được.
> lung2<-na.omit(lung1)
> lung2
[1] 605.0 436.0 380.0 493.9 550.0 470.0 592.5 605.0 799.9 995.0
[11] 785.0 910.0 1115.0 1142.6 1465.0 1250.0 1580.0 2000.0 1474.4 1220.0
[21] 1790.0 1510.0 2735.0 2380.0
attr(,"na.action")
[1] 5 21 25 26 28 30

24


PHÂN TÍCH SỐ LIỆU THỐNG KÊ VỚI NGÔN NGỮ R
attr(,"class")
[1] "omit"

Kết quả trả về có 3 phần, phần một là các phần tử còn lại sau khi lọc bỏ các
giá trị NA. Phần hai (attr(,"na.action")) cho biết vị trí của các giá trị NA trong
vector ban đầu. Phần ba (attr(,"class")) cho biết lớp của kết quả trả về. Chúng ta
xem chiều dài và tính trung bình cho nó:
> length(lung2)
[1] 24
> mean(lung2)
[1] 1136.846


Sau khi loại bỏ các giá trị NA ra khỏi lung1 (và gán kết quả vào lung2 và chỉ
còn 24 phần tử), R đã tính được giá trung bình cho lung2.
1.8.2. Chiết xuất số liệu từ một data frame
a) Chiết xuất theo dòng
Chiết xuất 4 dòng đầu tiên của data frame crabs:
> crabs[1:4,]
sp sex
1 B M
2 B M
3 B M
4 B M

index
1
2
3
4

FL
8.1
8.8
9.2
9.6

RW
6.7
7.7
7.8
7.9


CL
16.1
18.1
19
20.1

CW
19
20.8
22.4
23.1

BD
7
7.4
7.7
8.2

b) Chiết xuất theo cột
Chiết xuất cột 1 và cột 3 của data frame crabs:
> crabs[,c(1,3)]
sp index
1 B
1
2 B
2
...

c) Chiết xuất theo hàng và cột

Chiết suất 5 dòng và 5 cột đầu tiên của data frame crabs:
> crabs[1:5,1:5]
sp sex index
1 B M 1
2 B M 2
3 B M 3
4 B M 4
5 B M 5

FL
8.1
8.8
9.2
9.6
9.8

RW
6.7
7.7
7.8
7.9
8

25


×