You are on page 1of 48

BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC QUY NHƠN


——————————————–

KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC


Ngành Toán ứng dụng

Tên đề tài: PHÂN TÍCH PHƯƠNG SAI ANOVA

Người hướng dẫn: TS. Lê Thanh Bính

Sinh viên thực hiện: Tống Trần Minh Quang

Mã số sinh viên: 4251140011

Lớp: Toán ứng dụng K42

Bình Định, năm 2023


Mục lục

Lời nói đầu iii

Một số kí hiệu viết tắt v

1 Một số kiến thức cơ sở 1


1.1 Biến ngẫu nhiên . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.1 Khái niệm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.2 Phân loại . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.3 Các số đặc trưng của biến ngẫu nhiên . . . . . . . . . . . . . 2
1.2 Hàm phân phối . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.1 Khái niệm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.2 Tính chất . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.3 Một số hàm phân phối thường gặp . . . . . . . . . . . . . . . 4
1.3 Mẫu ngẫu nhiên . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3.1 Khái niệm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3.2 Đặc trưng mẫu . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.4 Kiểm định giả thuyết . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.4.1 Khái niệm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.4.2 Tiêu chuẩn kiểm định giả thuyết thống kê . . . . . . . . . . . 7
1.4.3 Miền bác bỏ giả thuyết . . . . . . . . . . . . . . . . . . . . . . 7
1.4.4 Giá trị quan sát của tiêu chuẩn kiểm định . . . . . . . . . . . 8
1.4.5 Sai lầm trong bài toán kiểm định giả thuyết . . . . . . . . . 8

2 Phân tích phương sai ANOVA 9


2.1 Giới thiệu tổng quan về phân tích phương sai . . . . . . . . . . . . . 9
2.2 Phân tích phương sai một yếu tố
(one-way ANOVA) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2.1 Mô hình lý thuyết . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2.2 So sánh trung bình cặp . . . . . . . . . . . . . . . . . . . . . . 13
2.3 Phân tích phương sai hai yếu tố
(two-way ANOVA) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.3.1 Phân tích phương sai hai yếu tố không lặp . . . . . . . . . . 14
2.3.2 Phân tích phương sai hai yếu tố có lặp . . . . . . . . . . . . 16

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

Tài liệu tham khảo 40

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.

Trong khóa luận này, chúng tôi chia làm 3 chương:


Chương 1: Một số kiến thức cơ sở.
Chương 2: Phân tích phương sai ANOVA.
Chương 3: Thực hành phân tích phương sai với R.

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

Tôi xin chân thành cảm ơn.

Quy Nhơn, ngày tháng 05 năm 2023

Sinh viên

Tống Trần Minh Quang

iv
Một số kí hiệu viết tắt

v
Chương 1

Một số kiến thức cơ sở

1.1 Biến ngẫu nhiên


1.1.1 Khái niệm
Một đại lượng (hay một biến) nhận các giá trị của nó với xác suất tương ứng
nào đấy gọi là đại lượng ngẫu nhiên hay biến ngẫu nhiên.
Ta thường ký hiệu biến ngẫu nhiên bởi các chữ X, Y, Z, ... hoặc ξ, η, ζ, ...
Các giá trị mà biến ngẫu nhiên nhận thường viết bằng chữ nhỏ x, y, z, ...

1.1.2 Phân loại


Căn cứ vào giá trị mà biến ngẫu nhiên nhận ta phân các biến ngẫu nhiên ra
làm 2 loại chính: biến ngẫu nhiên rời rạc và biến ngẫu nhiên liên tục.

Biến ngẫu nhiên rời rạc

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

1.1.3 Các số đặc trưng của biến ngẫu nhiên


Kỳ vọng (giá trị trung bình)

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

V ar(X) = E[X − E(X)]2


