Chương 1Kiểm định giả thuyết 1.1 Kiểm định giả thuyết về kỳ vọng/trung bình Khởi tạo hàm và các tham số truyền vào.. KDGT_GiatriTrungBinh µo Bài toán kiểm định giả thuyết về kỳ vọng đượ
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN TOÁN ỨNG DỤNG VÀ TIN HỌC
———–oOo———–
BÁO CÁO BÀI THỰC HÀNH CHƯƠNG 3
Học phần: SUY LUẬN THỐNG KÊ
GV hướng dẫn: PGS TS Nguyễn Thị Thu Thủy
Trang 3Mục lục
1.1 Kiểm định giả thuyết về kỳ vọng/trung bình 1
1.2 Kiểm định giả thuyết về tỷ lệ hay xác suất 2
1.3 Kiểm định giả thuyết về phương sai 3
Chương 2 Kiểm định giả thuyết về tham số của hai tổng thể 5 2.1 So sánh giá trị trung bình của hai tổng thể 5
2.2 So sánh hai tỷ lệ 7
2.3 So sánh hai phương sai 8
Chương 3 Kiểm định khác 9 3.1 Phân tích phương sai một nhân tố 9
3.2 Kiểm định phi tham số 10
3.2.1 Kiểm định giả thuyết về quy luật phân phối của biến ngẫu nhiên 10
3.2.2 Kiểm định giả thuyết về tính độc lập giữa hai dấu hiệu định tính 12
Chương 4 Mã Nguồn 14 4.1 Kiểm định giả thuyết 14
4.1.1 Kỳ vọng/trung bình 14
4.1.2 Tỷ lệ hay xác suất 17
4.1.3 Phương sai 18
4.2 Kiểm định giả thuyết về tổng thể 20
4.2.1 Trung bình của hai tổng thể 20
4.2.2 hai tỷ lệ 23
4.2.3 hai phương sai 24
4.3 Kiểm định khác 25
4.3.1 Phương sai một nhân tố 25
4.3.2 Phi tham số 26
4.4 Một số hàm hỗ trợ 31
Chương 5 Bài tập và ví dụ 32 5.1 Bài 3.2 32
5.2 Bài 3.6 33
5.3 Bài 3.9 34
5.4 Bài 3.11 34
Trang 45.5 Bài 2.12 35
5.6 Bài 3.15 36
5.7 Bài 3.19 37
5.8 Bài 3.22 37
5.9 Bài 3.23 38
5.10 Bài 3.24 39
5.11 Bài 3.25 40
Trang 5Chương 1
Kiểm định giả thuyết
1.1 Kiểm định giả thuyết về kỳ vọng/trung bình
Khởi tạo hàm và các tham số truyền vào
KDGT_GiatriTrungBinh <- function(
Sample, n = length(Sample), variance = NULL, Alpha = 0.05, MEAN
= mean(Sample), Ho, SD = sd(Sample),
ALT = c("tow.sided", "less", "greater" ))
Trong đó:
• Sample: Mẫu cần kiểm định
• n = length(Sample): Kích thươc mẫu
• variance = NULL: Phương sai, mặc định là NULL chưa biết
• Alpha = 0.05: Mức ý nghĩa
• MEAN = mean(Sample): Giá trị kỳ vọng của mẫu
• Ho: Giá trị µ = µo
• SD = sd(Sample): Độ lệch chuẩn hiệu chỉnh của mẫu
• ALT = c("tow.sided", "less", "greater")): Loại kiểm định
– two.sided: kiểm định hai phía µ 6= µo
– less: kiểm định một phía µ < µo
– greater: kiểm định một phía µ > µo
Bài toán kiểm định giả thuyết về kỳ vọng được chia làm các trường hợp sau:
Trường hợp đã biết phương sai: Chúng ta sẽ tra bảng phân phối chuẩn với
φ(u1 −α) = 1 − α/2 cho hai phía và φ(u1 −α) = 1 − α cho một phía.Giá trị quan sát Xqs= x−µo
σ
√nCode:
Uqs <- (MEAN - Ho)*sqrt(n)/sqrt(variance)
u1 <- qnorm(1 - Alpha/2)
u2 <- qnorm(1 - Alpha)
Trang 6Trường hợp chưa biết phương sai,cỡ mẫu lớn (n ≥ 30): Trường hợp này chúng
ta sẽ tra bảng giống với trường hợp đã biết phương sai
Giá trị quan sát Xqs= X−µo
S
√nCode:
Uqs <- (MEAN - Ho)*(sqrt(n))/SD
u1 <- qnorm(1 - Alpha/2)
u2 <- qnorm(1 - Alpha)
Trường hợp chưa biết phương sai,cỡ mẫu nhỏ (n < 30): Trường hợp này chúng
ta sẽ tra bảng phân phối STUDENT với tn −1
1 −α/2 cho hai phía và tn −1
1 −α chomột phía
Giá trị quan sát tqs = x−µo
s
√nCode:
Tqs <- (MEAN - Ho)*(sqrt(n))/SD
t1 <- qt(1-Alpha/2, n - 1)
t2 <- qt(1 -Alpha, n - 1)
1.2 Kiểm định giả thuyết về tỷ lệ hay xác suất
Khởi tạo hàm với các tham số truyền vào
• ALT = c("tow.sided", "less", "greater")): Loại kiểm định
– two.sided: kiểm định hai phía p 6= po
– less: kiểm định một phía p < po
– greater: kiểm định một phía p > po
Để giải bài toán kiểm định tỷ lệ cần kiểm tra điều kiện npo> 5v(1−n)po> 5.Nếu đúng thì U ∼ N(0,1) Tra bảng phân phối chuẩn với φ(u1 −α) = 1 − α/2cho hai phía và φ (u1 −α) = 1 − α cho một phía
Giá trị quan sát uqs= √ f−po
p 0 (1−p o )
√
n, f = mnCode:
Trang 7c 3
u1 <- qnorm(1-Alpha/2)
u2 <- qnorm(1 - Alpha)
Uqs <- (f- Po)*sqrt(n)/sqrt(Po*(1-Po))
1.3 Kiểm định giả thuyết về phương sai
Khởi tạo hàm và các tham số truyền vào
• Sample: Mẫu cần kiểm định
• n = length(Sample): Kích thươc mẫu
• Expected = NULL: Kỳ vọng, mặc định là NULL chưa biết
• Alpha = 0.05: Mức ý nghĩa
• Vo: Giá trị σ2= σo2
• SD = sd(Sample): Độ lệch chuẩn hiệu chỉnh của mẫu
• ALT = c("tow.sided", "less", "greater")): Loại kiểm định
– two.sided: kiểm định hai phía σ2
6= σo2
– less: kiểm định một phía σ2< σo2
– greater: kiểm định một phía σ2> σ2
Trang 8Xqs <- X/Vox1 <- qchisq(Alpha/2, n)x11 <- qchisq(1 - Alpha/2, n)x2 <- qchisq(Alpha, n)
x3 <- qchisq(1 - Alpha, n)
Trang 9Chương 2
Kiểm định giả thuyết về tham số của hai
tổng thể
2.1 So sánh giá trị trung bình của hai tổng thể
Khởi tạo hàm và các tham số truyền vào
sigma.x = sd(Sample.X), sigma.y = sd(Sample.Y),
ALT = c("nuy1 != nuy2", "nuy1 < nuy2", "nuy1 > nuy2" ))
Trong đó:
• Sample.X: Mẫu so sánh X
• Sample.Y: Mẫu so sánh Y
• n1 = length(Sample.X): Kích thươc mẫu X
• n2 = length(Sample.Y): Kích thươc mẫu Y
• Alpha = 0.05: Mức ý nghĩa
• haveVar = FALSE: Đã biết phương sai hay chưa
• MEAN.x = mean(Sample.X): Giá trị kỳ vọng của mẫu X
• MEAN.x = mean(Sample.X): Giá trị kỳ vọng của mẫu X
• sigma.x = sd(Sample.X): Độ lệch chuẩn hiệu chỉnh của mẫu X
• sigma.y = sd(Sample.Y): Độ lệch chuẩn hiệu chỉnh của mẫu Y
• ALT = c("nuy1 != nuy2", "nuy1 < nuy2", "nuy1 > nuy2")): Loại kiểmđịnh
– nuy1 != nuy2: đối thuyết µ16= µ2
– nuy1 < nuy2: đối thuyết µ1< µ2
– nuy1 > nuy2: đối thuyết µ1> µ2
Trang 10Bài toán so sánh giá trị trung bình của hai tổng thể được chia làm các trườnghợp sau:
Trường hợp đã biết phương sai σ2
1, σ22: Chúng ta sẽ tra bảng phân phối chuẩnvới φ (u1 −α) = 1 − α/2 cho hai phía và φ(u1 −α) = 1 − α cho một phía.Giá trị quan sát uqs= r x−y
σ 21n1 +σ 22 n2
Code:
Uqs < (MEAN.x
-MEAN.y)/sqrt((sigma.x^2/n1)+(sigma.y^2/n2))u1 <- qnorm(1 - Alpha/2)
u2 <- qnorm(1 - Alpha))
Trường hợp chưa biết phương sai σ2
1, σ2
2,cỡ mẫu lớn (n ≥ 30): Trường hợp này
chúng ta sẽ tra bảng giống với trường hợp đã biết phương sai
Giá trị quan sát uqs= rX−Y
S21n1 +S22 n2
Code:
Uqs < (MEAN.x
-MEAN.y)/sqrt((sigma.x^2/n1)+(sigma.y^2/n2))u1 <- qnorm(1 - Alpha/2)
u2 <- qnorm(1 - Alpha)
Trường hợp chưa biết phương sai σ2
1, σ2
2,cỡ mẫu nhỏ (n < 30): Trường hợp này
chúng ta sẽ tra bảng phân phối STUDENT với tn 1 +n 2
1 −α/2 cho hai phía và
t1 <- qt(1 - Alpha/2, n1 + n2 - 2)
t2 <- qt(1 - Alpha, n1 + n2 -2)
Trường hợp hai mẫu không độc lập:so sánh cặp: Ta sẽ thiết lập Z = X −Y
và đưa bài toán về dạng kiểm định giá trị kỳ vọng
Code:
SosanhCapHaiTrungbinh <- function( OB = object, Alpha =
0.05, ){
colnames(OB) <- c("X","Y")
OB$Z <- OB$X - OB$Y
Trang 11c 7
tmp <- Alpha
cat("\nSo sanh hai gia tri trung binh khong doc lap: Sosanh cap")
cat("\nThiet lap Z = X - Y")
cat("\nDua ve bai toan kiem dinh gia thuyet gia tri
trung binh cua Z voi Ho = 0.")KDGT_GiatriTrungBinh(OB$Z,Alpha = tmp,Ho = 0 ,ALT =
"two.sided")}
Trang 122.3 So sánh hai phương sai
Khai báo hàm và các tham số truyền vào
SoSanhHaiPhuongSai <- function(
Sample.X, Sample.Y, n.1 = length(Sample.X), n.2 =
length(Sample.Y),
sigma.x = sd(Sample.X), sigma.y = sd(Sample.Y), Alpha = 0.05,
ALT = c("var.x != var.y", "var.x > var.y"))
Trong đó:
• Sample.X: Mẫu so sánh X
• Sample.Y: Mẫu so sánh Y
• n.1 = length(Sample.X): Kích thươc mẫu X
• n.2 = length(Sample.Y): Kích thươc mẫu Y
• Alpha = 0.05: Mức ý nghĩa
• sigma.x = sd(Sample.X) : Độ lệch chuẩn hiệu chỉnh của mẫu X
• sigma.y = sd(Sample.Y) : Độ lệch chuẩn hiệu chỉnh của mẫu Y
• ALT = c("var.x != var.y", "var.x > var.y")): Loại kiểm định
– var.x != var.y: đối thuyết σ2
1 6= σ22
– var.x > var.y: đối thuyết σ2
1 > σ2 2
Đối với dạng bài toán này chúng ta sẽ tra bảng phân phối Fisher với F(α/2)(n1−1;n2−1), F(1−α/2)(n1cho đối thuyết σ2
1 6= σ22 và F(1−α/2)(n1−1;n2−1) cho đối thuyết σ2
1 > σ22Tính giá trị quan sát fqs = s21
Trang 13Chương 3
Kiểm định khác
3.1 Phân tích phương sai một nhân tố
Khai báo hàm và các tham số truyền vào
PhanTichPhuongSai1NhanTo <- function( object,Alpha = 0.05, )
Trong đó:
• object: Dữ liệu truyền vào dưới dạng data.frame
• Alpha = 0.05: Mức ý nghĩa 5%
Để giải quyết bài toán này đầu tiên chúng ta sẽ đặt lại tên cột của data.frame
để dễ dàng thao tác bằng lệnhcolnames(object)<- c("Data","Group")
Sử dụng lệnhcount trong thư việnlibrary(plyr) để gộp các nhóm lại vớinhautmp <- count(object$Group)
Tính các giá trị
SST = Σki=1Σni
j=1x2i j−tn2SSF = Σk
i=1
ti2
ni −tn2 =SSE = SST − SSFMSF = kSSF−1, k − 1 là bậc tự do của SSFMSE = nSSE−k, n − k là bậc tự do của SSE
fqs= MSFMSETra bảng Fisher với bậc tự do là (k − 1,n − k): F(1−α)(k−1)(n−k)
Trang 143.2 Kiểm định phi tham số
3.2.1 Kiểm định giả thuyết về quy luật phân phối của biến
ngẫu nhiên
Kiểm định phân phối chuẩn
Khai báo hàm và các tham số truyền vào
KDPPChuan <- function(object, Alpha = 0.05)
Trong đó:
• object: Dữ liệu truyền vào dưới dạng data.frame
• Alpha = 0.05: Mức ý nghĩa 5%
Ý tưởng giải quyết bài toán:
Sử dụng thư viện library(gsubfn)để loại bỏ dấu cận trên và dưới của biếnngẫu nhiên Sau đó tách ra thành 2 cột dữ liệu cận trên và dưới để tiện choquá trình tính toán
mean.ob = sum(S.object$Ssum*S.object$Freq)/n
Trang 15c 11
s = sqrt(sum((S.object$Ssum mean.ob)^2*S.object$Freq)/(n 1))
-S.object[1,1] = -Inf
S.object[nrow(S.object),2] = Inf
object$U.i = (S.object$CD - mean.ob)/s
object$U.j = (S.object$CT - mean.ob)/s
Kiểm định phân phối Poison
Khai báo hàm và các tham số truyền vào
KiemDinhPhanPhoiPoison <- function(object, Alpha = 0.05, )
Trang 16So sánh với χ2
(1−α)(k−r−1), r = 1, để đưa ra kết luận
Kiểm định phân phối Nhị thức
Thực hiện tương tự như hàm kiểm định phân phối Poison với:
Pi = P(x=k)= Ck
npk(1 − p)n −kp.i[i] = Px_nhithuc(k-1,x,p)
Khai báo hàm và các tham số truyền vào
KDGT_DocLapGiua2DauHieuDinhTinh <-function(object, Alpha =
Trang 17c 13
So sánh với χ2
(1−α)(k−)(h−1), để đưa ra kết luận
Trang 20if( Uqs < -u1 || Uqs > u1 ){
cat("\nMien bac bo: ( -inf ;",-u1,")U(",u1,"; inf )")
Trang 21if( Uqs < -u1 || Uqs > u1 ){
cat("\nMien bac bo: ( -inf ;",-u1,")U(",u1,"; inf )")
Trang 244.2 Kiểm định giả thuyết về tổng thể
4.2.1 Trung bình của hai tổng thể
sigma.x = sd(Sample.X), sigma.y = sd(Sample.Y),
ALT = c("nuy1 != nuy2", "nuy1 < nuy2", "nuy1 > nuy2" )
if( Uqs < -u1 || Uqs > u1 ){
cat("\nMien bac bo: ( -inf ;",-u1,")U(",u1,"; inf )")
Trang 25cat("\nSo sanh hai gia tri trung binh cua hai tong the chua
biet phuong sai.")
if( n1 < 30 && n2 < 30){
cat("\nVoi co mau hai tong the < 30 va muc y nghia", Alpha*100,
"% tra bang phan phoi STUDENT ta co:")
tmp < (((n1 1)*sigma.x^2 + (n2 1)*sigma.y^2)/(n1 + n2 2))*(1/n1 + 1/n2)
Trang 26cat("\nVoi co mau hai tong the > 30 va muc y nghia", Alpha*100,
"% tra bang phan phoi CHUAN ta co:")
Uqs <- (MEAN.x - MEAN.y)/sqrt((sigma.x^2/n1)+(sigma.y^2/n2))u1 <- qnorm(1 - Alpha/2)
u2 <- qnorm(1 - Alpha)
result = switch (
ALT,
"nuy1 != nuy2" =(
if( Uqs < -u1 || Uqs > u1 ){
cat("\nMien bac bo: ( -inf ;",-u1,")U(",u1,"; inf )")
Trang 27cat("\nThiet lap Z = X - Y")
cat("\nDua ve bai toan kiem dinh gia thuyet gia tri trung binhcua Z voi Ho = 0.")
KDGT_GiatriTrungBinh(OB$Z,Alpha = tmp,Ho = 0 ,ALT = "two.sided")}
if( Uqs < -u1 || Uqs > u1){
cat("\nMien Bac bo: ( -inf ;", -u1, ") U (",u1,"; inf )")
Trang 28cat("\nSo sanh hai phuong sai.")
cat("\nVoi muc y nghia", Alpha*100, "% tra bang phan phoi
Trang 294.3.1 Phương sai một nhân tố
PhanTichPhuongSai1NhanTo <- function( object,Alpha = 0.05, ){
Trang 30cat("\nPhan tich phuong sai mot nhan to One-Way ANOVA.")
cat("\nGia thuyet ban dau Ho: nuy1 = nuy2 = nuyk ( k =",length(tmp$x), ")")
cat("\nGia thuyet kiem dinh H1: Ton tai i,j | nuyi != nuyj.")cat("\nVoi muc y nghia ", Alpha*100," % tra bang Fisher ta co:
")
cat("\nMien Bac bo: Wa = (", F1, "; inf )")
cat("\n\tBang Phan tich phuong sai ANOVA.\n")
print(ANOVA)
cat("\nTu bang phan tich phuong sai ta thay: ")
if( Fqs > F1){
cat("Gia tri quan sat thuoc vao mien bac bo")
cat("\n=> Bac bo gia thuyet Ho ")
}else{
cat("Gia tri quan sat khong thuoc vao mien bac bo")
cat("\n=> Chua co du co so de bac bo gia thuyet Ho ")
Trang 31cat("\nMien bac bo : (", Chi, "; inf )")
cat("\nTu bang so lieu tren ta tinh toan duoc Xqs = ", Xqs)
if(Xqs > Chi){
cat("\nGia tri quan sat thuoc vao mien bac bo")
cat("\n=> Bac bo gia thuyet Ho ")
cat("\nHai dac tinh nay phu thuoc vao nhau.")
}else{
cat("\nGia tri quan sat khong thuoc vao mien bac bo")
cat("\n=> Chua co du co so de bac bo gia thuyet Ho ")
cat("\nHai dac tinh doc lap.")
Trang 32cat("\n\tKiem dinh phan phoi Poison.")
cat("\nGia thuyet Ho: Bien ngau nhien tuan theo luat phan phoiPoison.")
cat("\nThuyet doi H1: Bien ngau nhien ko tuan theo luat phanphoi Poison.")
cat("\nTu du lieu dau vao ta xay dung duoc bang sau:\n")
print(R.object)
Xqs <- R.object$Xiqs[k+1]
cat("\nTu bang giua lieu ta co gia tri quan sat Xqs = ", Xqs)cat("\nVoi muc y nghia", Alpha*100,"% tra bang Chi-Square taduoc:")
cat("\nMien bac bo : (", qchisq(1-Alpha,k-2),"; inf )")
if(Xqs > qchisq(1-Alpha,k-2)){
cat("\nTa thay gia tri quan sat thuoc vao mien bac bo")
cat("\n=> Bac bo gia thuyet Ho ")
cat("\nBien ngau nhien ko tuan theo luat phan phoi Poison")
}else{
cat("\nTa thay gia tri quan sat ko thuoc vao mien bac bo")
cat("\n=>Chua co du co so de bac bo gia thuyet Ho ")
cat("\nBien ngau nhien tuan theo luat phan phoi Poison")
Trang 33S.object[nrow(S.object),2] = Inf
object$U.i = (S.object$CD - mean.ob)/s
object$U.j = (S.object$CT - mean.ob)/s
paste("(",S.object$CD[nrow(object)],",Inf)")
cat("\n\tKiem dinh phan phoi Chuan.")
cat("\nGia thuyet Ho: Bien ngau nhien tuan theo luat phan phoiChuan.")
cat("\nThuyet doi H1: Bien ngau nhien ko tuan theo luat phanphoi Chuan.")
cat("\nTu du lieu dau vao ta xay dung duoc bang sau:\n")
print(object)
cat("\nTu bang giua lieu ta co gia tri quan sat Xqs = ", Xqs)cat("\nVoi muc y nghia", Alpha*100,"% tra bang Chi-Square taduoc:")
cat("\nMien bac bo : (", qchisq(1-Alpha,nrow(object) - 3),";inf )")
if(Xqs > qchisq(1-Alpha,nrow(object) - 3)){
cat("\nTa thay gia tri quan sat thuoc vao mien bac bo")
cat("\n=> Bac bo gia thuyet Ho ")
cat("\nBien ngau nhien ko tuan theo luat phan phoi Chuan.")
}else{
cat("\nTa thay gia tri quan sat ko thuoc vao mien bac bo")
cat("\n=>Chua co du co so de bac bo gia thuyet Ho ")
cat("\nBien ngau nhien tuan theo luat phan phoi Chuan.")