1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

252 574 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 252
Dung lượng 3,66 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Ví dụ: Trong danh sách pts vừa tạo ở trên, ta có thể truy xuất mỗi phần x, Để 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

Trang 1

TRƯỜNG ĐẠI HỌC CẦN THƠ KHOA KHOA HỌC TỰ NHIÊN

Giáo viên hướng dẫn Sinh viên thực hiện

NGUYỄN THỊ HỒNG DÂN HỒNG VIỆT MINH

BỘ MÔN TOÁN – Khoa KHTN TOÁN ỨNG DỤNG – K38

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

Trang 2

2

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ỉ hongvietminh@gmail.com

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

Hồng Việt Minh

Trang 3

3

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

Trang 4

4

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

\

Trang 5

5

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

Trang 6

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

Trang 7

7

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

Trang 8

8

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ả

Trang 9

9

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

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

Trang 10

10 Click

Click

Trang 11

11

Ấn Ctrl+f để mở thanh tìm kiếm

Nhập vào BMA và

ấn phím enter

Click

Trang 12

12

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:

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

Click

Trang 13

13

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

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ý

Trang 14

14

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

& a&b a và b (AND)

| a|b a hoặc b (OR)

! !a Không là a (NOT)

Trang 15

15

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

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ư

a-b hay a_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

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

Trang 16

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:

a

Trang 17

)(log10 x log10(x) log(25) 3.218876

Để 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

[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

a

Trang 18

18

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

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

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"

Trang 19

19

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

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:

> # tạo một danh sách gán vào đối tượng pts

> pts <- list(x = cars[,1], y = cars[,2])

Trang 20

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,

Để 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ó

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

Trang 21

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

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: = 1 + 2 + ⋯ + , với n là số nguyên nhập

Trang 22

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:

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)

Trang 23

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:

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

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

Trang 24

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

Vectorlung1 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

Trang 25

25

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

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:

b) Chiết xuất theo cột

Chiết xuất cột 1 và cột 3 của data frame crabs:

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:

Trang 26

26

d) Chiết xuất theo giá trị của một biến

Hàm subset dùng để lọc những dòng thỏa điều kiện, chúng ta dùng nó để chiết xuất số liệu trong trường hợp này

Chiết xuất số liệu của loài B:

Chiết xuất số liệu của loài B, giống cái:

> crabsBM<-subset(crabs,sp=="B" & sex=="M")

1.8.3 Nhập hai data frame thành một

Giả sử chúng ta có hai data frame d1 và d2 (như bê dưới) Có chung một biến

là id, chúng ta có thể nhập chúng thành 1 data frame bằng hàm merge( )

Trang 27

Đôi khi chúng ta cần mã hóa lại một biến có sẵn để phục vụ nhu cầu tính toán

Ví dụ: Bộ số liệu abbey trong package “MASS” có 31 số liệu, có giá trị nằm

trong đoạn [5.2, 125.0], chúng ta sẽ chia chúng là 3 nhóm Nhóm 1 có giá trị < 8, nhóm 2 có giá trị thuộc khoảng [8,11), còn lại sẽ là nhóm 3 Chúng ta dùng lệnh:

> library(MASS) #gọi package

Trang 28

1.8.5 Chia nhóm cho biến liên tục

Thay vì tổ hợp nhóm như trên, chúng ta có thể dùng hàm cut( ) của R để chia một biến liên tục thành nhiều nhóm theo độ lớn giá trị của biến

Ví dụ: Tiếp tục với bộ số liệu abbey ở trên, chúng ta chia abbey thành 3 nhóm

bằng hàm cut( ) như sau, chúng ta dùng lệnh:

> a<-cut(abbey,3)

> a

[1] (5.08,45.1] (5.08,45.1] (5.08,45.1] (5.08,45.1] (5.08,45.1] (5.08,45.1] [7] (5.08,45.1] (5.08,45.1] (5.08,45.1] (5.08,45.1] (5.08,45.1] (5.08,45.1]