p
Ký hiệu σ = V ar(X) được gọi là độ lệch chuẩn của X.
Dựa theo định nghĩa và tính chất của kỳ vọng, ta có:
V ar(X) = E[X − E(X)]2 = E{X 2 − 2XE(X) + [E(X)]2 }
= E(X 2 ) − 2E(X)E(X) + [E(X)]2 = E(X 2 ) − [E(X)]2

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

Còn đối với X là biến ngẫu nhiên liên tục :


Z +∞ Z +∞
V ar(X) = [x − E(X)]2 f (x)dx = x2 f (x)dx − [E(X)]2
−∞ −∞

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

1.2 Hàm phân phối


1.2.1 Khái niệm
Cho biến ngẫu nhiên X , ta xác định hàm phân phối của X như sau:

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 .

1.2.2 Tính chất


Hàm phân phối của biến ngẫu nhiên có một số tính chất cơ bản sau:
(i) Hàm phân phối xác định ∀x ∈ (−∞; +∞)
(ii) 0 ≤ F (x) ≤ 1, ∀x ; lim P (X < x) = 0 , lim P (X < x) = 1
x→−∞ x→+∞
(iii) Hàm phân phối là hàm không giảm: nếu x1 < x2 thì F (x1 ) ≤ F (x2 )
(iv) P (a ≤ X < b) = F (b) − F (a)

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 < +∞

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

Phân phối Chi bình phương (Chi-square)

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

Phân phối Student

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

Phân phối Fisher

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)

Giả sử X, Y là hai biến ngẫu nhiên độc lập và X ∼ χ2 (n1 ) , Y ∼ χ2 (n2 ).


X/n1
Nếu xét biến ngẫu nhiên F = thì F có phân phối Fisher với n1 và n2 bậc tự
Y /n2
do, F ∼ F (n1 , n2 ).

1.3 Mẫu ngẫu nhiên


1.3.1 Khái niệm
Tiến hành n quan sát độc lập về biến ngẫu nhiên X nào đó. Gọi Xi là việc
quan sát lần thứ i về biến ngẫu nhiên X . Khi đó (X1 , X2 , ..., Xn ) được gọi là mẫu
ngẫu nhiên, n được gọi là cỡ mẫu hay số lần quan sát. Như vậy mẫu ngẫu nhiên cỡ
n thực chất là n biến ngẫu nhiên độc lập, cùng phân phối như biến ngẫu nhiên X .
Từ nay về sau khi nói rằng ta có một mẫu ngẫu nhiên cỡ n được rút ra từ
biến ngẫu nhiên X , ta sẽ hiểu đó là n biến ngẫu nhiên độc lập cùng phân phối nếu
ta không quan tâm đến kết quả cụ thể quan sát được.

5
1.3.2 Đặc trưng mẫu
Kỳ vọng mẫu (trung bình mẫu)

Cho biến ngẫu nhiên X có kỳ vọng E(X) = µ, phương sai V ar(X) = σ 2 và


mẫu ngẫu nhiên từ X là (X1 , X2 , ..., Xn ).
n
1X
Trung bình mẫu, ký hiệu X : X= Xi
n
i=1
Do X1 , X2 , ..., Xn là các biến ngẫu nhiên độc lập cùng phân phối như X , nên trung
bình mẫu cũng là một biến ngẫu nhiên. Do đó kỳ vọng và phương sai của X như
sau: n
1X 1
E(X) = E(Xi ) = .n.E(X) = µ
n n
i=1
n
1X 1 V ar(X) σ2
V ar(X) = V ar(Xi ) = 2 .n.V ar(X) = =
n n n n
i=1

Phương sai mẫu


n n
" #
1X 1 X
s2 = (Xi − X)2 = Xi2 − n(X)2
n n
i=1 i=1

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

1.4 Kiểm định giả thuyết


