Tải bản đầy đủ (.doc) (43 trang)

Xích markov trong phần mềm thống kê 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 (798.48 KB, 43 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC VINH

BÙI THỊ HẢO

LUẬN VĂN THẠC SỸ TOÁN HỌC

XÍCH MARKOV
TRONG PHẦN MỀM THỐNG KÊ R
Chuyên ngành
LÝ THUYẾT XÁC SUẤT VÀ THỐNG KÊ TOÁN HỌC

NGHỆ AN – 2015


BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC VINH

LUẬN VĂN THẠC SỸ TOÁN HỌC

XÍCH MARKOV
TRONG PHẦN MỀM THỐNG KÊ R
Chuyên ngành: LÝ THUYẾT XÁC SUẤT VÀ THỐNG KÊ TOÁN HỌC
Mã số: 60.46.01.06
Người hướng dẫn : TS. NGUYỄN TRUNG HÒA
Người thực hiên:

BÙI THỊ HẢO

NGHỆ AN – 2015



MỤC LỤC
MỞ ĐẦU.................................................................................................................................................4
CHƯƠNG I : KIẾN THỨC CHUẨN BỊ.........................................................................................................6
1.1.Xích Markov......................................................................................................................................6
1.1.1.Định nghĩa chung...................................................................................................................6
1.1.2.Tính chất và sự phân lớp các trạng thái..................................................................................7
1.1.3.Ví dụ minh họa.......................................................................................................................9
1.2.Giới thiệu về R................................................................................................................................10
1.2.1.Giới thiệu về phần mềm R...................................................................................................10
1.2.2.Một số hướng dẫn mở đầu về R..........................................................................................11
CHƯƠNG II. XỬ LÍ XÍCH MARKOV TRONG R..........................................................................................21
2.1.Cấu trúc của gói xích Markov..........................................................................................................21
2.1.1.Tạo đối tượng xích Markov..................................................................................................21
2.1.2.Xử lí đối tượng xích Markov.................................................................................................23
2.2.Xác suất với các đối tượng Markovchain........................................................................................27
2.3.Phân tích thống kê..........................................................................................................................36
2.3.1.Mô phỏng............................................................................................................................36
2.3.2.Ước lượng............................................................................................................................36
2.3.3.Dự báo.................................................................................................................................38
2.4.Ứng dụng vào các mô hình dự báo thời tiết...................................................................................39
2.4.1.Mô hình Land of Oz..............................................................................................................39
2.4.2.Mô hình Alofi Island Rainfall................................................................................................40
..............................................................................................................................................................41
KẾT LUẬN..............................................................................................................................................42
TÀI LIỆU THAM KHẢO............................................................................................................................43


MỞ ĐẦU
1. Lí do chọn đề tài

Đầu thế kỉ XX, nhà Toán học nổi tiếng người Nga A.A.Markov đã đưa ra
mô hình Toán học để mô tả chuyển động của các phần tử chất lỏng trong một
bình kín. Sau này mô hình được phát triển và mang tên là “ Quá trình Markov”.
Nhiều mô hình ngẫu nhiên trong Kinh tế, Kĩ thuật, Dân số học, Di truyền
học...đều được dựa trên cơ sở là quá trình Markov. Xích Markov là một trường
hợp riêng của quá trình Markov khi ta có thể đánh số được các trạng thái.
R là một ngôn ngữ lập trình mã nguồn mở cho phép giải quyết một khối
lượng lớn những bài toán trong phân tích thống kê và đồ thị . Ngôn ngữ R được
bổ sung và phát triển từ ngôn ngữ lập trình S, được sáng tạo bởi Ross Ihaka và
Robert Gentleman ở đại học Auckland, New Zealand vào năm 1995. Các bài
toán thống kê phổ biến như hồi quy tuyến tính và phi tuyến, kiểm định thống kê
cổ điển, phân tích chuỗi thời gian,… đều có thể thực hiện trên R.
Nhận thấy sự hỗ trợ tuyệt vời của phần mềm R trong việc khai thác các
ứng dụng của xích Markov nên tôi đã chọn đề tài “XỬ LÝ XÍCH MARKOV
TRONG R” nhằm mục đích khai thác sâu hơn nữa mối liên hệ chặt chẽ của
Toán học và thực tiễn cuộc sống.
2. Mục đích nghiên cứu
- Tìm hiểu về xích Markov với thời gian rời rạc.
- Tìm hiểu về phần mềm R.
- Tìm hiểu về cách sử dụng R để tính toán trong các bài toán liên quan
đến xích Markov.
3. Phương pháp nghiên cứu
- Phân tích và tổng hợp tài liệu.
- Trao đổi với giáo viên hướng dẫn.
- Thực hành trên R với những ví dụ số.


4. Cấu trúc luận văn
Luận văn bao gồm 2 chương:
Chương I: Kiến thức chuẩn bị

Nội dung của chương gồm hai phần chính:
Phần đầu giới thiệu khái niệm xích Markov với thời gian rời rạc (viết tắt
là DTMC) cùng với các khái niệm liên quan (không gian trạng thái của xích,
bước nhảy, xác suất chuyển, xích Markov thuần nhất theo thời gian) và các tính
chất cơ bản của nó.
Phần sau giới thiệu về phần mềm R với một số hướng dẫn về cách tải và
cài đặt cùng với các thao tác cơ bản khi sử dụng R (khởi động, ngừng chạy, đặt
tên đối tượng, cách định dạng trên R...).
Chương II: Xử lí xích Markov trong phần mềm R
Chương này giới thiệu cấu trúc của gói xích Markov (cách tạo và xử lí các
đối tượng xích Markov); các cú pháp được sử dụng trên các đối tượng xích
Markov để thực hiện phân tích xác suất; các hàm và cú pháp trong các gói phù
hợp để mô phỏng và dự đoán DTMC; đồng thời chỉ ra ứng dụng của xích
Markov trong việc dự đoán thời tiết dưới sự hỗ trợ của phần mềm R.
Luận văn đã hoàn thành tại trường Đại học Vinh. Có được luận văn này,
tác giả xin bày tỏ lòng biết ơn chân thành và sâu sắc tới Tiến sĩ Nguyễn Trung
Hoà đã trực tiếp hướng dẫn, dìu dắt giúp đỡ tác giả trong suốt quá trình triển
khai, nghiên cứu và hoàn thành đề tài.
Xin chân thành cảm ơn các thầy cô giáo khoa Toán – trường Đại Học
Vinh đã giảng dạy, truyền đạt những kiến thức khoa học cho tác giả trong những
năm tháng qua.
Xin chân thành cảm ơn gia đình, BGH trường THPT Tân Kỳ 3 – Tân Kỳ Nghệ An và các bạn học viên lớp cao học 21 Toán chuyên nghành Lý thuyết
Xác suất và Thống kê Toán trường Đại Học Vinh đã động viên và giúp đỡ tác
giả trong suốt quá trình học tập và hoàn thiện luận văn.


CHƯƠNG I : KIẾN THỨC CHUẨN BỊ
1.1. Xích Markov
1.1.1.


Định nghĩa chung
Một xích Markov với thời gian rời rạc (discrete time Markov chain, viết

tắt là DTMC) là một dãy các biến ngẫu nhiên X 1 , X 2 ,..., X n ,.. được đặc trưng bởi
tính Markov. Tính Markov được hiểu là phân phối của trạng thái kế tiếp X n +1
chỉ phụ thuộc vào trạng thái hiện tại X n mà không phụ thuộc vào các trạng thái
trước đó X n −1 , X n − 2 ,..., X 1 (còn được gọi là tính mất trí nhớ). Nghĩa là :
P ( X n +1 = x n +1 | X 1 = x1 , X 2 = x 2 ,..., X n = x n ) = P ( X n +1 = x n +1 | X n = x n )

Tập hợp các trạng thái S = { s1 , s 2 ,..., s r ,...} của X n có thể hữu hạn hoặc

(1)

đếm được và được gọi là không gian trạng thái của xích.
Sự thay đổi của một xích từ trạng thái này sang trạng thái khác được gọi
là sự chuyển trạng thái hoặc bước nhảy.
Xác suất p ij thay đổi từ si đến s j qua bước nhảy đầu tiên được gọi là xác
suất chuyển.

pij = P ( X 1 = s j | X 0 = si )

(2)

(n )
Xác suất chuyển từ si đến s j qua n bước được kí hiệu là pij

pij( n ) = P ( X n = s j | X 0 = si )
(3)
Một DTMC được gọi là thuần nhất theo thời gian nếu tính chất được chỉ
ra trong phương trình (4) dưới đây được thỏa mãn:

P ( X n +1 = s j | X n = si ) = P ( X n = s j | X n −1 = s i )
(4)
Tính thuần nhất theo thời gian nói rằng những xác suất chuyển dọc theo thời
gian là không đổi.

Nếu một xích Markov là thuần nhất theo thời gian thì

 p ij = P( X k +1 = s j | X k = si )
 (n)

 p ij = P( X n + k = s j | X k = si )


(5)
với mọi k
Phân phối xác suất của việc chuyển từ một trạng thái này sang trạng thái
kia có thể được biểu diễn bởi ma trận chuyển P = ( p ij ) i , j , trong đó mỗi phần

p ij .

tử ở vị trí (i, j ) biểu diễn xác suất chuyển

Ví dụ: Nếu r = 3 thì ma trận chuyển P được thể hiện bởi:

 p11
P =  p 21
 p31

p12
p 22

p32

p13 
p 23 
p33 

Phân phối trên mỗi trạng thái có thể được viết dưới dạng một véc tơ hàng
ngẫu nhiên x (có nghĩa

∑x
i

i

= 1, xi ≥ 0 ). Chẳng hạn, nếu trạng thái hiện thời

của xích là s 2 thì x = (0 1 0) . Từ đó ta có quan hệ giữa x (1) và x ( 0 )
x (1) = x ( 0 ) .P



và suy ra chúng ta có thể viết x ( 2) = x ( 0 ) .P 2 và x ( n ) = x ( 0 ) .P n

(n > 0) và véc tơ x (n ) là phân phối giữa các trạng thái của xích được dự báo sau

n bước.
1.1.2.

Tính chất và sự phân lớp các trạng thái
Một trạng thái s j được gọi là kết xuất từ trạng thái si (viết s i → s j ) nếu


một hệ thống được bắt đầu từ trạng thái si và có xác suất dương để đạt đến
(n)
trạng thái s j tại một thời điểm nhất định, nghĩa là tồn tại n > 0 để pij > 0 .

Nếu si → s j và s j → si thì s i và s j được gọi là liên thông.
Một lớp liên thông được định nghĩa là một tập các trạng thái liên thông với
nhau. Một DTMC có thể được tạo thành bởi một hay nhiều lớp liên thông.
DTMC được tạo bởi chỉ một lớp liên thông được gọi là tối giản.
Một lớp liên thông được gọi là đóng nếu không có một trạng thái nào của
lớp đi tới được một trạng thái ngoài lớp đó.


Nếu pii = 1 thì si được gọi là trạng thái hấp thụ (absorbing). Một trạng
thái hấp thụ tương ứng với một lớp liên thông đóng được tạo nên bởi chỉ một
mình nó.
Dạng chính tắc của ma trận chuyển của một DTMC là một ma trận khối,
tại đó các lớp liên thông đóng được thể hiện tại nơi bắt đầu của một ma trận
chéo.
Trạng thái s i được gọi là có chu kì k i nếu bất kì sự lặp lại nào của trạng
thái s i cũng đều phải trải qua một bội của k i bước. Điều đó có nghĩa
k i = UCLN {n : P ( X n = si | X 0 = si ) > 0} . Nếu k i =1 thì trạng thái

s i được gọi là

không tuần hoàn. Ngược lại nếu k i > 1 thì trạng thái si tuần hoàn với chu kỳ k i .
Nói cách khác, s i được gọi là tuần hoàn nếu nó có thể gặp lại chính nó sau một
số k i > 1 cố định (các) bước (hoặc bội của k i ), ngược lại thì nó không tuần
hoàn. s j thuộc cùng một lớp liên thông thì chúng có cùng chu kì k i . Từ đó, mỗi
trạng thái của một DTMC tối giản cũng có tính tuần hoàn. Tính tuần hoàn này

cũng được coi là tính tuần hoàn của DTMC.
Có thể để phân tích thời điểm đạt đến một trạng thái nhất định. Lần qua
đầu tiên từ trạng thái

si

tới thạng thái s j là số Tij các bước được lấy bởi xích

cho đến khi lần đầu tiên nó đạt đến trạng thái sj, với giả thiết là
Nếu các trạng thái s i và X 0 = si . Phân phối xác suất của Tij được xác
định bởi phương trình (6)
hij( n ) = P (Tij = n ) = P ( X n = s j , X n −1 ≠ s j ,..., X 1 ≠ s j | X 0 = si )
(6)
và có thể thấy được tính đệ quy bằng cách dùng phương trình (7) khi cho rằng
hij( n ) = pij :
hij( n ) =

∑{ p}

k∈S − s j

ik

hkj( n−1)

(7)


Nếu trong định nghĩa của lần qua đầu tiên ta đặt si = s j , ta thu được lần quay
lại đầu tiên Ti = inf { n ≥ 1 : X n = si | X 0 = si }. Một trạng thái s i được gọi là hồi

quy nếu nó chắc chắn được thấy tại một thời điểm nào đó sau khi xuất phát bởi
trạng thái s i , có nghĩa là P( Ti < +∞ | X 0 = si ) = 1. Ngược lại s i được gọi là tạm
thời nếu có một xác suất dương sao cho xích chẳng bao giờ quay lại s i , nghĩa
là P ( Ti = +∞ | X 0 = si ) > 0.
Cho một xích Markov thuần nhất theo thời gian với ma trận chuyển P ,
một phân phối dừng z là một véc tơ hàng ngẫu nhiên mà z = z.P với
0 ≤ z j ≤ 1 ∀i và

∑z

j

j

=1

. Nếu một DTMC { X n } tối giản và tuần hoàn thì nó có

phân phối giới hạn và phân phối này là phân phối dừng. Từ đó, nếu P là ma trận
chuyển của xích cỡ k × k và z = ( z1 , z 2 ,..., z k ) là một véc tơ riêng của P sao cho
k

∑z
i =1

i

= 1 thì ta có

lim P n = Z

n →∞

trong đó Z là một ma trận có tất cả các hàng bằng z. Phân phối dừng của { X n }
được biểu diễn bởi z.
1.1.3.

Ví dụ minh họa
Ta xem xét ví dụ bằng số sau. Giả sử có một DTMC với không gian trạng

thái là một tập hợp 3 trạng thái S = { s1 ; s 2 ; s 3 } , với ma trận chuyển
 0.5 0.2 0.3
P = 0.15 0.45 0.4 .
0.25 0.35 0.4
Trong P, p11 = 0.5 là xác suất để X 1 nhận trạng thái s1 với điều kiện X 0 ở
trạng thái s1 , tương tự cho các giá trị khác. Từ đó dễ dàng thấy rằng xích là tối
giản từ mọi trạng thái thông tin (nó chỉ được tạo thành bởi 1 lớp thông tin).


Giả sử rằng trạng thái hiện thời của chuỗi là X 0 = s 2 , nghĩa là
x ( 0 ) = ( 0 1 0 ) thì xác suất chuyển trạng thái sau 1 và 2 bước có thể tính như

sau:
 0.5 0.2 0.3
x (1) = ( 0 1 0 ) 0.15 0.45 0.4 = ( 0.15 0.45 0.4 )
0.25 0.35 0.4
 0.5 0.2 0.3
x ( n ) = x ( n −1) .P → x ( 2) = x (1) .P = ( 0.15 0.45 0.4 ) 0.15 .0.45 0.4
0.25 0.35 0.4
= ( 0.2425 0.3725 0.385).


Chẳng hạn ta muốn tìm xác suất của trạng thái s3 sau 2 bước thì
P( X 2 = s3 | X 0 = s 2 ) = 0.385

1.2. Giới thiệu về R
1.2.1.

Giới thiệu về phần mềm R
R là một ngôn ngữ lập trình mã nguồn mở và môi trường phần mềm cho

những tính toán thống kê và đồ thị. Ngôn ngữ R được bổ sung và phát triển từ
ngôn ngữ lập trình S, được sáng tạo bởi Ross Ihaka và Robert Gentleman ở đại
học Auckland, New Zealand vào năm 1995 và sau đó được phát triển bởi nhóm
phát triển R. R chạy được trên nhiều hệ điều hành : Windows, Linux, Macos,….
Mọi người, bất cứ nơi nào, bất cứ thời điểm nào cũng có thể truy cập và tải mã
nguồn của R về máy tính cá nhân của mình.
R cho phép giải quyết một khối lượng lớn những bài toán trong phân tích
thống kê và đồ thị. Các bài toán thống kê phổ biến như hồi quy tuyến tính và phi
tuyến, kiểm định thống kê cổ điển, phân tích chuỗi thời gian,… đều có thể thực
hiện trên R. Một trong những sức mạnh của R chính là tạo ra được nhiều kiểu đồ
thị phong phú, đa dạng khác nhau theo ý người sử dụng. Ngôn ngữ R cho phép
người sử dụng lập trình những vòng lặp để phân tích liên tiếp vài tập dữ liệu. Nó
cũng cho phép kết hợp những hàm thống kê đơn khác nhau để biễu diễn những


phân tích phức tạp. Người sử dụng R được thừa hưởng một khối lượng lớn
những chương trình được viết trên S và sẵn có trên mạng Internet, phần lớn
những chương trình này đều có thể sử dụng ngay trên R.
Trong khi các phần mềm thống kê khác biễu diễn ngay các kết quả phân
tích thì R lưu trữ các kết quả này trong một đối tượng (object) và do đó các phân
tích vẫn được thực hiện mà không cần biễu diễn ra kết quả trung gian. Ví dụ khi

thực hiện 20 phương trình hồi qui và muốn so sánh các hệ số hệ quy với nhau, R
chỉ cần biễu diễn chỉ các hệ số, và do đó mỗi kết quả chỉ mất một dòng, trong
khi các phần mềm khác có thể phải mở 20 cửa sổ kết quả. Chúng ta có thể thấy
rất nhiều ví dụ minh họa sự linh động của những hệ thống như R so với các phần
mềm thống kê cổ điển khác.
1.2.2.

Một số hướng dẫn mở đầu về R

1.2.2.1. Cách tải và cài đặt
Để tải bộ cài R về máy ta vào trang chủ của R là The Comprehensive R
Archive Network (CRAN) theo địa chỉ sau:

Tùy vào thời điểm, R cung cấp bộ cài với những phiên bản khác nhau và
được cập nhật khoảng 4 lần trong một năm, chẳng hạn vào ngày 05/7/2012 trang
CRAN cung cấp cho ta phiên bản R-2.15.1.
Nếu sử dụng hệ điều hành Windows thì có thể tải bộ cài R-2.15.1 cho
Windows theo đường dẫn sau:
/>Sau khi tải được bộ cài về máy, chỉ mất vài chục giây là ta có thể cài đặt
xong R và sử dụng ngay trên
máy tính của mình.
1.2.2.2. Khởi động và
ngừng chạy R


Sau khi cài đặt R xong, trên màn hình sẽ xuất hiện biểu tượng của R. Để
khởi động R ta có thể làm theo những cách sau:
• Kích đúp vào biểu tượng của R trên màn hình.
• Vào Start → Program → R → R i386 2.15.1.
Khi khởi động xong, ta sẽ có một cửa sổ dòng lệnh R (R console):

và có thể nhập, thực hiện các lệnh để ra những kết quả cần thiết.
Để ngừng hoạt động R, tại cửa sổ dòng lệnh ta kích vào nút chéo ở góc
bên phải màn hình hoặc vào File → Exits hay gõ lệnh q(). Khi thực hiện thao
tác này , trên cửa sổ dòng lệnh sẽ hiện ra câu hỏi :

Nếu chọn “Yes” thì cửa sổ sẽ lưu lại những lệnh của lần thực hiện này trong lần
thực hiện sau, còn nếu chọn “No” thì cửa sổ sẽ không lưu lại và lần thực hiện
sau cửa sổ dòng lệnh sẽ hoàn toàn mới.
Chú ý: Khi đã chọn “Yes” thì những lệnh trong lần thực hiện này sẽ lưu lại dưới
dạng .RData và .Rhistory và sẽ có hiệu lực trong tất cả các lần thực hiện sau.
Nếu không muốn dùng lại những lệnh này, ta có thể thực hiện theo một trong
những cách sau:
• Vào thư mục lưu .Rdata và .Rhistory xóa hai file này đi. Nếu thư mục chưa
bị thay đổi, hai file này được lưu ở thư mục mặc định của R, chẳng hạn
“C:/Users/Hoahong/Document”
• Hoặc tại cửa sổ dòng lệnh gõ các lệnh sau :
>unlink(“.RData”)
>unlink(“.History”)


sau đó đóng R lại và chọn chế độ không lưu. Khi đó trong lần dùng sau các lệnh
cũ sẽ không còn có hiệu lực nữa.
1.2.2.3. Cách hoạt động của R
R hoạt động bằng cách thực hiện những lệnh trên cửa sổ dòng lệnh. Một
lệnh cũng có thể là một phép toán, chẳng hạn:
hoặc cũng có thể là một hàm, ví dụ:
.
Khi dòng lệnh quá dài ta có thể dùng phím “ENTER” để xuống dòng. Phím này
cũng để kết thúc lệnh. Khi lệnh là một hàm, ta chỉ nhập tên những hàm có sẵn
hoặc đã tự tạo ra trước đó trong R. Nếu ta đưa ra một hàm chưa có R sẽ báo lỗi,

chẳng hạn khi nhớ sai tên hàm:
.
Khi ta muốn đưa ra một lời chú thích nào đó cho những lệnh mình làm ta
để dấu # ở đầu câu:

Một hàm trong R gồm tên hàm và các tham số, các tham số được đặt bên
trong dấu ngoặc tròn và được cách nhau bởi dấu phẩy. Những tham số dạng kí
tự (characters) được đặt trong dấu nháy kép (“…”) hoặc nháy đơn (‘..’). Trong
ví dụ trên seq là tên hàm, from, to, by là các tham số và được gán giá trị lần lượt
là 0, 10, 2. Một hàm có thể bao gồm nhiều tham số, khi sử dụng hàm ta có thể
chỉ gán giá trị cho một vài tham số, những tham số không xuất hiện sẽ nhận giá
trị mặc định.
Nếu chỉ viết tên hàm mà không có dấu ngoặc tròn thì R sẽ đưa nội dung
của hàm. Ví dụ:


.
Khi chưa kết thúc một lệnh mà đã xuống dòng, R sẽ xuất hiện dấu nhắc
khác là +, chẳng hạn:
Trong trường hợp này cần hoàn thành nốt lệnh

Nếu trong lệnh phần bị thiếu không phải ở cuối, chẳng hạn :
thì ấn nút Esc trên bàn phím hoặc đánh q( ) để thoát khỏi lệnh, sau đó lấy lại
lệnh để sửa. Chú ý là trên bàn phím có thể dùng mũi tên lên, xuống để lấy lại
những lệnh đã đánh, dùng mũi tên sang trái, phải để di chuyển dấu nháy trên cửa
sổ dòng lệnh.
1.2.2.4. Đối tượng và đặt tên đối tượng trong R
Một trong những điểm nổi bật của R là kết quả không nhất thiết phải hiển
thị ra mà có thể ghi lại trong các đối tượng (objects). Tùy theo kết quả của từng
đối tượng là gì mà ta có thể dùng trong các phân tích tiếp theo hoặc thực hiện

phép toán trên các đối tượng.
.
Để hiển thị nội dung của một đối tượng, ta đánh tên đối tượng và gõ Enter:

.
Trường hợp này đối tượng DaySo là một véctơ gồm các số, có thể thực hiện một
số phép toán phù hợp trên DaySo:


Đặt tên một đối tượng trong R khá linh hoạt vì R không có nhiều hạn chế
như các phần mềm khác. Tên một đối tượng trong R phải bắt đầu bằng một chữ
cái (A-Z) hoặc (a-z), chỉ bao gồm chữ cái, chữ số (0-9) và dấu ghạch dưới (_)
được viết liền nhau. Một chú ý là R phân biệt chữ hoa và chữu thường,nghĩa là
đối tượng DaySo khác hoàn toàn với đối tượng dayso:

.
Do tên của đối tượng không chứa dấu cách nên để dễ đọc tên ta có thể viết hoa
các chữ cái đầu trong mỗi từ của tên như DaySo hoặc dùng dấu chấm để phân
biệt giữa các từ day.so.
1.2.2.5. Liệt kê đối tượng và xóa đối tượng trong R
Giả sử trong cửa sổ dòng lệnh của R ta đang có một số đối tượng sau:
.
Chú ý rằng dấu chấm phấy (;) dùng để phân biệt các lệnh khác nhau được viết
trên cùng một dòng.
Khi muốn liệt kê tất cả những đối tượng đang có trong cửa sổ dòng lệnh,
ta dùng hàm ls( ) (list):

Nếu ta chỉ muốn liệt kê những đối tượng mà chứa những kí tự nào đó ta
dùng thêm tham số pattern (có thể viết tắt là pat) trong hàm ls( ):
Khi muốn xóa một đối tượng đã tạo ra trong R ta dùng hàm rm (remove):



1.2.2.6.
Định dạng trên cửa sổ R
Mỗi khi khởi động R, thư mục làm việc là theo mặc định. Để kiểm tra
xem thư mục làm việc của R là gì, ta gõ lệnh
Trong trường hợp muốn thay đổi thư mục làm việc của R , chẳng hạn là
F:/ThucHanhXSTKTrenR, ta có thể theo một trong những cách sau:
• Tại cửa sổ dòng lệnh, gõ lệnh
• Hoặc tại cửa sổ dòng lệnh, vào File → Change dir... và đến thư mục
ThucHanh XSTKTrenR trong ổ F:

Các định dạng trên cửa sổ R như dấu nhắc, số dòng, số cột của cửa sổ, số
chữ số thập phân khi tính một số hay kiểu phông chữ trên màn hình… đều mặc
định. Để thay những định dạng này ta dùng hàm options, chi tiết về hàm này ta


có thể tìm hiểu chi tiết qua lệnh options.Dấu nhắc trong R mặc định là >, khi
muốn thay dấu nhắc này, chẳng hạn thành R> ta dùng tham số prompt trong
hàm options như sau:
Cửa sổ R mặc định là 80 kí tự, nếu muốn cửa sổ dài hơn hoặc ngắn hơn, ta
định dạng lại qua tham số width của hàm options:

Số thập phân trong cửa sổ R mặc định làm tròn đến 7 chữ số thập phân
sau dấu phẩy, khi muốn thay đổi chữ số thập phân, ta định dạng lại qua tham số
digits của hàm options:

1.2.2.7. Cài thêm gói mới trong R
R được mở rộng một cách mạnh mẽ nhờ việc sử dụng các gói (packages)
do người sử dụng cung cấp cho các chức năng cụ thể hoặc các lĩnh vực nghiên

cứu cụ thể. Một bản R vừa cài xong được cung cấp khoảng tám gói đi kèm và
người dùng có thể tải nhiều gói khác nhau thông qua hệ thống CRAN trên mạng
internet. Một gói mới có thể cài từ gói được tải về máy hoặc cài trực tiếp từ trên
mạng internet. Các bước thực hiện chi tiết cho từng cách cài đặt này được cho
như sau:
Cài đặt gói mới từ gói được tải về máy
Để cài theo cách này, đầu tiên ta phải tải gói mới về máy. Một gói mới
được tải về máy bằng cách sau:





Tại trang chủ CRAN của R, chọn mục Packages trong phần tiêu đề;
Chọn sắp xếp các gói theo tên Table of available packages, sorted

by name để thuận tiện việc tìm kiếm;

Chọn đến gói đang cần để tải về máy;
Khi một gói phụ thuộc vào nhiều gói khác, để cài được gói này ta phải tải
hết các gói phụ thuộc và cài đặt các gói này trước. Ví dụ để cài được gói BSDA,
ta phải cài hai gói e1071 và lattice. Do đó việc cài đặt một gói từ những gói đã
tải về thường mất nhiều thời gian, nhất là khi cài những gói phụ thuộc vào nhiều
gói khác.
Cài đặt một gói mới trực tiếp từ trên mạng
Muốn cài đặt một gói mới, ví dụ gói BSDA theo cách này, ta có thể thực
hiện theo một trong hai cách sau:
Cách 1: Cài bằng hàm install.packages

Tại cửa sổ dòng lệnh của R, gõ lệnh

>install.packages(“BSDA”)

Chọn một bản sao (mirror) của CRAN, chẳng hạn VietNam và R sẽ
tự động cài BSDA cùng với tất cả các gói mà BSDA phụ thuộc vào.

Cách 2: Cài từ mục Packages trên thanh công cụ

Tại cửa sổ dòng lệnh chọn Packages → Install package(s)




Chọn một bản sao của CRAN, chẳng hạn VietNam:



Chọn đến gói cần cài, ở đây là BSDA và R sẽ tự động cài BSDA

cùng với tất cả những gói mà BSDA phụ thuộc vào:


Trước khi sử dụng những hàm trong một gói mới, ta phải gọi gói này ra
qua hàm library, chẳng hạn library (BSDA) hoặc tại cửa sổ dòng lệnh của R,
vào Packages Load package và chọn đến gói cần dùng.


CHƯƠNG II. XỬ LÍ XÍCH MARKOV TRONG R
2.1. Cấu trúc của gói xích Markov
2.1.1. Tạo đối tượng xích Markov
Gói Markov chain được tải trong R bởi dòng lệnh như sau:

R>library(“markovchain”)
Các lớp xích Markov và danh sách xích Markov được định nghĩa trong
gói Markovchain được hiển thị như sau:
Class "markovchain" [in ".GlobalEnv"]
Name: states byrow transitionMatrix
Class: character logical matrix
Name: name
Class: character
Class "markovchainList" [in ".GlobalEnv"]
Name: markovchains name
Class: list character

Lớp đầu tiên được thiết kế để xử lí các quá trình xích Markov thuần nhất
trong khi đó các lớp sau được thiết kế để xử lí các quá trình xích Markov không
thuần nhất.
Một phần tử của lớp xích Markov bao gồm các thành tố sau:
1. states: là một véc tơ chỉ danh sách các trạng thái của không gian các
trạng thái.
2. byrow: một phần tử logic để xác định xác suất chuyển được thể hiện bởi
hàng hay bởi cột.
3. transitionMatrix: ma trận xác suất chyển.
4. name: một thành tố tùy chọn (không bắt buộc) để đặt tên cho DTMC.


Các đối tượng danh sách xích Markov được định nghĩa theo các thành tố
như sau:
1. markovchain: một danh sách các đối tượng xích Markov.
2. name: một thành tố tùy chọn (không bắt buộc) để đặt tên cho DTMC.
Các đối tượng xích Markov có thể được tạo hoặc theo cách dài dòng như
trong một đoạn lệnh sau:


hoặc theo cách ngắn hơn như dưới đây:

Khi lệnh new(“markovchain”) được gọi một mình nghĩa là một xích
Markov mặc định được tạo.
Cách nhanh hơn để tạo ra đối tượng xích Markov có thể được nhờ vào
công cụ initialize S4, để kiểm tra:
• transitionMatrix có phải là ma trận chuyển không, nghĩa là các phần tử
của nó có phải là xác suất và tổng theo dòng, hoặc theo cột của nó có bằng
1 hay không.
• Tên của các cột và các dòng của transitionMatrix được xác định và
trung khớp với véc tơ trạng thái không.


Các đối tượng xích Markov còn có thể được chọn trong danh sách các đối
tượng markovchainList S4 như trong ví dụ sau:
> mcList  new("markovchainList", markovchain=list(mcWeather,
+ defaultMc), name="A list of Markov chain")
2.1.2. Xử lí đối tượng xích Markov
Bảng 1 liệt kê các pháp xử lí và vận dụng đối tượng xích Markov. Các ví
dụ đã cho thấy rằng làm thế nào để các thao tác trong các đối tượng xích
Markov có thể được thực hiện dễ dàng. Chẳng hạn sử dụng ma trận đã được
định nghĩa ta có thể tìm được phân phối xác suất của các trạng thái thời tiết hy
vọng trong 2 hoặc 7 ngày tới khi cho trạng thái hiện thời là mây.
Cách thức
*
[
==
as
dim

plot
print
show
states
t

Mục đích
Tích các ma trận chuyển
Truy cập trực tiếp đến các phần tử của ma trận chuyển
Sự bằng nhau giữa hai ma trận
Thao tác để chuyển đối tượng xích Markov vào data.fame
và bảng đối tượng
Số chiều của ma trận chuyển
Vẽ đối tượng xích Markov
In đối đối tượng xích Markov
Chỉ ra (trưng bày) đối tượng xích Markov
Tên của các trạng thái dịch chuyển
Phép chuyền vị ma trận

Bảng 1. Các cách thức (cú pháp, dạng thức, method) để xử lý đối tượng
xích Markov


Một câu trả lời tương tự cũng có thể thu được khi định nghĩa các xác suất
như là véc tơ cột. Một ma trận xác suất xác định theo cột có thể được thiết lập
hoặc bằng cách tạo ra một ma trận mới hoặc chuyển vị một đối tượng xích
Markov đang có nhờ cách thức t (chuyển vị).

Các cách thức cơ bản đã được định nghĩa cho các đối tượng xích Markov
sẽ nhanh chóng thu được các trạng thái và kích thước của ma trận chuyển.


Một truy cập trực tiếp tới xác suất chuyển được cung cấp bởi cả cách
thức transitionProbability và cách thức “[“.
Ma trận chuyển của một đối tượng xích Markov có thể được hiển thị bằng
cách sử dụng các cách thức print hoặc show.


Một cách tương tự, biểu đồ nét của xác suất chuyển có thể được vẽ bằng
công dụng của plot (như đã chỉ ra
trong Hình 1) dựa vào gói igraph.
Cách thức plot đối với các đối tượng
xích Markov là một tiện ích của
plot.igraph đối với các đối tượng
igraph S4 trong gói igraph. Các tham
số bổ sung có thể được thêm thông qua
hàm plot để vẽ điều khiển các hiển thị
lưới đồ họa.

Hình 1
Vẽ một xích Markov vể thời tiết

Việc nhập và xuất từ một lớp cụ
thể nào đó cũng có thể thực hiện được
như đã chỉ ra trong Hình 2 và đoạn mã
dưới đây:

Hình 2. Nhập và xuất một đối
tượng xích Markov



×