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ỉ
[email protected]
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:
http://ftp.heanet.ie/mirrors/cran.r-project.org
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
x
x>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("http://robjhyndman.com/tsdldata/hurst/precip1.dat",skip=1)
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