1.4.1 Khái niệm
Giả thuyết: một mệnh đề (một câu khẳng định) về một vấn đề chưa biết nào
đó được gọi là giả thuyết.
Giả thuyết thống kê: giả thuyết thống kê là những phát biểu về các tham số,
quy luật phân phối, hoặc tính độc lập của các đại lượng ngẫu nhiên.
Kiểm định giả thuyết là việc tìm ra kết luận để bác bỏ hay chấp nhận một
giả thuyết.
Trong bài toán kiểm định giả thuyết, giả thuyết cần được kiểm định gọi là
giả thuyết không, ký hiệu là H0 ; mệnh đề đối lập với H0 gọi là đối thuyết, ký hiệu
là H1 .

1.4.2 Tiêu chuẩn kiểm định giả thuyết thống kê


Từ biến ngẫu nhiên gốc X của tổng thể lập mẫu ngẫu nhiên kích thước 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.

1.4.3 Miền bác bỏ giả thuyết


Sau khi đã chọn được tiêu chuẩn kiểm định T , do quy luật phân phối xác suất
của T đã biết nên với một xác suất α khá bé cho trước (thường α lấy bằng 0,05
hoặc 0,01) có thể tìm được miền Wα tương ứng sao cho với điều kiện giả thuyết H0
đúng xác suất đẻ T nhận giá trị thuộc miền Wα bằng α:

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 :

Tqs = T (x1 , x2 , ..., xn , θ0 ).

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

Phân tích phương sai ANOVA

2.1 Giới thiệu tổng quan về phân tích phương sai


Phương pháp phân tích phương sai (Analysis of Variance) hay còn gọi là kiểm
định ANOVA được dùng khi nghiên cứu ảnh hưởng của biến nguyên nhân định
tính lên biến kết quả định lượng, phương pháp này so sánh trung bình của nhiều
nhóm (3 nhóm trở lên). Mục tiêu của phân tích phương sai là so sánh trung bình
của nhiều nhóm (tổng thể) dựa trên các số trung bình của các mẫu quan sát từ
các nhóm này và thông qua kiểm định giả thuyết để kết luận về sự bằng nhau của
các số trung bình này.

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ê.

2.2 Phân tích phương sai một yếu tố


(one-way ANOVA)
2.2.1 Mô hình lý thuyết
Giả sử biến ngẫu nhiên X tuân theo quy luật phân phối chuẩn với trung bình
µ và phương sai σ 2 (X ∼ N (µ, σ 2 )) và một nhân tố F tác động lên X có k mức khác
nhau. Vì vậy, ứng với mỗi mức nhân tố i ta có biến ngẫu nhiên Xi cũng tuân theo
quy luật phân phối chuẩn N (µi , σi2 ). Do giả thiết ban đầu ta đặt ra là phương sai
giữa các nhóm phải đồng nhất nên Xi ∼ N (µi , σ 2 ). Nếu tiến hành quan sát Xi bằng
cách lấy một mẫu ngẫu nhiên kích thước ni (Xi1 , Xi2 , ..., Xini ) (i = 1, 2, ..., k) thì
ta có:

Xij = µ + τi + ij (j = 1, 2, ..., ni ) (2.1)

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

Cặp giả thuyết trên tương đương với:



H0 : µ1 = µ2 = ... = µ
k
H : Tồn tại cặp (i, j) với i 6= j sao cho µ 6= µ
1 i j

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

Ta có các đại lượng sau:


Xk
- Tổng số quan sát: n = ni
i=1
ni
1 X
- Trung bình mẫu nhóm i: Xi = Xij (i = 1, 2, ..., k )
ni
j=1
k ni
1 XX
- Trung bình mẫu chung của k nhóm: X = Xij
n
i=1 j=1

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

Mối quan hệ giữa ba đại lượng trên như sau:

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:

Bảng ANOVA một yếu tố

Tổng bình phương Bậc tự do Trung bình bình phương Tỉ số F0


M SF
Nhân tố SSF k−1 M SF M SE
Sai số SSE n−k M SE
Tổng SST n−1

2.2.2 So sánh trung bình cặp