Hàm cut trên chia biến số theo giá trị của biến, chứ không dựa vào số mẫu,

cho nên số lượng mẫu trong từng nhóm không bằng nhau Tuy nhiên, trong phân tích thống kê, có khi chúng ta cần phải phân chia một biến số liên tục thành nhiều nhóm dựa vào phân phối của biến số nhưng số mẫu bằng hay tương đương nhau

Hàm cut2( ) trong package “Hmisc” có thể giúp ta giải quyết vấn đề này Chúng ta dùng cut2( ) để chia abbey thành 3 nhóm như bên dưới

Trang 29

1.9 Lớp của các đối tượng trong R

Hầu hết tất cả các đối tượng đều được phân thành các lớp của nó Lớp các đối tượng giúp các hàm trong R nhận biết các đối tượng là gì để từ đó thực hiện tính toán với nó

Ta có thể xem hoặc đổi lớp của một đối tượng trong R bằng hàm class(x)

Ví dụ: Đối tượng lh là một chuỗi thời gian có sẵn trong R, do đó nó thuộc

lớp ts Chúng ta có thể đổi nó sang lớp timeseries như sau

Trang 30

30

CHƯƠNG 2: VẼ BIỂU ĐỒ VỚI NGÔN NGỮ R

2.1 Một số thao tác cơ bản

2.1.1 Cửa sổ Graphics

Mặc định, của sổ Graphics chỉ vẽ được một biểu đồ, tuy nhiên chúng ta có thể

dùng lệnh layout( ) để phân cửa sổ Graphics ra làm nhiều phần (theo cột dọc) và vẽ

cùng lúc nhiều biểu đồ

Ví dụ: Trong directory “D:/luanvan/data” có file “thulu.csv” ghi lại số liệu

quan sát 26 mẫu lá thù lù ở hai nơi sống (bóng râm và ngoài nắng) Chúng ta đưa nó

vào R và vẽ biểu đồ histogram cho biến c.dai và biểu đồ đường cho biến c.rong

trong cùng một cửa sổ vẽ, chúng ta dùng lệnh:

> setwd(“D:/luan_van/data”)

> data<-read.csv("thulu.csv", header=TRUE)

> head(data)#xem phần đầu của bộ số liệu

id c.dai c.rong d.cao cv.nhanh cv.la noisong

> attach(data)#cho R biết chúng ta muốn làm việc với data

> layout(1:2)#phân đôi của sổ Graphics

> hist(c.dai)

> plot(c.rong,type="l")

Tuy nhiên câu lệnh layout( ) chỉ cho phép vẽ tối đa 4 biểu đồ (theo cột dọc),

nhưng đôi khi chúng ta cần vẽ nhiều hơn 4 Chúng ta có thể dùng câu lệnh

par(mfrow=c(m,n)) để chia cửa sổ Graphics ra thành m*n phần nhỏ (tối đa là 16)

2.1.2 Một số tham số thông dụng cho các hàm vẽ đồ thị

Các hàm vẽ đồ thị trong R có khá nhiều tham số, ở đây chúng ta sẽ đi tìm hiểu một vài tham số thông dụng được liệt kê trong bảng sau:

Trang 31

ylim Giới hạn cho trục tung

Màu sắc

col.main Màu sắc tiêu đề trên col.sub Màu sắc tiêu đề dưới col.lab Màu sắc tiêu đề trục hoành và trục tung col Màu sắc đường (cột) vẽ

Đường vẽ type Kiểu đường vẽ

lty Độ thưa đường vẽ Điểm tọa độ pch Điểm tọa độ trên đồ thị

Bảng 2.2 Giá trị pch thường dùng để vẽ đồ thị

Bảng 2.3 Giá trị type thường dùng để vẽ đồ thị

Trang 32

abline(a,b) hoặc abline(fit): vẽ đường hồi qui tuyến tính Với a = intercept và

b = slope, fit là kết quả phân tích hồi qui của R

abline(h):vẽ một đường ngang tại y = h

