Professional Documents
Culture Documents
i
3 Thực hành phân tích phương sai với R 21
3.1 Ví dụ 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.1.1 Mô tả dữ liệu và bài toán . . . . . . . . . . . . . . . . . . . . 22
3.1.2 Phân tích phương sai với R . . . . . . . . . . . . . . . . . . . 22
3.2 Ví dụ 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.2.1 Mô tả dữ liệu . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.2.2 Phân tích phương sai với R . . . . . . . . . . . . . . . . . . . 29
Kết luận 38
ii
LỜI MỞ ĐẦU
Ở nước ta hiện nay, trong quá trình công nghiệp hóa, hiện đại hóa, nền kinh
tế có nhiều biến động thì các khái niệm liên quan đến xác suất thống kê như: dự
báo, chuẩn đoán, kiểm định sự tăng giảm của giá cả thị trường, ... ngày càng trở
nên quen thuộc. Vì vậy xác suất thống kê trở thành một công cụ hữu ích để giải
quyết nhiều vấn đề trong cuộc sống.
Phân tích phương sai (Analysis of Variance - ANOVA) là một trong những
nội dung quan trọng của thống kê. Phân tích phương sai không chỉ là phương pháp
thử nghiệm hữu ích, quan trọng mà ngày nay nó còn sử dụng rộng rãi trong nghiên
cứu - phân tích định lượng, đặc biệt là trong các lĩnh vực nghiên cứu bao gồm sinh
học, kinh tế, tâm lý học, ...
Mục tiêu của khóa luận này là tập trung tìm hiểu, nghiên cứu một cách đầy
đủ và hệ thống về phương pháp phân tích phương sai ANOVA (đơn biến), bao gồm
one-way ANOVA và two-way ANOVA. Ngoài ra, một mục tiêu khác hướng đến là
rèn luyện cho sinh viên kỹ năng sử dụng ngôn ngữ lập trình thống kê R (có thể
nói đây là một trong những ngôn ngữ lập trình thống kê phổ biến nhất và mạnh
nhất hiện nay) để thực hành các phân tích phương sai trên dữ liệu.
Để hoàn thành khóa luận này, tôi xin tỏ lòng biết ơn sâu sắc đến thầy Lê
Thanh Bính, đã tận tình hướng dẫn trong suốt quá trình học tập và viết luận văn
tốt nghiệp. Tôi xin chân thành cảm ơn đến quý thầy, cô trong khoa Toán & Thống
kê, Trường Đại học Quy Nhơn đã tận tình truyền đạt kiến thức trong những năm
học tập trên giảng đường. Với vốn kiến thức được tiếp thu, lĩnh hội trong quá trình
học không chỉ là nền tảng cho quá trình nghiên cứu khóa luận mà còn là hành
trang quý báu để tôi bước vào một chặng đường mới một cách vững chắc và tự tin.
iii
Cuối cùng, mặc dù đã có nhiều cố gắng nhưng do thời gian và năng lực có
hạn nên trong quá trình viết luận văn chắc chắn không tránh khỏi những hạn chế
và thiếu sót. Rất mong nhận được sự góp ý của quý thầy cô, quý bạn đồng nghiệp
để khoá luận tốt nghiệp này được hoàn thiện hơn.
Sinh viên
iv
Một số kí hiệu viết tắt
v
Chương 1
Nếu tập các giá trị mà biến ngẫu nhiên nhận là một tập gồm một số hữu hạn
điểm hoặc vô hạn nhưng đếm được, khi đó biến ngẫu nhiên gọi là biến ngẫu nhiên
rời rạc.
Giả sử biến ngẫu nhiên X nhận các giá trị x1 , x2 , ..., xn và P {X = xi } = pi ,
i = 1, 2, ...
Để mô tả (hoặc xác định) biến ngẫu nhiên rời rạc X ta dùng bảng sau:
X x1 x2 ... xn ...
P {X = xi } p1 p2 ... pn ...
X
Trong đó: pi = 1, pi > 0, ∀i = 1, 2, ...
i
1
Biến ngẫu nhiên liên tục
Nếu tập các giá trị biến ngẫu nhiên nhận lấp đầy một khoảng nào đó, khi đó
biến ngẫu nhiên được gọi là biến ngẫu nhiên liên tục.
Để mô tả (hoặc xác định) biến ngẫu nhiên liên tục ta dùng khái niệm hàm
mật độ.
Hàm p(x) được gọi là hàm mật độ của biến ngẫu nhiên nếu thỏa mãn 2 điều
kiện sau:
+) p(x) ≥ 0 ∀x ∈ (−∞; +∞)
R +∞
+) −∞ p(x)dx = 1
Trong trường hợp này xác suất để biến ngẫu nhiên X thuộc vào khoảng (x0 , x1 )
được tính như sau:
Z x1
P {x0 < X < x1 } = p(x)dx
x0
Kỳ vọng của biến ngẫu nhiên X ký hiệu là E(X) được xác định như sau:
X
xi p i nếu P (X = xi ) = pi
E(X) = Z i +∞
xf (x)dx nếu X có hàm mật độ f (x)
−∞
Tính chất:
(i) E(C) = C với C là hằng số.
(ii) E(aX + bY ) = aE(X) + bE(Y ) (với a, b ∈ R và X, Y là hai biến ngẫu nhiên).
Phương sai
Phương sai của biến ngẫu nhiên X , ký hiệu V ar(X) là kỳ vọng toán của bình
phương sai lệch của biến ngẫu nhiên so với kỳ vọng toán của nó.
Như vậy, đối với X là biến ngẫu nhiên rời rạc, ta có thể tính phương sai bằng
công thức:
2
X X
V ar(X) = [xi − E(X)]2 pi = xi 2 pi − [E(X)]2
i i
Tính chất:
(i) V ar(C) = 0 với C là hằng số.
(ii) V ar(aX + bY ) = a2 V ar(X) + b2 V ar(Y ) (với a, b ∈ R và X, Y là hai biến
ngẫu nhiên độc lập).
Mốt (Mode)
Nếu X là biến ngẫu nhiên rời rạc thì mốt là giá trị x0 của X sao cho P (X = x0 )
là lớn nhất.
Nếu X là biến ngẫu nhiên liên tục có hàm mật độ f (x) thì mốt là giá trị x0
của X sao cho f (x0 ) là lớn nhất.
Trung vị
Trung vị của biến ngẫu nhiên (rời rạc hay liên tục), ký hiệu M ed(X) là giá
trị x0 của X sao cho P (X ≤ x0 ) = P (X ≥ x0 ) = 0, 5
FX (x) = P {X < x}
Trong định nghĩa trên, x là biến của hàm F, x ∈ (−∞; +∞). Tại một điểm x
bất kì hàm F (x) chính là xác suất để biến ngẫu nhiên nhận giá trị nhỏ hơn x hoặc
để biến ngẫu nhiên nhận giá trị bên trái x.
Chỉ số của hàm FX (x) để chỉ hàm phân phối của biến ngẫu nhiên X .
3
1.2.3 Một số hàm phân phối thường gặp
Phân phối chuẩn
Biến ngẫu nhiên liên tục X được gọi là có phân phối chuẩn, ký hiệu X ∼ N (µ, σ 2 )
nếu hàm mật độ của X có dạng:
1 (x−µ)2
f (x) = √ e− 2σ2 ; −∞ < x < +∞
σ 2π
Các đại lượng đặc trưng của X ∼ N (µ, σ 2 ): E(X) = µ ; V ar(X) = σ 2
Z b
1 (x−µ)2
Với a, b ∈ R , a ≤ b , ta có: P (a ≤ x ≤ b) = √ e− 2σ2 dx
σ 2π a
Trường hợp đặc biệt: µ = 0 và σ 2 = 1 thì X được gọi là có phân phối chuẩn
tắc X ∼ N (0, 1), khi đó hàm mật độ có dạng:
1 x2
f (x) = √ e− 2 ; −∞ < x < +∞
2π
Z b
1 x2
Với a, b ∈ R , a ≤ b : P (a ≤ x ≤ b) = √ e− 2 dx = Φ(b) − Φ(a)
Z x 2π a
1 t 2
Trong đó: Φ(x) = √ e− 2 dt
2π −∞
X −µ
Nếu X ∼ N (µ, σ 2 ) thì Y = ∼ N (0, 1)
σ
Biến ngẫu nhiên liên tục X được gọi là có phân phối Chi bình phương với n
bậc tự do, ký hiệu X ∼ χ2 (n) nếu hàm mật độ của X có dạng:
0
,x ≤ 0
f (x) = 1 n
−1 − x2
n x 2 e ,x > 0
2 Γ( n2 )
2
Z ∞
trong đó Γ(x) = tx−1 e−t dt là hàm Gamma.
0
Các đại lượng đặc trưng của X ∼ χ2 (n): E(X) = n ; V ar(X) = 2n
Biến ngẫu nhiên liên tục X được gọi là có phân phối Student với n bậc tự do
nếu hàm mật độ của X có dạng:
− n + 1
n + 1
Γ 2
f (x) = √ 2 1 + x 2
n n
nπ Γ
2
4
n
Các đại lượng đặc trưng: E(X) = 0 ; V ar(X) =
n−2
Giả sử X là biến ngẫu nhiên liên tục có phân phối chuẩn tắc N (0, 1) ; Y là
biến ngẫu nhiên liên tục có phân phối Chi bình phương với n bậc tự do χ2 (n) và
X, Y là hai biến ngẫu nhiên độc lập.
X
Nếu xét biến ngẫu nhiên T = q thì T có phân phối Student với n bậc tự do.
Y
n
Biến ngẫu nhiên liên tục X được gọi là có phân phối Fisher với n1 và n2 bậc
tự do, ký hiệu X ∼ F (n1 , n2 ) nếu hàm mật độ của X có dạng:
0
,x ≤ 0
n1 −2
f (x) = x 2
C
n1 +n2 ,x > 0
(n2 + n1 x) 2
n1 n2
Γ( n1 +n
2 )n1 n2
2 2 2
với C =
Γ( n21 )Γ( n22 )
Các đại lượng đặc trưng:
n2 2n2 2 (n1 + n2 − 2)
E(X) = ; V ar(X) =
n2 − 2 n1 (n2 − 2)2 (n2 − 4)
5
1.3.2 Đặc trưng mẫu
Kỳ vọng mẫu (trung bình mẫu)
Phương sai mẫu cũng là một biến ngẫu nhiên, sử dụng các tính chất của kỳ vọng
ta có:
( n )
2 1 X 2
E(s ) = E (Xi − µ) − (X − µ)
n
i=1
( n
)
1 X
(Xi − µ)2 − 2(Xi − µ)(X − µ) + (X − µ) 2
=E
n
i=1
( n n
)
1 X 1X
=E (Xi − µ)2 − 2(X − µ) (Xi − µ) + (X − µ)2
n n
i=1
( n
) i=1
1 X
=E (Xi − µ)2 − (X − µ)2
n
i=1
n
1 X
E (Xi − µ)2 − E (X − µ)2
=
n
i=1
1
= .n.V ar(X) − V ar(X)
n
1 σ2 n−1 2
= .n.σ 2 − = σ
n n n
Để kỳ vọng của phương sai mẫu trùng với phương sai V ar(X) = σ 2 của biến ngẫu
nhiên gốc ta cần hiệu chỉnh như sau:
Phương sai mẫu có hiệu chỉnh:
6
n
2 1 X n 2
ŝ = (Xi − X)2 = s
n−1 n−1
i=1
n n n−1 2
Khi đó: E(ŝ2 ) = E(s2 ) = . .σ = σ 2
n−1 n−1 n
W = (X1 , X2 , ..., Xn )
Chọn thống kê: T = T (X1 , X2 , ..., Xn , θ) ; trong đó θ là tham số liên quan đến giả
thuyết cần kiểm định.
Điều kiện đặt ra đối với thống kê T là nếu H0 đúng thì quy luật phân phối
xác suất của T hoàn toàn xác định. Thống kê T được gọi là tiêu chuẩn kiểm định.
P (T ∈ Wα |H0 ) = α
Giá trị α được gọi là mức ý nghĩa của kiểm định và miền Wα được gọi là miền bác
bỏ giả thuyết H0 với mức ý nghĩa α.
7
1.4.4 Giá trị quan sát của tiêu chuẩn kiểm định
Thực hiện phép thử với mẫu ngẫu nhiên X = (X1 , X2 , ..., Xn ) thu được mẫu
cụ thể x = (x1 , x2 , ..., xn ) và qua đó tính được một giá trị cụ thể của tiêu chuẩn
kiểm định T :
Giá trị này được gọi là giá trị quan sát của tiêu chuẩn kiểm định.
1.4.5 Sai lầm trong bài toán kiểm định giả thuyết
Khi kiểm định một giả thuyết thống kê, có thể mắc các sai lầm thuộc hai loại
sau:
- Sai lầm loại I: Bác bỏ giả thuyết H0 trong khi H0 đúng.
Mức ý nghĩa α chính là xác suất mắc sai lầm loại I:
P (T ∈ Wα |H0 ) = α
Thật vậy, mặc dù H0 đúng nhưng xác suất để (G ∈ Wα ) vẫn bằng α, nhưng
khi (G ∈ Wα ) ta lại bác bỏ H0 . Do đó xác suất mắc sai lầm loại I đúng bằng α.
Sai lầm này có thể sinh ra do kích thước mẫu quá nhỏ, do phương pháp lấy
mẫu, ...
- Sai lầm loại II: Thừa nhận giả thuyết H0 trong khi H0 sai, hay giá trị
quan sát Tqs không thuộc miền bác bỏ Wα trong khi H1 đúng.
Giả sử xác suất mắc sai lầm loại II là β , ta có:
P (T ∈
/ Wα |H1 ) = β
8
Chương 2
Ví dụ: Phân tích sự khác biệt giữa các thuộc tính khách hàng (giới tính, tuổi,
nghề nghiệp, thu nhập . . . ) đối với một vấn đề nào đó (thường chọn là nhân tố
phụ thuộc, ví dụ như: sự hài lòng).
Phân tích phương sai (ANOVA) được phát triển bởi nhà thống kê người Anh
- Ronald Fisher vào năm 1918. Ronald Fisher đã sử dụng phương pháp này để giải
quyết các vấn đề liên quan đến nghiên cứu trên thực vật và động vật, trong đó có
phân tích tác động của các yếu tố môi trường đến sự sinh trưởng của cây trồng.
Các phương pháp phân tích phương sai ban đầu của Fisher đã phát triển từ phân
tích phương sai đơn giản, được sử dụng để so sánh sự khác biệt giữa hai giá trị
trung bình. Trong thập niên 1920 và 1930, Fisher và các nhà thống kê khác đã
phát triển phương pháp ANOVA để giải quyết các vấn đề liên quan đến so sánh
giá trị trung bình của nhiều nhóm.
Một số giả định cần thỏa mãn trong phân tích phương sai:
+ Các nhóm so sánh phải độc lập và được chọn một cách ngẫu nhiên.
+ Các nhóm so sánh phải có phân phối chuẩn hoặc cỡ mẫu phải đủ lớn để
được xem như tiệm cận phân phối chuẩn.
+ Phương sai của các nhóm so sánh phải đồng nhất.
Có nhiều loại phân tích phương sai, tuy nhiên trong khóa luận này chúng tôi
9
muốn tập trung tìm hiểu hai loại mà thường dùng trong các nghiên cứu thống kê
là “phân tích phương sai một yếu tố” (one-way ANOVA) và “phân tích ANOVA
hai yếu tố” (two-way ANOVA).
Phân tích phương sai một yếu tố là phân tích ảnh hưởng của một yếu tố
nguyên nhân (dạng biến định tính) đến một yếu tố kết quả (dạng biến định lượng)
đang nghiên cứu. Nó được sử dụng để xem có sự khác biệt có ý nghĩa nào giữa các
đối tượng của ba hay nhiều nhóm độc lập với nhau hay không.
Ví dụ: Nghiên cứu có thể sử dụng phân tích phương sai một yếu tố để tìm
hiểu liệu động lực làm việc có khác nhau hay không dựa trên trình độ người lao
động (chia trình độ người lao động thành ba nhóm độc lập: từ trung cấp trờ xuống,
cao đẳng- đại học, thạc sĩ trở lên).
Phân tích phương sai hai yếu tố nhằm xem xét cùng lúc hai yếu tố nguyên
nhân (dưới dạng dữ liệu định tính) ảnh hưởng đến yếu tố kết quả (dưới dạng dữ
liệu định lượng) đang nghiên cứu.
Ví dụ: Nghiên cứu ảnh hưởng của trình độ học vấn và giới tính đến động lực
làm việc người lao động. Phân tích phương sai hai yếu tố giúp chúng ta đưa thêm
yếu tố nguyên nhân vào phân tích làm cho kết quả nghiên cứu càng có giá trị.
ANOVA đã được ứng dụng rộng rãi trong nhiều lĩnh vực khác nhau, từ khoa
học tự nhiên đến y học, kinh tế học và xã hội học. Các phương pháp phân tích
phương sai ngày nay có nhiều biến thể và đã được phát triển để xử lý các vấn đề
phức tạp hơn trong nghiên cứu thống kê.
Trong đó: τi đặc trưng cho sự khác biệt về giá trị trung bình µ của biến ngẫu nhiên
X dưới tác động của nhân tố F ở mức i ; ij là các sai số ngẫu nhiên giả thiết là
độc lập với nhau và tuân theo quy luật phân phối chuẩn N (0, σ2 ).
10
Mô hình (2.1) được gọi là mô hình phân tích phương sai một nhân tố.
Để tiến hành phân tích phương sai ta xét cặp giả thuyết sau:
H0 : τ1 = τ2 = ... = τ = 0
k
H : Tồn tại ít nhất một τ 6= 0
1 i
Bảng số liệu dùng để tính toán phân tích phương sai một nhân tố được xây dựng
như sau:
Nhân tố F
STT 1 2 ... k
quan sát
1 X11 X21 ... Xk1
2 X12 X22 ... Xk2
... ... ... ... ...
ni X1n1 X2n2 ... Xknk
Phương pháp phân tích phương sai về cơ bản dựa trên cơ sở tính toán và
phân tích một số đặc trưng mẫu sau đây:
- Tổng bình phương tất cả các sai lệch giữa các giá trị quan sát Xij và giá trị trung
bình mẫu chung của nhóm (ký hiệu SST ) được tính như sau:
k X
ni
X 2
SST = Xij − X
i=1 j=1
- Tổng bình phương các sai lệch giữa các giá trị trung bình mẫu của các nhóm
quan sát (phân theo mức nhân tố i) và trung bình mẫu chung (ký hiệu SSF ) được
tính như sau:
11
k
X 2
SSF = Xi − X ni
i=1
- Tổng của tất cả các tổng bình phương các sai lệch của các giá trị Xij so với trung
bình mẫu của từng nhóm (ký hiệu SSE ) được tính như sau:
ni
k X
X 2
SSE = Xij − Xi
i=1 j=1
k X
ni
X 2
SST = Xij − Xi + Xi − X
i=1 j=1
k X
ni k X
ni k X
ni
X 2 X 2 X
= Xij − Xi + Xi − X − 2 Xij − Xi Xi − X
i=1 j=1 i=1 j=1 i=1 j=1
k X
ni k X
ni k
"n #
i
X 2 X 2 X X
= Xij − Xi + Xi − X −2 Xi − X Xij − Xi
i=1 j=1 i=1 j=1 i=1 j=1
k X
ni k X
ni k
"ni ni
#
X 2 X 2 X X X
= Xij − Xi + Xi − X −2 Xi − X Xij − Xi
i=1 j=1 i=1 j=1 i=1 j=1 j=1
k X
ni k X
ni k
X 2 X 2 X
= Xij − Xi + Xi − X −2 Xi − X ni Xi − ni Xi
i=1 j=1 i=1 j=1 i=1
k X
ni k X
ni
X 2 X 2
= Xij − Xi + Xi − X
i=1 j=1 i=1 j=1
= SSE + SSF
Như vậy, ta thấy rằng toàn bộ sự khác biệt của các giá trị Xij so với X được
chia làm hai phần: một phần được tạo nên bởi nhân tố trong mô hình (SSF ) và
phần còn lại là do bản thân sự khác biệt giữa các giá trị quan sát tạo ra (SSE ).
Với giả thiết các sai số ngẫu nhiên i phân phối chuẩn có phương sai bằng
nhau, ta có khẳng định sau:
k
2
X 2
- Nếu H0 đúng, đại lượng SSF /σ = ni Xi − X /σ 2 là đại lượng thống
i=1
SSF
kê có phân phối Chi bình phương với bậc tự do (k − 1) và là một ước lượng
k−1
không chệch của σ 2 .
k X
ni
2
X 2
- Đại lượng SSE /σ = Xij − Xi /σ 2 là đại lượng thống kê có phân
i=1 j=1
12
SSE
phối Chi bình phương với bậc tự do (n − k ) và là một ước lượng không chệch
n−k
của σ 2 .
Để kiểm định cặp giả thuyết mô hình phân tích phương sai, ta sử dụng tiêu
chuẩn sau đây:
SSF /(k − 1) M SF
F0 = =
SSE /(n − k) M SE
Nếu H0 đúng, F0 tuân theo quy luật phân phối Fisher với bậc tự do là (k − 1)
và (n − k ). Miền bác bỏ mức ý nghĩa α cho trước đối với giả thuyết H0 là:
SSF /(k − 1)
Wα = F0 = : F0 > fα (k − 1, n − k)
SSE /(n − k)
trong đó fα (k − 1, n − k) là giá trị tới hạn mức α của phân phối F (k − 1, n − k).
- Nếu F0 > fα (k − 1, n − k) thì đủ cơ sở để bác bỏ H0 .
- Nếu F0 ≤ fα (k − 1, n − k) thì chưa đủ cơ sở để bác bỏ H0 .
Các kết quả ở trên được trình bày trong bảng sau đây:
trong đó tα/2,N −k là giá trị tới hạn Student tương ứng với độ tin cậy (1 − α) , bậc
13
k
X
tự do (N − k) với N = ni và ni , nj lần lượt là số phần tử của các nhóm i và j
i=1
trong mẫu.
Nếu:
+) |Xi − Xj | > LSD: sự khác biệt giữa Xi và Xj có ý nghĩa về mặt thống kê.
+) |Xi − Xj | ≤ LSD: sự khác biệt giữa Xi và Xj không có ý nghĩa về mặt
thống kê.
Trong đó:
+ τi , βj là các hằng số đặc trưng cho sự khác biệt về giá trị trung bình µ của
X dưới tác động của hai nhân tố A và B tương ứng ở mức i và j .
+ ij là các sai số ngẫu nhiên độc lập với nhau và cùng tuân theo quy luật
phân phối chuẩn N (0, σ2 ).
Đối với mô hình này ta có bảng số liệu như sau:
Nhân tố B
1 2 ... n
Nhân tố A
1 X11 X12 ... X1n
2 X21 X22 ... X2n
... ... ... ... ...
m Xm1 Xm2 ... Xmn
Dễ dàng nhận thấy chúng ta có mn nhóm, trong mỗi nhóm chỉ có một quan
sát. Nếu trong một nhóm có nhiều quan sát ta lấy giá trị trung bình của nhóm đó
14
làm đại diện.
Ký hiệu các đại lượng sau:
m n n m
1 XX 1X 1 1 X 1
X= Xij ; Xi∗ = Xij = Xi∗ ; X∗j = Xij = X∗j
mn n n m m
i=1 j=1 j=1 i=1
Tổng bình phương các sai lệch chung của toàn bộ quan sát so với giá trị trung
bình mẫu (ký hiệu SST )là:
n
m X m X
n
X 2 X
2
2
SST = Xij − X = Xij − mn X
i=1 j=1 i=1 j=1
- Tổng bình phương các sai lệch về trung bình của các nhóm được tạo nên
bởi nhân tố B (ký hiệu SSB ) là:
n n
! m Xn
!2
X 2 1 X 2 1 X
SSB = m X∗j − X = X∗j − Xij
m mn
j=1 j=1 i=1 j=1
- Tổng bình phương các sai lệch được tạo nên bởi sai số ngẫu nhiên (ký hiệu
SSE ) là:
m X
n
X 2
SSE = Xij − Xi∗ − X∗j + X
i=1 j=1
Bậc tự do của SST là (mn − 1), của SSA là (m − 1), của SSB là (n − 1), do đó
bậc tự do của SSE là (mn − 1) − (m − 1) − (n − 1) = (m − 1)(n − 1).
Kiểm định giả thuyết cho mô hình phân tích phương sai hai yếu tố không lặp
gồm hai bài toán sau:
15
Bài toán kiểm định giả thuyết 1
H A : τ1 = τ2 = ... = τm = 0
0
H A : Tồn tại ít nhất một τ 6= 0
1 i
SSA /(m − 1) M SA
Nếu H0A đúng thì tỉ số F0 = = sẽ tuân theo quy luật
SSE /(m − 1)(n − 1) M SE
phân phối Fisher với bậc tự do là (m − 1) và (m − 1)(n − 1).
Do đó miền bác bỏ để kiểm định cặp giả thuyết trên với mức ý nghĩa α là:
SSA /(m − 1)
Wα = F0 = : F0 > fα [(m − 1), (m − 1)(n − 1)]
SSE /(m − 1)(n − 1)
SSB /(n − 1) M SB
Nếu H0B đúng thì tỉ số F0 = = sẽ tuân theo quy
SSE /(m − 1)(n − 1) M SE
luật phân phối Fisher với bậc tự do là (n − 1) và (m − 1)(n − 1).
Do đó miền bác bỏ với mức ý nghĩa α là:
SSB /(n − 1)
Wα = F0 = : F0 > fα [(n − 1), (m − 1)(n − 1)]
SSE /(m − 1)(n − 1)
Các kết quả được tính ở trên được trình bày trong bảng sau đây:
Nguồn SS Bậc tự do MS F0
Nhân tố A SSA (m − 1) M SA M SA /M SE
Nhân tố B SSB (n − 1) M SB M SB /M SE
Sai số SSE (m − 1)(n − 1) M SE
Tổng SST mn − 1
16
k = 1, q ; i = 1, m ; j = 1, n
Trong đó:
+) τi , βj là các hằng số đặc trưng cho sự khác biệt về giá trị trung bình µ của
X do tác động của hai nhân tố A và B .
+) (τ β)ij là các hằng số đặc trưng cho sự khác biệt về giá trị trung bình µ
của X do tác động tổng hợp của hai nhân tố (A, B ) ở mức (i, j ).
+) Các sai số ngẫu nhiên ijk độc lập với nhau, tuân theo quy luật phân phối
chuẩn N (µ, σ2 ).
B
1 2 ... n
A
1 X111 , X112 , ..., X11q X121 , X122 , ..., X12q ... X1n1 , X1n2 , ..., X1nq
2 X211 , X212 , ..., X21q X221 , X222 , ..., X22q ... X2n1 , X2n2 , ..., X2nq
... ... ... ... ...
m Xm11 , Xm12 , ..., Xm1q Xm21 , Xm22 , ..., Xm2q ... Xmn1 , Xmn2 , ..., Xmnq
Tổng bình phương độ lệch toàn bộ quan sát (ký hiệu SST ):
m X q
n X
X 2
SST = Xijk − X ∗∗∗
i=1 j=1 k=1
m X n X q 2
X
2 X∗∗∗
= Xijk −
mnq
i=1 j=1 k=1
17
Ta biến đổi công thức trên như sau:
q
n X
m X
X 2
SST = Xijk − X ∗∗∗
i=1 j=1 k=1
m n
X 2 X 2
= nq X i∗∗ − X ∗∗∗ + mq X ∗j∗ − X ∗∗∗
i=1 j=1
m X
n m X q
n X
X 2 X 2
+q X ij∗ − X i∗∗ − X ∗j∗ + X ∗∗∗ + Xijk − X ij∗
i=1 j=1 i=1 j=1 k=1
Trong đó:
- Tổng bình phương độ lệch từng yếu tố hàng (ký hiệu SSA ):
m
X 2
SSA = nq X i∗∗ − X ∗∗∗
i=1
m
X X2 2
i∗∗ X∗∗∗
= −
nq mnq
i=1
- Tổng bình phương độ lệch từng yếu tố cột (ký hiệu SSB ):
n
X 2
SSB = mq X ∗j∗ − X ∗∗∗
j=1
n 2 2
X X∗j∗ X∗∗∗
= −
mq mnq
j=1
- Tổng bình phương độ lệch yếu tố tương tác giữa A và B (ký hiệu SSAB ):
m X
n
X 2
SSAB = q X ij∗ − X i∗∗ − X ∗j∗ + X ∗∗∗
i=1 j=1
m n 2 m n 2
XX Xij∗ X X2 i∗∗
X X∗j∗ 2
X∗∗∗
= − − +
q nq mq mnq
i=1 j=1 i=1 j=1
- Tổng bình phương độ lệch của sai số ngẫu nhiên (ký hiệu SSE ):
m X q
n X
X 2
SSE = Xijk − X ij∗
i=1 j=1 k=1
Bậc tự do của SST là (mnq − 1), của SSA là (m − 1), của SSB là (n − 1), của SSE
là mn(q − 1) và của SSAB là (m − 1)(n − 1).
Phân tích sự tác động của hai nhân tố A và B tương đương với việc kiểm định
các cặp giả thuyết sau:
18
Bài toán kiểm định giả thuyết 1
H A : τ1 = τ2 = ... = τm = 0
0
H A : Tồn tại ít nhất một τ 6= 0
1 i
Các kết quả được tính ở trên được trình bày trong bảng sau đây:
Nguồn SS Bậc tự do MS F0
Nhân tố A SSA (m − 1) M SA M SA /M SE
Nhân tố B SSB (n − 1) M SB M SB /M SE
Tương tác (A, B) SSAB (m − 1)(n − 1) M SAB M SAB /M SE
Sai số SSE mn(q − 1) M SE
Tổng SST mnq − 1
19
20
Chương 3
R là một ngôn ngữ lập trình có môi trường tính toán và đồ họa thống kê
mạnh mẽ, được phát triển bởi Ross Ihaka và Robert Gentleman vào những năm
1990 và đã trở thành một trong những công cụ phổ biến nhất trong lĩnh vực thống
kê và khoa học dữ liệu. R được thiết kế đặc biệt để xử lý, phân tích và biểu đồ hóa
dữ liệu.
R cung cấp một loạt các gói phần mềm và thư viện mở rộng để hỗ trợ các
tác vụ thống kê phức tạp, khai phá dữ liệu, hồi quy, phân tích chuỗi thời gian, học
máy và nhiều chức năng khác. Bên cạnh đó, R cung cấp một giao diện dòng lệnh
tương tác, cho phép người dùng thực hiện các câu lệnh và xem kết quả ngay lập
tức. Ngoài ra, có nhiều môi trường phát triển tích hợp (IDE) như RStudio giúp
tăng cường trải nghiệm lập trình và phân tích dữ liệu.
Một trong những ưu điểm của R chính là cộng đồng người dùng khá đông
đảo. Cộng đồng này liên tục phát triển các gói lệnh (package) mở rộng mới và chia
sẻ kiến thức, kinh nghiệm thông qua các tài liệu, blog và diễn đàn trực tuyến, điều
này giúp người dùng R dễ dàng tìm thấy tài nguyên cần thiết và được hỗ trợ nhiệt
tình.
Hiện nay, R được sử dụng rộng rãi trong các lĩnh vực như thống kê, khoa học
dữ liệu, tài chính, kinh tế, y học và nhiều lĩnh vực khác. Với khả năng mạnh mẽ
và tính linh hoạt, R đã trở thành công cụ không thể thiếu cho các nhà nghiên cứu
khoa học và nhà phân tích dữ liệu trên toàn thế giới.
Trong chương này, chúng tôi sẽ trình bày cách sử dụng ngôn ngữ R trong
phân tích phương sai.
21
3.1 Ví dụ 1
3.1.1 Mô tả dữ liệu và bài toán
Bộ dữ liệu được sử dụng trong ví dụ này là bupa.data, dữ liệu gồm các chỉ số
xét nghiệm máu được cho là nhạy cảm với rối loạn gan có thể liên quan đến việc sử
dụng nhiều đồ uống có cồn như bia, rượu. Dữ liệu và mô tả chi tiết có thể tham khảo
qua đường dẫn sau: (http://archive.ics.uci.edu/ml/datasets/Liver+Disorders).
Mỗi bản ghi của dữ liệu cho biết thông tin về chỉ số xét nghiệm và lượng cồn
được hấp thu vào theo ngày của một bệnh nhân nam cụ thể.
Bộ dữ liệu bao gồm 345 bản ghi và 7 trường dữ liệu, tuy nhiên trong ví dụ
này chúng ta chỉ xét 2 trường dữ liệu sau:
- "mcv": thể tích tiểu cầu trung bình.
- "drinkgroup": được tạo bởi trường dữ liệu "drink" (trong đó dữ liệu trường
"drink" là lượng đồ uống có cồn người đó uống mỗi ngày được tính bằng đơn vị
half-pint (1/2 pint)) bằng cách phân loại lượng đồ uống có cồn người đó uống mỗi
ngày thành 5 nhóm:
+ Nhóm 1: lượng đồ uống có cồn tiêu thụ nhỏ hơn 1 (1/2 pint).
+ Nhóm 2: lượng đồ uống có cồn tiêu thụ trong khoảng từ 1 đến dưới 3 (1/2
pint).
+ Nhóm 3: lượng đồ uống có cồn tiêu thụ trong khoảng từ 3 đến dưới 6 (1/2
pint).
+ Nhóm 4: lượng đồ uống có cồn tiêu thụ trong khoảng từ 6 đến dưới 9 (1/2
pint).
+ Nhóm 5: lượng đồ uống có cồn tiêu thụ lớn hơn 9 (1/2 pint).
Mục tiêu của bài toán đặt ra là chỉ số thể tích tiểu cầu trung bình ("mcv")
giữa các nhóm phân loại theo lượng đồ uống có cồn có sự khác biệt hay không?
Để giải quyết bài toán trên chúng ta sẽ tiến hành phân tích phương sai một
yếu tố (one-way ANOVA) với R.
Chúng ta tiến hành đọc dữ liệu từ file bupa.data vào R bằng cách dùng lệnh
read.table() như đoạn code dưới đây:
22
data _ mcv <- read . table ( " bupa . data " , header = FALSE ,
sep = " ," )
data _ mcv <- data _ mcv [ , c (1 ,6)]
colnames ( data _ mcv ) <- c ( " mcv " ," drink " )
str ( data _ mcv )
Output:
Chúng ta có thể dùng lệnh summary() để xem mô tả chi tiết thêm về dữ liệu
như sau:
Output:
## mcv drink
## Min. : 65.00 Min. : 0.000
## 1st Qu.: 87.00 1st Qu.: 0.500
## Median : 90.00 Median : 3.000
## Mean : 90.16 Mean : 3.455
## 3rd Qu.: 93.00 3rd Qu.: 6.000
## Max. :103.00 Max. :20.000
Bước tiếp theo chúng ta tạo một cột dữ liệu "drinkgroup" gồm 5 nhóm từ cột
"drink" theo như mô tả dữ liệu ban đầu và định nghĩa biến "drinkgoup" là một
yếu tố - factor:
23
data _ mcv <- data _ mcv [ , c (1 ,3)]
str ( data _ mcv )
Output:
Sau khi định nghĩa biến "drinkgroup" là một yếu tố - factor, chúng ta xem
số lượng bản ghi của mỗi nhóm bằng lệnh table():
Output:
##
## group1 group2 group3 group4 group5
## 117 52 88 67 21
Ta thấy số lượng bản ghi mỗi nhóm không bằng nhau (hay còn gọi là mẫu
không cân bằng), tuy nhiên vì chúng ta đang phân tích one-way ANOVA với một
biến độc lập nên việc mất cân bằng dữ liệu trong trường hợp này là không ảnh
hưởng đến việc phân tích phương sai.
Trước khi tiến hành phân tích phương sai, chúng ta nhìn qua biểu đồ hộp
(boxplot) để có một cái nhìn trực quan về dữ liệu đang xét:
Output:
24
Mean Corpuscular Volume Distribution by Drink Group
100
Mean Corpuscular Volume (mcv)
90
80
70
Drink Group
Từ biểu đồ trên thì chúng ta nhận thấy rằng ở nhóm group1, group2 và group3
có sự khác biệt không đáng kể hay độ dao động giữa 3 nhóm không khác nhau là
bao nhiêu. Tuy nhiên chẳng hạn giữa group1 với group 5 thì lại có sự khác biệt
đáng kể. Với phân tích phương sai thì biểu đồ boxplot là một trong những biểu đồ
quan trọng, mà nó cho chúng ta thấy được một cách nhìn dữ liệu tổng quan trước
khi xử lý các bước tiếp theo.
Để phân tích phương sai ANOVA chúng ta cần phải kiểm tra giả định phương
sai các nhóm dữ liệu đồng nhất có được thỏa mãn hay không bằng việc sử dụng
kiểm định Levene (Levene’s Test).
Trước hết ta phải khai báo gói thư viện "car":
library ( car )
Output:
Sau khi khai báo goi thư viện "car", ta sử dụng lệnh leveneTest() để tiến hành
kiểm định:
leveneTest ( mcv ~ drinkgroup , data _ mcv )
Output:
25
## Levene’s Test for Homogeneity of Variance (center = median)
## Df F value Pr(>F)
## group 4 0.3053 0.8744
## 340
Giá trị p (p-value) là 0.8744 > 0.05 nên không đủ cơ sở để bác bỏ giả thuyết
H0 hay nói cách khác là chấp nhận giả thuyết phương sai giữa các nhóm là đồng
nhất.
Tiếp theo chúng ta sử dụng hàm aov() để phân tích phương sai như sau:
Trong câu lệnh trên chúng ta cho R biết là biến "mcv" là một hàm số của
"drinkgroup". Bây giờ chúng ta dùng lệnh summary() để biết chi tiết kết quả phân
tích phương sai:
Output:
Trong kết quả trên, có ba cột: Df (degrees of freedom) là bậc tự do; Sum Sq
là tổng bình phương (sum of squares); Mean Sq là trung bình bình phương (mean
square); F value là giá trị kiểm định F; và Pr(>F) là trị số p liên quan đến kiểm
định F.
Dòng drinkgroup trong kết quả trên có nghĩa là bình phương giữa các nhóm
(between-groups) và Residuals là bình phương trong mỗi nhóm (within-group).
Ở đây, chúng ta có:
26
Để sử dụng được kết quả phân tích phương sai trên thì ta phải kiểm tra thêm
giả định ban đầu đề ra là các sai số ngẫu nhiên tuân theo phân phối chuẩn N(0;σ 2 )
(hay các nhóm so sánh phải có phân phối chuẩn hoặc tiệm cận phân phối chuẩn)
bằng cách xem qua biểu đồ sau:
Output:
Standardized residuals
Residuals vs Fitted Q−Q Residuals
237 69 237 69
2
Residuals
−2
−20
224 224
89 90 91 92 −6 −3 −2 −1 0 1 2 3
Standardized residuals
237 69
1.0
−2
184
−6
Cook's distance
0.0
224
Qua các biểu đồ trên, chúng ta có một số nhận xét như sau:
+) Đồ thị bên trái dòng 1 vẽ phần dư và giá trị dự đoán chỉ số "mcv" . Đồ
thị này cho thấy các giá trị phần dư đều chung quanh đường thẳng y = 0, cho nên
giả định phần dư (hay sai số ngẫu nhiên) có giá trị trung bình 0 là có thể chấp
nhận được.
+) Đồ thị bên phải dòng 1 (QQ-plot) vẽ giá trị phần dư và giá trị kì vọng dựa
vào phân phối chuẩn. Chúng ta thấy các số phần dư tập trung rất gần các giá trị
trên đường chuẩn, và do đó giả định các sai số ngẫu nhiên tuân theo quy luật phân
phối chuẩn cũng có thể thỏa mãn, tức là các nhóm so sánh có phân phối chuẩn.
27
giá trị của dự đoán chỉ số "mcv". Đồ thị này cho thấy không có gì khác nhau giữa
các số phần dư chuẩn cho các giá trị dự đoán, và do đó giả định phương sai đồng
nhất giữa các nhóm cũng có thể đáp ứng (phù hợp với kết quả kiểm định Levene).
Vì các giả định ban đầu được thỏa mãn nên ta có thể sử dụng kết quả phân
tích phương sai trên, nghĩa là chỉ số "mcv" giữa 5 nhóm trên có sự khác biệt.
Tuy nhiên, phân tích ANOVA chỉ cho chúng ta biết là có sự khác biệt giữa
các nhóm hay không mà không biết mức độ khác biệt cũng như khoảng tin cậy
95% giữa các nhóm. Để có những ước số này, chúng ta cần đến một hàm khác có
tên là hàm TukeyHSD (HSD là viết tắt từ Honest Significant Difference) như sau:
Output:
Kết quả trên cho chúng ta thấy sự khác biệt giữa group4 - group1 ; group5 -
group1; group4 - group2 và group4 - group3 là có ý nghĩa thống kê (p-value<0,05).
3.2 Ví dụ 2
3.2.1 Mô tả dữ liệu
Dữ liệu trong ví dụ này mô tả mức lương (Salary) theo từng ngành nghề
(Profession) và khu vực (Region). Trong trường "Profession" phân ra làm 3 loại
28
là: Data Scientist, Software Enginner và BI Engineer; còn trường "Region" cũng
gồm 3 nơi là: San Francisco, New York và Seattle. Dữ liệu được lấy từ đường dẫn:
(https://github.com/ywchiu/rcookbook/raw/master/ chapter5/engineer.csv).
Để xem xét xem liệu mức lương của người làm ở các ngành nghề và ở từng
khu vực có sự khác biệt hay không? Liệu giữa yếu tố ngành nghề và khu vực có
sự tương tác với nhau hay không? Chúng ta sẽ tiến hành phân tích phương sai hai
yếu tố.
data _ salary <- read . csv ( " engineer . csv " , header = TRUE )
Output:
Vì cột đầu tiên chính là chỉ số index nên chúng ta không dùng, chỉ lấy 3 cột
sau. Chúng ta có thể xem mô tả thông tin dữ liệu qua lệnh summary() như sau:
Output:
29
Sau đó chúng ta kiểm tra xem có bao nhiêu mẫu dữ liệu của từng ngành nghề
cụ thể:
Output:
##
## BI Engineer Data Scientist Software Engineer
## 60 60 60
Chúng ta cũng kiểm tra tương tự đối với phân loại theo khu vực:
Output:
##
## New York San Francisco Seattle
## 60 60 60
Kết quả trên chúng ta thấy ngành nghề và khu vực đều phân loại thành 3
nhóm và mỗi nhóm tương ứng đều có số quan sát là 60, nên dữ liệu trên có mẫu
cân bằng.
Chúng ta cùng xem trực quan dữ liệu trên qua biểu đồ boxplot dưới đây. Đầu
tiên chúng ta xem qua biểu đồ thể hiện mức lương của ba ngành nghề khác nhau
theo khu vực:
Output:
30
Boxplot of Salary by Profession in 3 Regions
Region New York San Francisco Seattle
125000
Salary
100000
75000
Như chúng ta có thể thấy từ biểu đồ trên, nhóm ngành nghề Data Scientist
được trả lương cao nhất trong cả 3 nghề ở cả 3 khu vực, tiếp theo là nhóm Software
Engineer và thấp nhất là BI Engineer. Ngoài ra, ở khu vực New York là nơi được
trả lương ít nhất trong cả ba ngành nghề.
Chúng ta có thể xem mức lương theo từng ngành nghề và từng khu vực qua
hai biểu đồ boxplot dưới đây.
Trước tiên là biểu đồ thể hiện mức lương theo từng ngành nghề:
Output:
31
Boxplot of Salary by Profession
125000
Profession
Salary
BI Engineer
100000
Data Scientist
Software Engineer
75000
Nhìn biểu đồ trên ta thấy sự phân bố mức lương của Data Scientist cao nhất,
tiếp theo là Software Engineer và thấp nhất là BI Engineer.
Tiếp theo là biểu đồ thể hiện mức lương theo từng khu vực:
Output:
32
Boxplot of Salary by Region
125000
Region
Salary
New York
100000
San Francisco
Seattle
75000
Nhìn biểu đồ trên ta thấy giữa 2 khu vực San Francisco và Seattle khoảng
lương không có sự chênh lệch đáng kể và New York là nơi có khoảng lương thấp
nhất trong cả 3 khu vực.
Giống như phân tích phương sai một yếu tố, chúng ta cũng kiểm tra xem dữ
liệu có thỏa mãn các giả định các nhóm so sánh có phân phối chuẩn hoặc tiệm cận
phân phối chuẩn hay không cũng như là phương sai giữa các nhóm có đồng nhất
hay không?
Chúng ta kiểm tra giả định các nhóm so sánh có phân phối chuẩn hoặc tiệm
cận phân phối chuẩn hay không trước:
Output:
33
Normal Q−Q Plot
3
2
Sample Quantiles
1
0
−1
−2
−2 −1 0 1 2
Theoretical Quantiles
Nhìn vào biểu đồ QQ-plot thấy các điểm gần như nằm trên đường chuẩn cho
nên giả định các nhóm so sánh có phân phối chuẩn hoặc tiệm cận phân phối chuẩn
được thỏa mãn.
Sau đó, ta sẽ kiểm tra giả định phương sai giữa các nhóm có đồng nhất hay
không bằng cách dùng kiểm định Levene (Levene’s Test):
Output:
Giá trị p-value > 0.05 nên ta không có đủ cơ sở bác bỏ giả thuyết H0 , nghĩa
là ta chấp nhận giả thuyết phương sai giữa các nhóm là đồng nhất.
34
Để xem qua độ ảnh hưởng của hai yếu tố ngành nghề và khu vực, chúng ta
cần phải có một đồ thị, mà trong phân tích phương sai gọi là đồ thị tương tác.
Hàm interaction.plot cung cấp phương tiện đề vẽ biều đồ này:
Output:
Interaction Plot
110000
data_salary$Profession
Data Scientist
Software Engineer
BI Engineer
100000
Salary
90000
80000
Region
Nhìn vào đồ thị tương tác, ta thấy có vẻ yếu tố ngành nghề có tương tác với yếu
tố khu vực. Để cho phân tích hoàn tất và xem xét đến khả năng ảnh hưởng của hai
yếu tố có thể tương tác nhau, ta tiến hành phân tích phương sai hai yếu tố như sau:
Output:
35
## Profession 2 2.386e+10 1.193e+10 86.098 < 2e-16 ***
## Region 2 4.750e+09 2.375e+09 17.143 1.64e-07 ***
## Profession:Region 4 3.037e+09 7.593e+08 5.481 0.000355 ***
## Residuals 171 2.369e+10 1.385e+08
## ---
## Signif. codes: 0 ’***’ 0.001 ’**’ 0.01 ’*’ 0.05 ’.’ 0.1 ’ ’ 1
Kết quả phân tích yếu tố ngành nghề (Profession) và yếu tố khu vực (Region)
đều có giá trị p-value < 0.05, tức là mức lương giữa các ngành nghề cũng như giữa
các khu vực có sự khác biệt có ý nghĩa thống kê. Đồng thời, ở yếu tố tương tác,
giá trị p-value = 0.000355 nên chúng ta có đủ cơ sở để kết luận rằng ảnh hưởng
tương tác giữa yếu tố ngành nghề và khu vực có ý nghĩa thống kê.
Chúng ta sẽ ước tính độ khác biệt giữa ba ngành nghề và ba khu vực bằng
hàm TukeyHSD với aov:
Output:
Kết quả cho thấy sự khác biệt giữa Data Scientist-BI Engineer, Software
Engineer-BI Engineer và Software Engineer-Data Scientist đều có ý nghĩa thống
kê (giá trị p-value < 0.05).
36
Output:
Đối với yếu tố khu vực, thì chỉ có sự khác biệt giữa San Francisco-New York,
Seattle-New York là có ý nghĩa thống kê. Còn nhóm Seattle-San Francisco thì sự
khác biệt không có ý nghĩa thống kê (giá trị p-value = 0.2380471 < 0.05).
37
Kết luận
Khóa luận này tôi đã trình bày một số kiến thức cở sở, khái niệm thế nào là
mô hình phân tích phương sai, phân tích phương sai gồm có những loại nào và nó
có ứng dụng như thế nào trong đời sống, đặc biệt là cách sử dụng ngôn ngữ R để
giải quyết bài toán phân tích phương sai thực tế.
Tuy nhiên do thời gian có hạn và chưa có nhiều kinh nghiệm nên những vấn
đề mà tôi trình bày trong khóa luận này sẽ không tránh khỏi những thiếu sót. Vì
vậy tôi rất mong nhận được sự đóng góp ý kiến của các quý thầy, cô để khóa luận
được hoàn thiện hơn.
Tôi xin chân thành xảm ơn!
38
39
Tài liệu tham khảo
[1] Đào Hữu Hồ, Xác suất thống kê, Nhà xuất bản Đại học Quốc gia Hà Nội,
2007.
[2] PGS. TS. Nguyễn Cao Văn - TS. Trần Thái Ninh, Giáo trình lý thuyết xác
suất và thống kê toán, Nhà xuất bản thống kê, 2005.
[3] Robert I. Kabacof, R in Action: Data analysis and graphics with R (2nd edi-
tion), Manning, 2015.
[4] Sheldon M. Ross, Introduction to Probability and Statistics for Engineers and
Scientist (5th edition), 2014.
[6] Yu-Wei, Chiu (David Chiu), R for Data Science Cookbook, Packt Publishing,
2016.
40