Mô hình phân tích phương sai trình bày ở trên chỉ trực tiếp cho một kết luận
chung là các trung bình nhóm có khác nhau hay không. Trong trường hợp các
trung bình nhóm không đồng nhất, nghĩa là vẫn có ít nhất hai nhóm mà số trung
bình của chúng khác nhau có ý nghĩa về mặt thống kê chứ không phải tất cả số
trung bình của các nhóm đều khác nhau đôi một. Phân tích phương sai nhờ so
sánh trung bình cặp cần thiết trong cả hai trường hợp của kết luận nhận được từ
kiểm định trên.
Có một số phương pháp để so sánh sự khác biệt này. Ở đây chúng ta xem xét
phương pháp "Sai biệt nhỏ nhất có ý nghĩa" (Least Significant Difference - LSD)
do Fisher đề xuất. Trong phương pháp này, ta so sánh trị số tuyệt đối của hiệu số
Xi − Xj của hai nhóm i và j với giá trị LSD được xác định bằng công thức sau:
s  
1 1
LSD = tα/2,N −k M SE +
ni nj

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ê.

2.3 Phân tích phương sai hai yếu tố


(two-way ANOVA)
Trên thực tế, một biến định lượng không chỉ chịu tác động của một nhân tố
mà có thể chịu tác động của hai hoặc nhiều nhân tố.
Giả sử chúng ta xét biến ngẫu nhiên X có phân phối chuẩn X ∼ N (µ, σ 2 )
và hai nhân tố A và B . Nhân tố A có m mức (i = 1, m) và nhân tố B có n mức
(j = 1, n). Chúng ta có hai mô hình phân tích phương sai sau đây:

2.3.1 Phân tích phương sai hai yếu tố không lặp


Trong mô hình này, chúng ta giả thiết rằng A và B cùng tác động lên X ,
nhưng một cách riêng rẽ, tức là giữa A và B không có mối quan hệ cùng tác động
đồng thời lên X .
Mô hình phân tích phương sai hai yếu tố không lặp:

Xij = µ + τi + βj + ij (i = 1, m; j = 1, n) (2.2)

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

Ta có thể biến đổi công thức trên như sau:


m X n
X 2
SST = Xij − X
i=1 j=1
m n m X
n
X 2 X 2 X 2
= n Xi∗ − X + m X∗j − X + Xij − Xi∗ − X∗j + X
i=1 j=1 i=1 j=1

= SSA + SSB + SSE


Trong đó:
- 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ố A (ký hiệu SSA ) là:
m m
! m X n
!2
X 2 1 X 1 X
2
SSA = n Xi∗ − X = Xi∗ − Xij
n mn
i=1 i=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

= SST − SSA − SSB

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)

Bài toán kiểm định giả thuyết 2



H B : β1 = β2 = ... = βn = 0
0
H B : Tồn tại ít nhất một β =
1 i 6 0

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:

Bảng ANOVA hai yếu tố (không lặp)

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

2.3.2 Phân tích phương sai hai yếu tố có lặp


Trong mô hình này ở mỗi một nhóm tương ứng với một cặp mức nhân tố (i, j )
ta cần phải có số quan sát lớn hơn 1. Giả sử ở tất cả các nhóm đều có số quan sát
là như nhau và bằng q (gọi là mẫu cân bằng), ta có mô hình phân tích phương sai
hai yếu tố tác động tổng hợp như sau:

Xijk = µ + τi + βj + (τ β)ij + ijk (2.3)

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

Đối với mô hình này ta có bảng dữ liệu như sau:

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

Ta ký hiệu một số đại lượng sau:


m X q
n X
X X∗∗∗
X∗∗∗ = Xijk X ∗∗∗ =
mnq
i=1 j=1 k=1
n X q
X Xi∗∗ 
Xi∗∗ = Xijk X i∗∗ = i = 1, m
nq
j=1 k=1
m X q
X X∗j∗ 
X∗j∗ = Xijk X ∗j∗ = j = 1, n
mq
i=1 k=1
q
X Xij∗ 
Xij∗ = Xijk X ij∗ = i = 1, m ; j = 1, n
q
k=1

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