abline(v):vẽ một đường thẳng đứng tại x = v

Chức năng: vẽ một mũi tên bên trong biểu đồ

Một số thuộc tính thường dùng của hàm mtext( ) và text( ):

side: Cạnh sẽ đặt chữ, side = 1 nghĩa là đặt chữ ở cạnh dưới cùng, side=2,

side=3, và side=4 tương ứng với các cạnh còn lại theo chiều kim đồng hồ

cex: Kích thước của chữ, mặc định là 1 Chúng ta có thể tăng giảm kích thước

Ví dụ: Chúng ta vẽ một đồ thị với tất cả các thuộc tính và các hàm ở trên.

> #vẽ biểu đồ tán xạ của c.rong với cv.la

> attach(data)

> plot(c.rong,cv.la,main="tieu de chinh",sub="tieu de phu",

+ xlab="nhan truc x",ylab="nhan truc y",xlim=c(-8,16),

Trang 33

33

> #thêm chú thích

> legend(8,10,c("diem (c.rong,cv.la)","duong hoi qui"),pch=c(11,11),

+ lty=c(0,1),col="red",cex=0.8)

> #viết thêm chữ và vẽ muỗi tên

> mtext("viet len canh 4, co chu 1.3",side=4,cex=1.3)

> arrows(8,14,4,17)

Trên đây chỉ là một số thao tác cơ bản trên biểu đồ, với từng biểu đồ cụ thể, sẽ

có một số thao tác đặc biệt riêng của nó, chúng ta sẽ tìm hiểu kỹ hơn ở từng loại biểu đồ cụ thể

2.2 Biểu đồ cho biến số rời rạc

Trang 34

34

Ngoài các tham số chung cho đồ thị, hàm barplot( ) còn có một số thuộc tính

của riêng nó Bên dưới là một số tham số thông dụng:

Bảng 2.4 Tham số thông dụng của biểu đồ cột

horiz Loại cột Dùng lệnh horiz=TRUE để vẽ

cột nằm ngang axisnames Tên các cột Dùng lệnh axisnames=FALSE

để ẩn tên các cột density Mật độ đường sọc cột

angle Độ dốc đường kẻ sọc

width Độ rộng cột

border Màu đường viền cột

beside Loại biểu đồ Dùng lệnh beside=TRUE để vẽ

cột đôi legen Thêm chú thích

Nhưng hàm barplot( ) chỉ nhận dữ liệu của một vector hay một ma trận, trong

khi các biến số rời rạc thường được lưu trữ dưới dạng một factor, nên chúng ta cần

dùng hàm table( ) để tạo biến lưu trữ bảng tần số cho các biến rời rạc trước, sau đó

lấy biến vừa tạo ấy đi vẽ biểu đồ

Ví dụ: Chúng ta vẽ biểu đồ cho biến noisong, chúng ta dùng lệnh:

Ghi giá trị các cột lên cột

Bạn muốn nhìn lên biểu đồ và biết chính xác giá trị của cột, mà không muốn phải thêm lưới hoặc quan sát thêm một thông tin nào khác Bạn có thể ghi giá trị các cột lên từng cột Có nhiều cách để ghi các giá trị cũng như vị trí đặt chúng trong các cột Ở đây chúng ta sẽ tìm hiểu 3 cách thường dùng nhất qua đoạn code sau:

Trang 35

hiện theo cột Dùng hàm barplot( ) để vẽ biểu đồ

Ví dụ: Biến c.dai là một biến liên tục, chúng ta sẽ dùng hàm cut( ) để chia nó

làm 3 khoảng, gán kết quả vào một đối tượng mới Sau đó vẽ một đồ thị cho biến

mới ấy với noisong Chúng ta dùng lệnh như sau:

Trang 36

36

2.4 Biểu đồ tròn

Chúng ta vẽ biểu đồ tròn bằng hàm pie( ) Cũng như với biểu đồ cột, chúng ta

cần phải thống kê tần suất của biến rời rạc trước rồi mới vẽ biểu đồ

Bảng 2.5 Tham số thông dụng của biểu đồ tròn

Trang 37

37

2.3 Biểu đồ cho biến số liên tục

2.3.1 Biểu đồ stripchart

Có nhiều cách để xem sự liên tục của một biến ngẫu nhiên liên tục, chúng ta

có thể dùng biểu đồ stripchart để xét điều đó Trong R có hàm stripchart( ) có thể vẽ

biểu đồ stripchart

Hàm stripchart( ) có nhiều phương thức vẽ, ở đây chúng ta sẽ đi tìm hiểu 3

phương thức thường dùng nhất

overplot: đây là phương thức mặc định của R, nó thể hiện các điểm giá trị của

biến trên một đường thẳng nằm ngang

stack: thể hiện giá trị của biến theo hướng tăng dần, các điểm giá trị có độ lớn

bằng nhau sẽ xếp chồng lên nhau thành một ngăn xếp

jitter: thể hiện giá trị của biến theo hướng tăng dần, nhưng vị trí các điểm nằm

Trang 38

38

2.3.2 Biểu đồ tần số (biểu đồ histogram)

Để vẽ biểu đồ tần số cho một biến số liên tục (biểu đồ histogram), chúng ta

Trang 39

39

2.3.3 Đồ thị phân phối xác suất tích lũy

Để vẽ biểu đồ phân phối xác suất tích lũy cho một biến ngẫu nhiên liên tục Trước hết chúng ta sắp xếp giá trị biến ngẫu nhiên theo một thứ tự tăng dần

bằng hàm sort(x, ) Tiếp theo dùng hàm plot( ) để vẽ biểu đồ

Ví dụ: Vẽ biểu đồ phân phối xác suất tích lũy cho c.rong, chúng ta dùng lệnh:

Chúng ta dùng hàm qqnorm( ) để vẽ biểu đồ Q – Q Plot Và hàm qqline( ) để

vẽ đường phân phối chuẩn

Ví dụ: Chúng ta vẽ biểu đồ Q – Q Plot cho c.rong, chúng ta dùng lệnh:

Trang 40

40

> qqline(c.rong)

2.3.5 Biểu đồ hộp

Để vẽ biểu đồ hộp cho một biến ngẫu nhiên liên tục, ta dùng hàm boxplot( )

Ví dụ: Chúng ta vẽ biểu đồ hộp cho biến cv.nhanh, chúng ta dùng lệnh:

> boxplot(cv.nhanh,main="Box plot of cv.nhanh")

Đặc biệt khi có nhiều mẫu rút ta từ các tổng thể nghiên cứu mà chúng lại có các đặc trưng khác nhau thì việc vẽ đồng thời biểu đồ hình hộp của các mẫu đó lên cùng một mặt phẳng sẽ cho phép so sánh trực quan các mẫu, từ đó có được những nhận xét sơ bộ về sự khác biệt của các tổng thể nghiên cứu tương ứng

Ví dụ: Vẽ hai biểu đồ hộp cho cv.nhanh cho hai nơi sống của cây, dùng lệnh:

> boxplot(cv.nhanh~noisong,main="Box plot of cv.nhanh~noisong")

Ngày đăng: 18/12/2015, 08:04

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Nguyễn Văn Tuấn, Phân tích số liệu và biểu đồ bằng R. Tiếng Anh Sách, tạp chí
Tiêu đề: Phân tích số liệu và biểu đồ bằng R
[3] Bernhard Pfa - Kronberg im Taunus, VAR, SVAR and SVEC Models: Implementation Within R Package vars Sách, tạp chí
Tiêu đề: VAR, SVAR and SVEC Models
[6] J H Maindonald, Using R for Data Analysis and Graphics Introduction, Code and Commentary, Centre for Mathematics and Its Applications, Australian National University Sách, tạp chí
Tiêu đề: Using R for Data Analysis and Graphics Introduction, Code and Commentary
[7] John Maindonald and W. John Braun, Data Analysis and Graphics Using R – an Example-Based Approach, Second Edition, Cambridge University Sách, tạp chí
Tiêu đề: Data Analysis and Graphics Using R – an Example-Based Approach, Second Edition
[8] John Maindonald and W. John Braun, Data Analysis and Graphics Using R – an Example-Based Approach, Third Edition, Cambridge University Sách, tạp chí
Tiêu đề: Data Analysis and Graphics Using R – an Example-Based Approach, Third Edition
[1] A.M. ABBASOV and M.H. MAMEDOVA, Application of fuzzy time series to population forecastin Khác
[2] Avril Coghlan, A Little Book of R For Time Series Khác
[4] Brian S. Everitt and Torsten Hothorn, A Handbook of Statistical Analyses Using R Khác
[5] Friedrich Leisch, Creating R Packages: A Tutorial Khác
[9] Ly Pham, Time Series Analysis with ARIMA – ARCH/GARCH model in R Khác
[10] Peter Dalgaard, Introductory Statistics with R, Second Edition Khác
[11] Peter J. Brockwell and Richard A. Davis, Introduction to Time Series and Forecasting, Second Edition Khác
[12] Shyi-Ming Chen and Chia-Ching Hsu, A New Method to Forecast Enrollments Using Fuzzy Time Series Khác
[13] W. N. Venables and B. D. Ripley, Modern Applied Statistics with S, Fourth edition Khác

HÌNH ẢNH LIÊN QUAN

Bảng 2.2. Giá trị pch thường dùng để vẽ đồ thị - 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ảng 2.2. Giá trị pch thường dùng để vẽ đồ thị (Trang 31)
Bảng 2.1. Tham số thông dụng khi vẽ biểu đồ - 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ảng 2.1. Tham số thông dụng khi vẽ biểu đồ (Trang 31)
Bảng 2.4. Tham số thông dụng của biểu đồ cột - 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ảng 2.4. Tham số thông dụng của biểu đồ cột (Trang 34)
Bảng 2.5. Tham số thông dụng của biểu đồ tròn - 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ảng 2.5. Tham số thông dụng của biểu đồ tròn (Trang 36)
2.3.3. Đồ thị phân phối xác suất tích lũy - 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
2.3.3. Đồ thị phân phối xác suất tích lũy (Trang 39)
Đồ thị tán xạ cho chúng, dùng lệnh: - 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
th ị tán xạ cho chúng, dùng lệnh: (Trang 41)
Bảng 3.1. Một số phép toán xác suất - 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ảng 3.1. Một số phép toán xác suất (Trang 43)
Bảng bên dưới tóm lược một số hàm phân phối của đại lượng ngẫu nhiên. - 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ảng b ên dưới tóm lược một số hàm phân phối của đại lượng ngẫu nhiên (Trang 43)
Bảng 3.3: Một số hàm thống kê mô tả - 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ảng 3.3 Một số hàm thống kê mô tả (Trang 47)
Đồ thị tương tác: - 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
th ị tương tác: (Trang 125)
Đồ thị observed là chuỗi số liệu gốc. - 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
th ị observed là chuỗi số liệu gốc (Trang 140)
Đồ thị của chuỗi dao động quanh giá trị 0.93, và không có một xu hướng tăng  hoặc giảm nào cả - 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
th ị của chuỗi dao động quanh giá trị 0.93, và không có một xu hướng tăng hoặc giảm nào cả (Trang 142)
Đồ thị chuỗi thời gian dự báo. - 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
th ị chuỗi thời gian dự báo (Trang 150)
Bảng 3.10: Các tham số của hàm fuzzy.ts2 - 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ảng 3.10 Các tham số của hàm fuzzy.ts2 (Trang 169)
Nguồn: Báo cáo Kinh tế của Tổng thống, 1993, Bảng B-53, trang 408 - 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
gu ồn: Báo cáo Kinh tế của Tổng thống, 1993, Bảng B-53, trang 408 (Trang 212)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w