= SSA + SSB + SSAB + SSE

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

= SST − SSA − SSB − SSAB

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

Miền bác bỏ để kiểm định cặp giả thuyết trên là:


 
SSA /(m − 1) M SA
Wα = F0 = = : F0 > fα [(m − 1), mn(q − 1)]
SSE /mn(q − 1) M SE

Bài toán kiểm định giả thuyết 2



H B : β1 = β2 = ... = βn = 0
0
H B : Tồn tại ít nhất một β 6= 0
1 i

Miền bác bỏ để kiểm định cặp giả thuyết trên là:


 
SSB /(n − 1) M SB
Wα = F0 = = : F0 > fα [(n − 1), mn(q − 1)]
SSE /mn(q − 1) M SE

Bài toán kiểm định giả thuyết 3



H AB : (τ β)ij = 0 với mọi (i, j) : i = 1, m; j = 1, n
0
H AB : Tồn tại ít nhất một cặp (i, j) : (τ β) 6= 0
1 ij

Miền bác bỏ để kiểm định cặp giả thuyết trên là:


 
SSAB /(m − 1)(n − 1) M SAB
Wα = F0 = = : F0 > fα [(m − 1)(n − 1), mn(q − 1)]
SSE /mn(q − 1) M SE

Các kết quả được tính ở trên được trình bày trong bảng sau đây:

Bảng ANOVA hai yếu tố (có lặp)

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

Thực hành phân tích phương sai với


R

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.

3.1.2 Phân tích phương sai với R


Đầu tiên chúng ta thiết lập lại đường dẫn (directory) đúng vào nơi chứa file
dữ liệu đang lưu giữ:

setwd ( " C : / Users / DELL / OneDrive / Documents / KLTN / TH _ ANOVA " )

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:

## ’data.frame’: 345 obs. of 2 variables:


## $ mcv : int 85 85 86 91 87 98 88 88 92 90 ...
## $ drink: num 0 0 0 0 0 0 0.5 0.5 0.5 0.5 ...

Chúng ta có thể dùng lệnh summary() để xem mô tả chi tiết thêm về dữ liệu
như sau:

summary ( data _ mcv )

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:

data _ mcv $ drinkgroup [ data _ mcv $ drink < 1] <- ’ group1 ’


data _ mcv $ drinkgroup [ data _ mcv $ drink >= 1 &
data _ mcv $ drink <3] <- ’ group2 ’
data _ mcv $ drinkgroup [ data _ mcv $ drink >= 3 &
data _ mcv $ drink <6] <- ’ group3 ’
data _ mcv $ drinkgroup [ data _ mcv $ drink >= 6 &
data _ mcv $ drink <9] <- ’ group4 ’
data _ mcv $ drinkgroup [ data _ mcv $ drink >= 9] <- ’ group5 ’
data _ mcv $ drinkgroup <- factor ( data _ mcv $ drinkgroup )

23
data _ mcv <- data _ mcv [ , c (1 ,3)]
str ( data _ mcv )

Output:

## ’data.frame’: 345 obs. of 2 variables:


## $ mcv : int 85 85 86 91 87 98 88 88 92 90 ...
## $ drinkgroup: Factor w/ 5 levels "group1","group2",..: 1 1 1 1 1
1 1 1 1 1 ...

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

table ( data _ mcv $ drinkgroup )

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:

boxplot ( mcv ~ drinkgroup , data _ mcv ,


main = " Mean Corpuscular Volume Distribution by Drink
Group " , xlab = " Drink Group " ,
ylab = " Mean Corpuscular Volume ( mcv ) " ,
col = " powderblue " , horizontal = FALSE )

Output:

24
Mean Corpuscular Volume Distribution by Drink Group

100
Mean Corpuscular Volume (mcv)

90
80
70

group1 group2 group3 group4 group5

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:

## Loading required package: carData

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:

aov _ mcv <- aov ( mcv ~ drinkgroup , data _ mcv )

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:

summary ( aov _ mcv )

Output:

## Df Sum Sq Mean Sq F value Pr(>F)


## drinkgroup 4 733 183.29 10.26 7.43e-08 ***
## Residuals 340 6073 17.86
## ---
## Signif. codes: 0 ’***’ 0.001 ’**’ 0.01 ’*’ 0.05 ’.’ 0.1 ’ ’ 1

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

SSF = 773; SSE = 6073


M SF = 183.29; M SE = 17.86

Giá trị kiểm định F = 183.29 / 17.86 = 10.26.


Trị số p (p-value) = 7.43.10−8 < 0.05 có nghĩa là tín hiệu cho thấy có sự khác biệt
về chỉ số "mcv" giữa 5 nhóm trên.

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:

par ( mfrow = c (2 ,2))


plot ( aov _ mcv )

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

Fitted values Theoretical Quantiles


Standardized residuals

Standardized residuals

Scale−Location Residuals vs Leverage


224
69
2.0

237 69
1.0

−2

184
−6

Cook's distance
0.0

224

89 90 91 92 0.00 0.01 0.02 0.03 0.04

Fitted values Leverage

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.

+) Đồ thị bên trái dòng 2 vẽ căn số phần dư chuẩn (standardized residual) và

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:

TukeyHSD ( aov _ mcv )

Output:

## Tukey multiple comparisons of means


## 95% family-wise confidence level
##
## Fit: aov(formula = mcv ~ drinkgroup, data = data_mcv)
##
## $drinkgroup
## diff lwr upr p adj
## group2-group1 1.241452991 -0.690316778 3.173223 0.3973587
## group3-group1 0.938131313 -0.697363908 2.573627 0.5157202
## group4-group1 3.744610282 1.968846495 5.520374 0.0000002
## group5-group1 3.746031746 0.999127120 6.492936 0.0020039
## group3-group2 -0.303321678 -2.330666517 1.724023 0.9940309
## group4-group2 2.503157290 0.361050967 4.645264 0.0127884
## group5-group2 2.504578755 -0.492214115 5.501372 0.1499436
## group4-group3 2.806478969 0.927189295 4.685769 0.0005031
## group5-group3 2.807900433 -0.007037875 5.622839 0.0509321
## group5-group4 0.001421464 -2.897262735 2.900106 1.0000000

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ố.

3.2.2 Phân tích phương sai với R


Đầu tiên chúng ta đọc dữ liệu từ file vào trong R:

data _ salary <- read . csv ( " engineer . csv " , header = TRUE )

Chúng ta cùng xem sơ qua về dữ liệu:

str ( data _ salary )

Output:

## ’data.frame’: 180 obs. of 4 variables:


## $ X : int 1 2 3 4 5 6 7 8 9 10 ...
## $ Salary : int 126411 108402 99399 91381 105023 108944 ...
## $ Profession: chr "Data Scientist" "Data Scientist" ...
## $ Region : chr "San Francisco" "San Francisco" ...

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:

data _ salary <- data _ salary [ , c (2 ,3 ,4)]


summary ( data _ salary )

Output:

## Salary Profession Region


## Min. : 57646 Length:180 Length:180
## 1st Qu.: 80409 Class :character Class :character
## Median : 92284 Mode :character Mode :character
## Mean : 94199
## 3rd Qu.:105932
## Max. :140179

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

table ( data _ salary $ Profession )

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:

table ( data _ salary $ Region )

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:

library ( " ggpubr " )


plot1 <- ggboxplot ( data _ salary , x = " Profession " ,
y = " Salary " , color = " Region " ,
palette = c ( " #00 AFBB " , " # E7B800 " ," # FC4E07 " ))
plot1 + geom _ jitter ( color = " Gray " ) +
ggtitle ( " Boxplot of Salary by Profession in 3 Regions " )

Output:

30
Boxplot of Salary by Profession in 3 Regions
Region New York San Francisco Seattle

125000
Salary

100000

75000

Data Scientist Software Engineer BI Engineer


Profession

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

plot2 <- ggplot ( data = data _ salary , aes ( x = Profession ,


y = Salary , color = Profession ))
plot2 + geom _ jitter () + geom _ boxplot () + geom _ point () +
ggtitle ( " Boxplot of Salary by Profession " )

Output:

31
Boxplot of Salary by Profession

125000

Profession
Salary

BI Engineer
100000
Data Scientist
Software Engineer

75000

BI Engineer Data Scientist Software Engineer


Profession

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:

plot3 <- ggplot ( data = data _ salary , aes ( x = Region ,


y = Salary , color = Region ))
plot3 + geom _ jitter () + geom _ boxplot () + geom _ point ()+
ggtitle ( " Boxplot of Salary by Region " )

Output:

32
Boxplot of Salary by Region

125000

Region
Salary

New York
100000
San Francisco
Seattle

75000

New York San Francisco Seattle


Region

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:

salary _ anova _ residual <- rstandard (


aov ( Salary ~ Profession * Region , data = data _ salary ))
qqnorm ( salary _ anova _ residual )
qqline ( salary _ anova _ residual )

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

leveneTest ( Salary ~ Profession * Region , data = data _ salary )

Output:

## Levene’s Test for Homogeneity of Variance (center = median)


## Df F value Pr(>F)
## group 8 1.7669 0.08667 .
## 171
## ---
## Signif. codes: 0 ’***’ 0.001 ’**’ 0.01 ’*’ 0.05 ’.’ 0.1 ’ ’ 1

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:

interaction . plot ( data _ salary $ Region ,


data _ salary $ Profession , data _ salary $ Salary ,
type = " b " , col = c (1:3) , leg . bty = " o " ,
leg . bg = " beige " , lwd =2 , pch = c (18 ,24 ,22) ,
xlab = " Region " , ylab = " Salary " , main = " Interaction Plot " )

Output:

Interaction Plot
110000

data_salary$Profession

Data Scientist
Software Engineer
BI Engineer
100000
Salary

90000
80000

New York San Francisco Seattle

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:

salary _ anova <- aov ( Salary ~ Profession * Region ,


data = data _ salary )
summary ( salary _ anova )

Output:

## Df Sum Sq Mean Sq F value Pr(>F)

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:

TukeyHSD ( salary _ anova , which = " Profession " )

Output:

## Tukey multiple comparisons of means


## 95% family-wise confidence level
##
## Fit: aov(formula = Salary ~ Profession * Region, data = data_salary)
##
## $Profession
## diff lwr upr
## Data Scientist-BI Engineer 27608.02 22527.33 32688.707
## Software Engineer-BI Engineer 18776.57 13695.88 23857.257
## Software Engineer-Data Scientist -8831.45 -13912.14 -3750.759
##
## p adj
## Data Scientist-BI Engineer 0.0000000
## Software Engineer-BI Engineer 0.0000000
## Software Engineer-Data Scientist 0.0001807

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

TukeyHSD ( salary _ anova , which = " Region " )

36
Output:

## Tukey multiple comparisons of means


## 95% family-wise confidence level
##
## Fit: aov(formula = Salary ~ Profession * Region, data = data_salary)
##
## $Region
## diff lwr upr p adj
## San Francisco-New York 12214.900 7134.209 17295.591 0.0000002
## Seattle-New York 8723.683 3642.993 13804.374 0.0002197
## Seattle-San Francisco -3491.217 -8571.907 1589.474 0.2380471

Đố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.

[5] Douglas C. Montgomery - George C. Runger, Applied Statistics and Probability


for Engineers (6th edition), 2013.

[6] Yu-Wei, Chiu (David Chiu), R for Data Science Cookbook, Packt Publishing,
2016.

40

You might also like