Tác giả sử dụng bộ dữ liệu về hành trình của người dùng trên một trang web mua sắm trực tuyến, ghi lại cẩn thận các tương tác của họ, từ số lượng và thời gian duyệt các loại trang khác nhau (quản trị, thông tin, sản phẩm) đến các chỉ số đo lường mức độ gắn kết quan trọng như tỷ lệ thoát và giá trị trang. Không chỉ dừng lại ở đó, dữ liệu còn bao gồm các yếu tố ngữ cảnh như thời điểm truy cập (tháng, ngày đặc biệt, cuối tuần), thông tin kỹ thuật của người dùng (hệ điều hành, trình duyệt, khu vực) và phân loại khách truy cập (khách mới hay khách quay lại). Tất cả những thông tin này hội tụ về một mục tiêu chính: xác định liệu phiên truy cập đó có dẫn đến hành động mua hàng, tức là tạo ra doanh thu cho trang web hay không. Đây là một nguồn tài nguyên quý giá để phân tích hành vi người dùng và dự đoán ý định mua sắm trực tuyến.
#ĐỌC DỮ LIỆU VÀO R
nt <- read.csv("C:/Users/Admin/Desktop/TMT/online_shoppers_intention.csv")
#CHỌN CÁC BIẾN ĐỊNH TÍNH
dldt <- c("Month", "VisitorType","Weekend","Revenue")
# Tạo bộ dữ liệu mới chỉ chứa định tính
npt <- nt[, dldt]
Biến Month là biến định tính thể hiện thời gian mua hàng.
Biến VisitorType thể hiện kiểu khách hàng mới tới mua hoặc quay lại để mua.
Biến Weekend chỉ thời điểm cuối tuần hay là ngày trong tuần.
Biến Revenue cho biết có tạo ra được doanh thu hay không
# Kiểm tra số lượng NA trong mỗi cột định tính
na_counts <- sapply(npt, function(x) sum(is.na(x)))
na_counts
## Month VisitorType Weekend Revenue
## 0 0 0 0
#XEM CẤU TRÚC CỦA BỘ DỮ LIỆU
sapply(npt, class)
## Month VisitorType Weekend Revenue
## "character" "character" "character" "character"
Kiểm tra kiểu dữ liệu định xem có phải Factor hay không và xem số lượng biến trống N/A trong các cột định tính. Các cột cho biết
biến định tính đều là các character và không có biến N/A trong cột dữ liệu.
Tác giả tiến hành chuyển đổi sang kiểu factor và thực hiện các bước tiếp theo
#Chuyển đổi các cột sang factor nếu chưa phải là factor
npt <- as.data.frame(lapply(npt, function(x) {
if (!is.factor(x)) {
return(as.factor(x))
} else {
return(x)
}
}))
#XEM LẠI KIỂU CỦA CÁC BIẾN
sapply(npt, class)
## Month VisitorType Weekend Revenue
## "factor" "factor" "factor" "factor"
Bốn biến định tính đã chuyển đổi sang kiểu Factor như mong muốn và tiến hành mô tả các biến định tính đã chọn ở trên
#Tạo bảng tần số và tần suất
tab_gender <- table(npt$Month)
tab_gender
##
## Aug Dec Feb Jul June Mar May Nov Oct Sep
## 433 1727 184 432 288 1907 3364 2998 549 448
table(npt$Month)/sum(nrow(npt))
##
## Aug Dec Feb Jul June Mar May Nov Oct Sep
## 0.03511760 0.14006488 0.01492295 0.03503650 0.02335766 0.15466342 0.27283049 0.24314680 0.04452555 0.03633414
Sau khi có được bản tần số và tần suất tiến hành trực quan hóa bằng biểu đồ
# Dữ liệu tần suất
counts <- c(Aug = 433, Dec = 1727, Feb = 184, Jul = 432, June = 288,
Mar = 1907, May = 3364, Nov = 2998, Oct = 549, Sep = 448)
# Dữ liệu tỷ lệ
proportions <- counts / sum(counts)
# Sắp xếp lại thứ tự các tháng
month_order <- c("Jan", "Feb", "Mar", "Apr", "May", "June",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec")
# Lọc ra các tháng có trong dữ liệu và giữ nguyên thứ tự
ordered_counts <- counts[order(match(names(counts), month_order[month_order %in% names(counts)]))]
ordered_proportions <- proportions[order(match(names(proportions), month_order[month_order %in% names(proportions)]))]
# Vẽ biểu đồ cột cho tần suất
barplot(ordered_counts,
main = "Phân phối số lượng phiên theo tháng",
xlab = "Tháng",
ylab = "Số lượng phiên",
col = rainbow(length(ordered_counts)), # Thêm màu cho đẹp
las = 2) # Xoay nhãn trục x để dễ đọc
# Vẽ biểu đồ cột cho tỷ lệ
barplot(ordered_proportions * 100, # Nhân 100 để hiển thị %
main = "Tỷ lệ phần trăm lượng truy cập theo tháng",
xlab = "Tháng",
ylab = "Tỷ lệ (%)",
col = rainbow(length(ordered_proportions)),
las = 2,
ylim = c(0, max(ordered_proportions * 100) + 5)) # Điều chỉnh giới hạn trục y
Dữ liệu về số lượng phiên truy cập theo tháng cho thấy một bức tranh không đồng đều và có tính mùa vụ rõ rệt trong hoạt động của trang web. Nổi bật nhất là tháng Năm, tháng Mười Một và tháng Ba, khi lượng tương tác của người dùng tăng vọt, chiếm tỷ trọng lớn trong tổng truy cập hàng năm. Điều này gợi ý về sự ảnh hưởng của các sự kiện mua sắm đặc trưng, các chiến dịch quảng bá tập trung, hoặc các yếu tố mùa vụ thúc đẩy nhu cầu. Ngược lại, tháng Hai lại ghi nhận mức truy cập thấp nhất, có thể do các yếu tố như kỳ nghỉ lễ kéo dài hoặc sự chững lại tự nhiên của thị trường. Sự phân hóa mạnh mẽ này giữa các tháng đặt ra yêu cầu về việc phân bổ nguồn lực linh hoạt và các chiến lược marketing phù hợp theo từng giai đoạn để tối ưu hóa hiệu quả kinh doanh, đồng thời tìm kiếm cơ hội kích cầu trong những tháng thấp điểm.
#Tạo bảng tần số và tần suất
tab_gender1 <- table(npt$VisitorType)
tab_gender1
##
## New_Visitor Other Returning_Visitor
## 1694 85 10551
table(npt$VisitorType)/sum(nrow(npt))
##
## New_Visitor Other Returning_Visitor
## 0.137388483 0.006893755 0.855717762
Dữ liệu cho thấy khách truy cập quay lại (Returning_Visitor) chiếm ưu thế áp đảo (khoảng 85.6%) trong tổng số phiên truy cập, cho thấy trang web có khả năng giữ chân khách hàng tốt hoặc phụ thuộc nhiều vào lượng khách hàng trung thành, trong khi lượng khách truy cập mới (New_Visitor) và các loại khác (Other) chiếm tỷ trọng nhỏ hơn đáng kể.
library(ggplot2)
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
# 1. Chuẩn bị dữ liệu dưới dạng data frame
visitor_data <- data.frame(
category = factor(c("New_Visitor", "Other", "Returning_Visitor"),
levels = c("Returning_Visitor", "New_Visitor", "Other")), # Sắp xếp thứ tự lát cắt
count = c(1694, 85, 10551)
)
# 2. Tính toán phần trăm và vị trí cho nhãn
visitor_data <- visitor_data %>%
arrange(desc(category)) %>% # Sắp xếp để tính vị trí nhãn đúng
mutate(
proportion = count / sum(count),
percentage_label = paste0(round(proportion * 100, 1), "%"),
# Vị trí y cho nhãn phần trăm (để nằm giữa các lát cắt)
label_y_position = cumsum(proportion) - 0.5 * proportion
)
# 3. Vẽ biểu đồ tròn với ggplot2
ggplot(visitor_data, aes(x = "", y = proportion, fill = category)) +
geom_bar(stat = "identity", width = 1, color = "white") + # color="white" để tạo đường viền giữa các lát
coord_polar(theta = "y", start = 0) + # Chuyển sang hệ tọa độ cực
# Thêm nhãn phần trăm vào giữa mỗi lát cắt
geom_text(aes(y = label_y_position, label = percentage_label),
color = "white", # Màu chữ nhãn
size = 4, # Kích thước chữ
fontface = "bold") +
labs(title = "Phân Phối Loại Khách Truy Cập",
fill = "Loại Khách") + # Tiêu đề cho chú giải (legend)
theme_void() + # Xóa nền và các trục không cần thiết
theme(
plot.title = element_text(hjust = 0.5, size = 16, face = "bold"), # Căn giữa và làm đậm tiêu đề
legend.title = element_text(size = 12, face = "bold"),
legend.text = element_text(size = 10)
) +
# Tùy chỉnh màu sắc (tùy chọn)
scale_fill_manual(values = c("Returning_Visitor" = "steelblue",
"New_Visitor" = "skyblue",
"Other" = "lightcoral"))
Biểu đồ tròn minh họa một cách trực quan và rõ nét cơ cấu khách truy cập của trang web, trong đó khách hàng quay lại (Returning_Visitor) chiếm một thị phần áp đảo, lên đến khoảng 85.6%. Điều này cho thấy một nền tảng người dùng trung thành đáng kể hoặc một sự phụ thuộc lớn vào việc duy trì khách hàng hiện tại. Phần còn lại, tuy nhỏ hơn nhiều, được đóng góp chủ yếu bởi khách truy cập mới (New_Visitor) với khoảng 13.7%, trong khi nhóm “Khác” (Other) chỉ chiếm một phần không đáng kể, dưới 1%. Sự chênh lệch rõ rệt này không chỉ nhấn mạnh tầm quan trọng của việc giữ chân khách hàng mà còn gợi ý tiềm năng để tối ưu hóa các chiến lược thu hút người dùng mới, nhằm cân bằng và mở rộng cơ sở khách hàng của trang web.
#Tạo bảng tần số và tần suất
tab_gender2 <- table(npt$Weekend)
tab_gender2
##
## False True
## 9462 2868
table(npt$Weekend)/sum(nrow(npt))
##
## False True
## 0.7673966 0.2326034
Dữ liệu cho thấy phần lớn các phiên truy cập (khoảng 76.7%) diễn ra vào các ngày trong tuần (Weekend = False), trong khi chỉ có khoảng 23.3% phiên diễn ra vào cuối tuần (Weekend = True), cho thấy thói quen mua sắm hoặc tương tác trực tuyến của người dùng trên trang này tập trung nhiều hơn vào các ngày làm việc.
# Dữ liệu tần suất
weekend_counts <- c(False = 9462, True = 2868)
names(weekend_counts) <- c("Ngày trong tuần", "Cuối tuần") # Đặt tên dễ hiểu hơn
# Dữ liệu tỷ lệ (nếu bạn muốn dùng trực tiếp)
# weekend_proportions <- c(False = 0.7673966, True = 0.2326034)
# names(weekend_proportions) <- c("Ngày trong tuần", "Cuối tuần")
# Vẽ biểu đồ cột cho tần suất
barplot(weekend_counts,
main = "Phân Phối Phiên Truy Cập Theo Ngày Trong Tuần/ Ngày Cuối Tuần",
xlab = "Loại Ngày",
ylab = "Số Lượng Phiên",
col = c("skyblue", "lightcoral"),
ylim = c(0, max(weekend_counts) + 1000)) # Điều chỉnh trục y
# (Tùy chọn) Thêm nhãn số lượng trên cột
text(x = barplot(weekend_counts, plot = FALSE), y = weekend_counts + 300, labels = weekend_counts)
# Hoặc vẽ biểu đồ cột cho tỷ lệ
weekend_proportions_named <- c("Ngày trong tuần" = 0.7673966, "Cuối tuần" = 0.2326034)
barplot(weekend_proportions_named * 100,
main = "Tỷ Lệ Phiên Truy Cập Theo Ngày Trong Tuần/ Ngày Cuối Tuần",
xlab = "Loại Ngày",
ylab = "Tỷ Lệ (%)",
col = c("skyblue", "lightcoral"),
ylim = c(0, 100))
text(x = barplot(weekend_proportions_named * 100, plot = FALSE), y = weekend_proportions_named * 100 + 5, labels = paste0(round(weekend_proportions_named * 100, 1), "%"))
Dữ liệu về biến Weekend cho thấy một sự chênh lệch đáng kể, với các phiên truy cập vào ngày trong tuần (False - khoảng 76.7%) chiếm ưu thế vượt trội so với các phiên vào cuối tuần (True - khoảng 23.3%). Điều này phản ánh thói quen tương tác trực tuyến của người dùng trên nền tảng này chủ yếu tập trung vào những ngày làm việc.
#Tạo bảng tần số và tần suất
tab_gender3 <- table(npt$Revenue)
tab_gender3
##
## False True
## 10422 1908
table(npt$Revenue)/sum(nrow(npt))
##
## False True
## 0.8452555 0.1547445
Đa số các phiên truy cập (khoảng 84.5%) không tạo ra doanh thu (Revenue = False), trong khi chỉ một tỷ lệ nhỏ hơn đáng kể (khoảng 15.5%) thực sự dẫn đến việc mua hàng (Revenue = True), cho thấy tỷ lệ chuyển đổi tổng thể của trang web này cần được chú ý và có tiềm năng cải thiện.
library(ggplot2)
library(dplyr)
revenue_data <- data.frame(
status = factor(c("Không tạo doanh thu (False)", "Tạo doanh thu (True)"),
levels = c("Không tạo doanh thu (False)", "Tạo doanh thu (True)")), # Giữ thứ tự này để màu sắc nhất quán với scale_fill_manual
count = c(10422, 1908)
)
revenue_data <- revenue_data %>%
mutate(
proportion = count / sum(count),
percentage_label = paste0(round(proportion * 100, 1), "%")
) %>%
# Sắp xếp lại để tính vị trí nhãn cho ggplot (thường là theo chiều kim đồng hồ từ lớn đến nhỏ hoặc ngược lại)
# Trong trường hợp này, để nhãn hiển thị đúng với thứ tự fill, chúng ta cần đảm bảo thứ tự dữ liệu khớp
# Hoặc chúng ta có thể tính label_y_position một cách cẩn thận hơn.
# Đối với 2 lát, vị trí có thể đơn giản hơn:
# arrange(status) %>% # Sắp xếp theo thứ tự factor
mutate(label_y_position = cumsum(proportion) - 0.5 * proportion)
ggplot(revenue_data, aes(x = "", y = proportion, fill = status)) +
geom_bar(stat = "identity", width = 1, color = "white") +
coord_polar(theta = "y", start = 0) +
geom_text(aes(y = label_y_position, label = percentage_label), color = "black", size = 5, fontface="bold") +
labs(title = "Tỷ Lệ Chuyển Đổi Doanh Thu Từ Phiên Truy Cập",
fill = "Trạng Thái Doanh Thu") +
theme_void() +
theme(plot.title = element_text(hjust = 0.5, size = 16, face = "bold"),
legend.title = element_text(size = 12, face="bold"),
legend.text = element_text(size = 10)) +
# Đảm bảo dòng này hoàn chỉnh
scale_fill_manual(values = c("Không tạo doanh thu (False)" = "lightblue",
"Tạo doanh thu (True)" = "lightgreen"))
Sự phân hóa rõ rệt giữa số lượng các phiên truy cập không tạo ra doanh thu (chiếm đến 84.5%) và số phiên thực sự dẫn đến mua hàng (chỉ 15.5%) là một điểm nhấn quan trọng trong phân tích này. Con số này cho thấy mặc dù trang web thu hút được một lượng lớn người dùng, phần lớn trong số họ rời đi trước khi hoàn tất giao dịch. Điều này không chỉ phản ánh một tỷ lệ chuyển đổi tổng thể còn khiêm tốn mà còn mở ra một cơ hội lớn để tối ưu hóa. Việc tìm hiểu sâu hơn về hành trình của nhóm người dùng chưa mua hàng, xác định các rào cản tiềm ẩn trong quá trình trải nghiệm, và triển khai các chiến lược nuôi dưỡng khách hàng tiềm năng sẽ là những bước đi thiết yếu để cải thiện hiệu suất kinh doanh và khai thác hiệu quả hơn lượng truy cập hiện có.
# Số lượng và tổng số
slNov <- sum(npt$Month == "Nov")
totalMonth <- length(npt$Month)
# Ước lượng khoảng tin cậy 95% cho tỷ lệ "Month"
ket_qua <- prop.test(x = slNov, n = totalMonth, conf.level = 0.95)
# In toàn bộ kết quả (bao gồm cả thông tin kiểm định)
print(ket_qua)
##
## 1-sample proportions test with continuity correction
##
## data: slNov out of totalMonth, null probability 0.5
## X-squared = 3252.8, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
## 0.2356155 0.2508389
## sample estimates:
## p
## 0.2431468
# Chỉ lấy và in khoảng tin cậy
khoang_tin_cay <- ket_qua$conf.int
print(khoang_tin_cay)
## [1] 0.2356155 0.2508389
## attr(,"conf.level")
## [1] 0.95
# Output sẽ là một vector có 2 giá trị: [giới hạn dưới, giới hạn trên]
cat("Khoảng tin cậy 95% cho tỷ lệ là: (", round(khoang_tin_cay[1], 4), ", ", round(khoang_tin_cay[2], 4), ")\n")
## Khoảng tin cậy 95% cho tỷ lệ là: ( 0.2356 , 0.2508 )
Kết quả ước lượng khoảng và kiểm định tỷ lệ cho biến định tính “Month” với hạng mục quan tâm là “Mua hàng vào tháng 11” cho thấy rằng tỷ lệ các giao dịch diễn ra trong tháng 11 chiếm khoảng 24,31% trên tổng số giao dịch. Khoảng tin cậy 95% cho tỷ lệ này nằm trong khoảng từ 23,56% đến 25,08%, cho thấy rằng trong tổng thể, tỷ lệ thực sự của các giao dịch diễn ra vào tháng 11 nhiều khả năng cũng chỉ dao động quanh mức này.
Đồng thời, kết quả kiểm định giả thuyết với giả định tỷ lệ mua hàng trong tháng 11 là 50% (H₀: p = 0.5) cho ra p-value < 2.2e-16, một giá trị rất nhỏ, có ý nghĩa thống kê rõ rệt. Điều này đồng nghĩa với việc giả thuyết H₀ bị bác bỏ, cho thấy tỷ lệ mua hàng vào tháng 11 khác biệt có ý nghĩa thống kê so với mức 50%.
Tóm lại, có thể kết luận rằng tháng 11 không phải là thời điểm có tỷ lệ mua hàng chiếm ưu thế, và tỷ lệ thực tế chỉ xấp xỉ một phần tư tổng số giao dịch. Sự khác biệt này không phải do yếu tố ngẫu nhiên mà có tính ổn định trong dữ liệu.
H0 (Giả thuyết không): p = 0.2431 (Tỷ lệ tháng 11 lớn hơn hoặc bằng 24.31%)\ H1 (Giả thuyết đối): p < 0.2431 (Tỷ lệ tháng 11 nhỏ hơn 24.31%)
#Kiểm định một phía: Tỷ lệ Nov có nhỏ hơn 0.2431 không?
cat("\n--- KIỂM ĐỊNH MỘT PHÍA (p < 0.2431) ---\n")
##
## --- KIỂM ĐỊNH MỘT PHÍA (p < 0.2431) ---
prop.test(slNov, totalMonth, p = 0.2431, alternative = "less", conf.level = 0.95)
##
## 1-sample proportions test with continuity correction
##
## data: slNov out of totalMonth, null probability 0.2431
## X-squared = 2.6133e-06, df = 1, p-value = 0.5006
## alternative hypothesis: true p is less than 0.2431
## 95 percent confidence interval:
## 0.0000000 0.2495982
## sample estimates:
## p
## 0.2431468
Trong phần này, kiểm định một phía được thực hiện với mục tiêu đánh giá xem tỷ lệ thực sự các giao dịch diễn ra trong tháng 11 có thấp hơn 24,31% hay không ?
Kết quả kiểm định cho ra giá trị p-value = 0.5006, tức là xác suất để có được kết quả như dữ liệu quan sát, hoặc cực đoan hơn, trong khi giả thuyết H₀ là đúng. Vì p-value lớn hơn mức ý nghĩa thường dùng là 0.05, nên ta không có đủ bằng chứng thống kê để bác bỏ giả thuyết H₀.
Điều này có nghĩa là: chưa thể kết luận rằng tỷ lệ thực sự mua hàng trong tháng 11 là nhỏ hơn 24,31%. Nói cách khác, dữ liệu hiện tại không chứng minh được rằng tháng 11 có tỷ lệ giao dịch thấp hơn so với con số đã quan sát được.
Khoảng tin cậy 95% của kiểm định này nằm trong khoảng từ 0 đến 24,96%, và giá trị 24,31% vẫn nằm bên trong khoảng đó. Điều này càng cho thấy rằng 24,31% vẫn là một ước lượng hợp lý, và tỷ lệ thực sự không nhất thiết phải thấp hơn con số này.
Với kiểm định một phía, không có cơ sở thống kê để khẳng định rằng tỷ lệ mua hàng trong tháng 11 thấp hơn 24,31%. Do đó, ta giữ nguyên giả thuyết H₀, tức là chấp nhận rằng tỷ lệ thực sự có thể bằng hoặc cao hơn mức quan sát được.
# Số lượng và tổng số
slvt <- sum(npt$VisitorType == "Returning_Visitor")
totalvt <- length(npt$VisitorType)
# Ước lượng khoảng tin cậy 95% cho tỷ lệ "Month"
ket_qua1 <- prop.test(x = slvt, n = totalvt, conf.level = 0.95)
# In toàn bộ kết quả (bao gồm cả thông tin kiểm định)
print(ket_qua1)
##
## 1-sample proportions test with continuity correction
##
## data: slvt out of totalvt, null probability 0.5
## X-squared = 6239.3, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
## 0.8493636 0.8618489
## sample estimates:
## p
## 0.8557178
# Chỉ lấy và in khoảng tin cậy
khoang_tin_cay1 <- ket_qua1$conf.int
print(khoang_tin_cay1)
## [1] 0.8493636 0.8618489
## attr(,"conf.level")
## [1] 0.95
# Output sẽ là một vector có 2 giá trị: [giới hạn dưới, giới hạn trên]
cat("Khoảng tin cậy 95% cho tỷ lệ là: (", round(khoang_tin_cay1[1], 4), ", ", round(khoang_tin_cay1[2], 4), ")\n")
## Khoảng tin cậy 95% cho tỷ lệ là: ( 0.8494 , 0.8618 )
Trong phân tích này, mục tiêu là xác định tỷ lệ người truy cập quay lại trang web (Returning Visitor) có khác biệt đáng kể so với giả định tỷ lệ 50% hay không. Giả thuyết được thiết lập như sau:
Giả thuyết gốc (H₀): p = 0.5 (tỷ lệ thực sự của người dùng quay lại là 50%)
Giả thuyết đối (H₁): p ≠ 0.5 (tỷ lệ thực sự khác 50%)
Dữ liệu cho thấy tỷ lệ người dùng quay lại trong mẫu là 85,57%, tức là phần lớn người dùng truy cập không phải là lần đầu. Khoảng tin cậy 95% cho tỷ lệ này nằm trong khoảng từ 84,94% đến 86,18%. Khoảng này không bao gồm giá trị 0.5, cho thấy tỷ lệ thực sự cao hơn nhiều so với mức giả định 50%.
Kết quả kiểm định cũng cho ra p-value < 2.2e-16, một giá trị cực kỳ nhỏ, cho thấy mức độ khác biệt là rất có ý nghĩa thống kê. Vì vậy, ta bác bỏ giả thuyết H₀.
Với tỷ lệ mẫu là 85,57%, khoảng tin cậy chặt chẽ, và giá trị p-value gần bằng 0, có thể kết luận rằng tỷ lệ người truy cập quay lại trang web là cao một cách rõ rệt, và điều này không xảy ra do ngẫu nhiên. Đây là một đặc điểm quan trọng về hành vi người dùng, cho thấy mức độ gắn bó cao với trang web hoặc dịch vụ mà dữ liệu đang phản ánh.
H0 (Giả thuyết không): p ≥ 0.8557178 (Tỷ lệ khách hàng quay lại lớn hơn hoặc bằng 85.57%)\ H1 (Giả thuyết đối): p < 0.8557178 (Tỷ lệ tháng 11 nhỏ hơn 85.57%)
#Kiểm định một phía: Tỷ lệ Nov có lớn hơn 0.5 không?
cat("\n--- KIỂM ĐỊNH MỘT PHÍA (p > 0.8557178) ---\n")
##
## --- KIỂM ĐỊNH MỘT PHÍA (p > 0.8557178) ---
prop.test(slvt, totalvt, p = 0.8557178 , alternative = "greater", conf.level = 0.95)
##
## 1-sample proportions test with continuity correction
##
## data: slvt out of totalvt, null probability 0.8557178
## X-squared = 2.6155e-28, df = 1, p-value = 0.5
## alternative hypothesis: true p is greater than 0.8557178
## 95 percent confidence interval:
## 0.8504347 1.0000000
## sample estimates:
## p
## 0.8557178
Trong kiểm định này, ta xét giả thuyết:
H₀ (Giả thuyết không): p ≥ 0.8557 – tức là tỷ lệ khách hàng quay lại lớn hơn hoặc bằng 85,57%
H₁ (Giả thuyết đối): p < 0.8557 – tức là tỷ lệ khách hàng quay lại nhỏ hơn 85,57%
Kết quả kiểm định trả về giá trị p-value = 0.5, một giá trị rất lớn so với ngưỡng ý nghĩa thông thường (α = 0.05). Điều này cho thấy không có đủ bằng chứng để bác bỏ giả thuyết H₀.
Ngoài ra, khoảng tin cậy 95% cho tỷ lệ thực sự nằm trong khoảng từ 85,04% đến 100%, bao phủ hoàn toàn giá trị 85,57% (giá trị giả định trong H₀). Điều này càng khẳng định rằng tỷ lệ thực sự có thể bằng hoặc cao hơn 85,57%.
Với kết quả kiểm định một phía, không thể kết luận rằng tỷ lệ khách hàng quay lại thấp hơn 85,57%. Ngược lại, dữ liệu hoàn toàn phù hợp với giả thuyết rằng tỷ lệ này bằng hoặc lớn hơn mức đó. Do đó, ta giữ nguyên giả thuyết H₀, và có thể xem tỷ lệ 85,57% là một mức đại diện hợp lý cho hành vi quay lại của người dùng.
# Số lượng và tổng số
slcuoituan <- sum(npt$Weekend == "True")
totalday <- length(npt$Weekend)
# Ước lượng khoảng tin cậy 95% cho tỷ lệ "Month"
ket_qua2 <- prop.test(x = slcuoituan, n = totalday, conf.level = 0.95)
# In toàn bộ kết quả (bao gồm cả thông tin kiểm định)
print(ket_qua2)
##
## 1-sample proportions test with continuity correction
##
## data: slcuoituan out of totalday, null probability 0.5
## X-squared = 3525.4, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
## 0.2251899 0.2401843
## sample estimates:
## p
## 0.2326034
# Chỉ lấy và in khoảng tin cậy
khoang_tin_cay2 <- ket_qua2$conf.int
print(khoang_tin_cay2)
## [1] 0.2251899 0.2401843
## attr(,"conf.level")
## [1] 0.95
# Output sẽ là một vector có 2 giá trị: [giới hạn dưới, giới hạn trên]
cat("Khoảng tin cậy 95% cho tỷ lệ là: (", round(khoang_tin_cay2[1], 4), ", ", round(khoang_tin_cay2[2], 4), ")\n")
## Khoảng tin cậy 95% cho tỷ lệ là: ( 0.2252 , 0.2402 )
Trong phân tích này, mục tiêu là đánh giá tỷ lệ khách truy cập vào cuối tuần có khác biệt so với mức giả định 50% hay không. Ta đặt:
Giả thuyết gốc (H₀): p = 0.5 (tức là tỷ lệ truy cập vào cuối tuần là 50%)
Giả thuyết đối (H₁): p ≠ 0.5 (tức là tỷ lệ truy cập khác 50%)
Kết quả cho thấy tỷ lệ truy cập vào cuối tuần trong mẫu là 23,26% (p = 0.2326). Khoảng tin cậy 95% cho tỷ lệ này nằm trong khoảng từ 22,52% đến 24,02%, tức là thấp hơn đáng kể so với mức 50%.
Bên cạnh đó, kiểm định tỷ lệ cho kết quả p-value < 2.2e-16, một giá trị cực kỳ nhỏ, cho thấy khác biệt giữa tỷ lệ quan sát và tỷ lệ giả định (0.5) là có ý nghĩa thống kê. Như vậy, có thể bác bỏ giả thuyết H₀.
Tỷ lệ khách truy cập vào cuối tuần là khoảng 23,26%, thấp hơn nhiều so với mức 50%.
Sự khác biệt này là có ý nghĩa thống kê, không phải ngẫu nhiên.
Do đó, có thể kết luận rằng phần lớn khách truy cập vào trang web xảy ra trong các ngày trong tuần, chứ không phải vào cuối tuần.
H0 (Giả thuyết không): p ≥ 0.2401843 (Tỷ lệ khách hàng quay lại lớn hơn hoặc bằng 24.02%)\ H1 (Giả thuyết đối): p < 0.2401843 (Tỷ lệ tháng 11 nhỏ hơn 24.02%)
#Kiểm định một phía: Tỷ lệ Weekend = True có lớn hơn 0.2401842 không?
cat("\n--- KIỂM ĐỊNH MỘT PHÍA (p > 0.2401842) ---\n")
##
## --- KIỂM ĐỊNH MỘT PHÍA (p > 0.2401842) ---
prop.test(slcuoituan, totalday, p = 0.2401842 , alternative = "greater", conf.level = 0.95)
##
## 1-sample proportions test with continuity correction
##
## data: slcuoituan out of totalday, null probability 0.2401842
## X-squared = 3.8413, df = 1, p-value = 0.975
## alternative hypothesis: true p is greater than 0.2401842
## 95 percent confidence interval:
## 0.2263639 1.0000000
## sample estimates:
## p
## 0.2326034
Để kiểm tra xem tỷ lệ khách truy cập vào cuối tuần (Weekend = True) có cao hơn 24,02% hay không, một phép kiểm định một phía đã được thực hiện với giả thuyết H₀: p ≤ 0.2402 và giả thuyết đối H₁: p > 0.2402. Kết quả cho thấy tỷ lệ quan sát được trong mẫu là 23,26%, với khoảng tin cậy 95% cho tỷ lệ thực sự nằm trong khoảng từ 22,64% đến 100%. Tuy nhiên, giá trị p-value thu được là 0.975, một con số rất lớn so với ngưỡng ý nghĩa thông thường (α = 0.05).
Điều này cho thấy không có đủ bằng chứng thống kê để bác bỏ giả thuyết H₀, tức là không thể kết luận rằng tỷ lệ khách truy cập vào cuối tuần vượt quá 24,02%. Ngược lại, kết quả còn gợi ý rằng tỷ lệ truy cập cuối tuần nhiều khả năng thấp hơn mức này, mặc dù kiểm định hiện tại không đủ mạnh để khẳng định chắc chắn điều đó. Như vậy, trong bối cảnh dữ liệu hiện có, có thể xem tỷ lệ khách truy cập vào cuối tuần là tương đối ổn định và không vượt quá mức 24,02%.
# Số lượng và tổng số
sltrue <- sum(npt$Revenue == "True")
total <- length(npt$Revenue)
# Ước lượng khoảng tin cậy 95% cho tỷ lệ "Month"
ket_qua3 <- prop.test(x = sltrue, n = total, conf.level = 0.95)
# In toàn bộ kết quả (bao gồm cả thông tin kiểm định)
print(ket_qua3)
##
## 1-sample proportions test with continuity correction
##
## data: sltrue out of total, null probability 0.5
## X-squared = 5877.6, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.5
## 95 percent confidence interval:
## 0.1484287 0.1612768
## sample estimates:
## p
## 0.1547445
# Chỉ lấy và in khoảng tin cậy
khoang_tin_cay3 <- ket_qua3$conf.int
print(khoang_tin_cay3)
## [1] 0.1484287 0.1612768
## attr(,"conf.level")
## [1] 0.95
# Output sẽ là một vector có 2 giá trị: [giới hạn dưới, giới hạn trên]
cat("Khoảng tin cậy 95% cho tỷ lệ là: (", round(khoang_tin_cay3[1], 4), ", ", round(khoang_tin_cay3[2], 4), ")\n")
## Khoảng tin cậy 95% cho tỷ lệ là: ( 0.1484 , 0.1613 )
Trong phần phân tích này, mục tiêu là đánh giá tỷ lệ khách truy cập thực hiện hành vi tạo doanh thu (Revenue = True) và xem xét liệu tỷ lệ này có khác biệt có ý nghĩa thống kê so với mức giả định 50% hay không. Ta thiết lập:
Giả thuyết H₀ (giả thuyết không): p = 0.5 (tức là 50% khách truy cập tạo doanh thu)
Giả thuyết H₁ (giả thuyết đối): p ≠ 0.5 (tỷ lệ thực sự khác 50%)
Kết quả kiểm định cho thấy tỷ lệ khách hàng tạo doanh thu trong mẫu là 15,47%, với khoảng tin cậy 95% nằm trong khoảng từ 14,84% đến 16,13%. Khoảng tin cậy này nằm hoàn toàn dưới mức 50%, cho thấy sự khác biệt rất rõ ràng. Ngoài ra, giá trị p-value < 2.2e-16, cho thấy sự khác biệt giữa tỷ lệ quan sát và tỷ lệ giả định là có ý nghĩa thống kê rất cao.
Với tỷ lệ tạo doanh thu thực tế chỉ khoảng 15,47%, thấp hơn rất nhiều so với mức giả định 50%, và kết quả kiểm định cho thấy sự khác biệt này không xảy ra ngẫu nhiên, có thể khẳng định rằng phần lớn khách truy cập không tạo ra doanh thu. Đây là một phát hiện quan trọng về hành vi người dùng và có thể là cơ sở để doanh nghiệp xem xét lại hiệu quả của chiến lược chuyển đổi khách truy cập thành khách hàng mua hàng.
H0 (Giả thuyết không): p ≥ 0.1613 (Tỷ lệ khách hàng quay lại lớn hơn hoặc bằng 16.13%) \ H1 (Giả thuyết đối): p < 0.1613 (Tỷ lệ tháng 11 nhỏ hơn 16.13%)
#Kiểm định một phía: Tỷ lệ Weekend = True có lớn hơn 0.16132 không?
cat("\n--- KIỂM ĐỊNH MỘT PHÍA (p > 0.1613 ) ---\n")
##
## --- KIỂM ĐỊNH MỘT PHÍA (p > 0.1613 ) ---
prop.test(sltrue, total, p = 0.1613 , alternative = "greater", conf.level = 0.95)
##
## 1-sample proportions test with continuity correction
##
## data: sltrue out of total, null probability 0.1613
## X-squared = 3.8685, df = 1, p-value = 0.9754
## alternative hypothesis: true p is greater than 0.1613
## 95 percent confidence interval:
## 0.149423 1.000000
## sample estimates:
## p
## 0.1547445
Trong kiểm định này, mục tiêu là xác định xem tỷ lệ khách truy cập tạo ra doanh thu (Revenue = True) có cao hơn 16,13% hay không. Các giả thuyết được thiết lập như sau:
Giả thuyết H₀ (giả thuyết không): p ≤ 0.1613 (tỷ lệ thực sự không vượt quá 16,13%)
Giả thuyết H₁ (giả thuyết đối): p > 0.1613 (tỷ lệ thực sự lớn hơn 16,13%)
Kết quả kiểm định cho thấy tỷ lệ mẫu quan sát được là 15,47%, với khoảng tin cậy 95% từ 14,94% đến 100%, và giá trị p-value = 0.9754. Đây là một giá trị rất lớn, vượt xa ngưỡng ý nghĩa 0.05, dẫn đến không đủ bằng chứng thống kê để bác bỏ giả thuyết H₀.
Dữ liệu hiện tại không cho thấy tỷ lệ khách hàng tạo doanh thu lớn hơn 16,13%. Ngược lại, kết quả kiểm định cho thấy tỷ lệ này nhiều khả năng thấp hơn hoặc xấp xỉ mức đó, mặc dù không đủ mạnh để kết luận chắc chắn rằng nó thấp hơn. Vì vậy, ta giữ nguyên giả thuyết H₀, và có thể nói rằng tỷ lệ chuyển đổi từ khách truy cập thành khách tạo doanh thu vẫn còn rất thấp, không vượt quá mức 16,13%.
# Tạo bảng tần số chéo giữa VisitorType và Month
tab2 <- table(npt$VisitorType, npt$Month)
# Lọc chỉ lấy tháng Dec và Feb và loại bỏ VisitorType = "Other"
tab2_sub <- tab2[c("New_Visitor", "Returning_Visitor"), c("Dec", "Feb")]
# Thêm tổng hàng và cột
tab2_sub_with_margins <- addmargins(tab2_sub)
# In bảng kết quả
cat("Bảng tần suất Visitor Type theo Month (Dec và Feb):\n")
## Bảng tần suất Visitor Type theo Month (Dec và Feb):
print(tab2_sub_with_margins)
##
## Dec Feb Sum
## New_Visitor 335 1 336
## Returning_Visitor 1330 183 1513
## Sum 1665 184 1849
# Lập bảng tần suất theo hàng (theo từng trạng thái hồi phục)
tab2_sub_prop <- prop.table(tab2_sub, margin = 1)
# Làm tròn để hiển thị đẹp hơn (ví dụ: 4 chữ số thập phân)
tab2_sub_prop_rounded <- round(tab2_sub_prop, 4)
# Hiển thị bảng tần suất
tab2_sub_prop_rounded
##
## Dec Feb
## New_Visitor 0.997 0.003
## Returning_Visitor 0.879 0.121
Trong nghiên cứu này, tháng 12 (December) và tháng 2 (February) được chọn làm hai thời điểm đại diện để so sánh cơ cấu khách truy cập theo loại hình “New Visitor” và “Returning Visitor”. Việc lựa chọn hai tháng này không chỉ dựa trên số liệu thực tế có sự chênh lệch rõ rệt, mà còn dựa trên yếu tố thời điểm trong năm có thể ảnh hưởng mạnh đến hành vi tiêu dùng.
Cụ thể, tháng 12 là giai đoạn cao điểm cuối năm, thường gắn với các hoạt động khuyến mãi, lễ hội, và nhu cầu mua sắm tăng cao. Đây cũng là thời điểm có thể thu hút lượng lớn khách truy cập mới do tác động từ các chiến dịch tiếp thị. Trái lại, tháng 2 thường là thời điểm sau kỳ nghỉ lễ dài, nơi hành vi truy cập có xu hướng chững lại, và lượng khách truy cập chủ yếu là những người đã quen thuộc với trang web – tức nhóm khách quay lại.
Dữ liệu tần suất cho thấy trong tháng 12 có 335 lượt khách mới và 1330 lượt khách quay lại, trong khi tháng 2 chỉ có 1 lượt khách mới và 183 lượt khách quay lại. Sự tương phản mạnh mẽ giữa hai tháng về cơ cấu khách hàng giúp làm nổi bật xu hướng tiếp cận và giữ chân người dùng ở từng thời điểm. Việc sử dụng bảng tần suất 2x2 cho hai loại khách trong hai tháng này là hợp lý để tiến hành các phân tích định lượng sâu hơn, chẳng hạn như tính tỷ lệ rủi ro (Risk Ratio) hoặc kiểm định sự khác biệt có ý nghĩa thống kê giữa hai nhóm.
chisq.test(tab2_sub)
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: tab2_sub
## X-squared = 41.397, df = 1, p-value = 1.242e-10
Kết quả kiểm định Chi-squared với hiệu chỉnh Yates cho bảng tần suất giữa hai biến Visitor Type (New Visitor và Returning Visitor) và Month (tháng 12 và tháng 2) cho thấy giá trị thống kê Chi-squared = 41.397 với bậc tự do = 1 và p-value = 1.242 × 10⁻¹⁰. Với p-value nhỏ hơn rất nhiều so với ngưỡng ý nghĩa 0.05, có thể kết luận rằng hai biến này có mối quan hệ với nhau về mặt thống kê.
Cụ thể, điều này có nghĩa là cơ cấu khách truy cập (giữa khách mới và khách quay lại) thay đổi theo từng tháng, và sự khác biệt được quan sát giữa tháng 12 và tháng 2 không phải là ngẫu nhiên. Mối quan hệ này phản ánh sự biến động hành vi người dùng theo thời điểm, cho thấy các tháng khác nhau trong năm có thể thu hút các nhóm khách hàng khác nhau. Đây là một phát hiện quan trọng giúp doanh nghiệp có cơ sở để tùy chỉnh chiến lược thu hút và giữ chân khách hàng theo từng giai đoạn trong năm.
Giả thuyết kiểm định được thiết lập như sau:
\[ \begin{aligned} H_0 &: p_1 - p_2 = 0 \quad \text{(Tỷ lệ khách quay lại ở hai tháng là như nhau)} \\ H_1 &: p_1 - p_2 < 0 \quad \text{(Tỷ lệ khách quay lại ở tháng 12 thấp hơn tháng 2)} \end{aligned} \]
prop.test(x = c(1330, 183), n = c(1665, 184), alternative = "less")
##
## 2-sample test for equality of proportions with continuity correction
##
## data: c(1330, 183) out of c(1665, 184)
## X-squared = 41.397, df = 1, p-value = 6.211e-11
## alternative hypothesis: less
## 95 percent confidence interval:
## -1.0000000 -0.1742923
## sample estimates:
## prop 1 prop 2
## 0.7987988 0.9945652
Kết quả kiểm định tỷ lệ một phía được thực hiện nhằm đánh giá xem tỷ
lệ khách quay lại trong tháng 12 có thấp hơn tháng 2 hay không. Từ dữ
liệu thu thập được, tỷ lệ khách quay lại trong tháng 12 là 79,88%
(1330/1665), trong khi tháng 2 là 99,46% (183/184). Hàm
prop.test() được sử dụng với tham số
alternative = "less" để kiểm định giả thuyết \(H_0: p_{\text{Dec}} \geq p_{\text{Feb}}\)
và \(H_1: p_{\text{Dec}} <
p_{\text{Feb}}\).
Kết quả kiểm định cho thấy \(\chi^2 = 41.397\), với p-value = \(6.211 \times 10^{-11}\), và khoảng tin cậy 95% cho hiệu số tỷ lệ \((p_{\text{Dec}} - p_{\text{Feb}})\) nằm trong khoảng từ –1.000 đến –0.174. Vì p-value nhỏ hơn 0.05 và khoảng tin cậy không chứa 0, ta bác bỏ giả thuyết \(H_0\) và kết luận rằng tỷ lệ khách quay lại trong tháng 12 thực sự thấp hơn tháng 2, với ý nghĩa thống kê rất rõ rệt.
library(epitools)
# Dữ liệu: số khách quay lại và số không quay lại cho từng tháng
# Ví dụ với Feb: 183 quay lại, 1 không quay lại | Dec: 1330 quay lại, 397 không quay lại
mat <- matrix(c(183, 1, 1330, 397), nrow = 2, byrow = TRUE)
colnames(mat) <- c("Returning", "New")
rownames(mat) <- c("Feb", "Dec")
# Tính risk ratio
riskratio(mat, method = "wald")
## $data
## Returning New Total
## Feb 183 1 184
## Dec 1330 397 1727
## Total 1513 398 1911
##
## $measure
## NA
## risk ratio with 95% C.I. estimate lower upper
## Feb 1.00000 NA NA
## Dec 42.29763 5.978651 299.2463
##
## $p.value
## NA
## two-sided midp.exact fisher.exact chi.square
## Feb NA NA NA
## Dec 0 1.927512e-18 1.022758e-12
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
Với RR = 42.297, điều đó có nghĩa là:
or_result1 <- oddsratio(mat)
print(or_result1)
## $data
## Returning New Total
## Feb 183 1 184
## Dec 1330 397 1727
## Total 1513 398 1911
##
## $measure
## NA
## odds ratio with 95% C.I. estimate lower upper
## Feb 1.00000 NA NA
## Dec 47.68905 10.8887 1100.19
##
## $p.value
## NA
## two-sided midp.exact fisher.exact chi.square
## Feb NA NA NA
## Dec 0 1.927512e-18 1.022758e-12
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "median-unbiased estimate & mid-p exact CI"
Với OR = 47.689, điều này có nghĩa là:
Tỷ lệ khách hàng mới trên tỷ lệ khách quay lại trong tháng 12 cao hơn gấp 47.689 lần so với tháng 2
# Tạo bảng tần số chéo giữa VisitorType và Month
tab3 <- table(npt$VisitorType, npt$Revenue)
tab3_sub <- tab3[c("New_Visitor", "Returning_Visitor"), c("True", "False")]
# Thêm tổng hàng và cột
tab3_sub_with_margins <- addmargins(tab3_sub)
# In bảng kết quả
cat("Bảng tần suất Visitor Type Có Mua Hàng Hay Không (True và False):\n")
## Bảng tần suất Visitor Type Có Mua Hàng Hay Không (True và False):
print(tab3_sub_with_margins)
##
## True False Sum
## New_Visitor 422 1272 1694
## Returning_Visitor 1470 9081 10551
## Sum 1892 10353 12245
# Lập bảng tần suất theo hàng (theo từng trạng thái hồi phục)
tab3_sub_prop <- prop.table(tab3_sub, margin = 1)
# Làm tròn để hiển thị đẹp hơn (ví dụ: 4 chữ số thập phân)
tab3_sub_prop_rounded <- round(tab3_sub_prop, 4)
# Hiển thị bảng tần suất
tab3_sub_prop_rounded
##
## True False
## New_Visitor 0.2491 0.7509
## Returning_Visitor 0.1393 0.8607
Giả thuyết kiểm định được thiết lập như sau:
\[ \begin{aligned} H_0 &: p_1 - p_2 = 0 \quad \text{(Tỷ lệ mua hàng ở hai nhóm là như nhau)} \\ H_1 &: p_1 - p_2 > 0 \quad \text{(Tỷ lệ mua hàng ở nhóm khách mới lớn hơn nhóm khách quay lại)} \end{aligned} \]
# Số người mua hàng trong mỗi nhóm
counts1 <- c(tab3_sub["New_Visitor", "True"],
tab3_sub["Returning_Visitor", "True"])
# Tổng số người mỗi nhóm (mua + không mua)
totals1 <- c(sum(tab3_sub["New_Visitor", ]),
sum(tab3_sub["Returning_Visitor", ]))
# Kiểm định hiệu tỷ lệ: p1 < p2 (khách mới mua ít hơn khách quay lại)
prop.test(counts1, totals1, alternative = "greater")
##
## 2-sample test for equality of proportions with continuity correction
##
## data: counts1 out of totals1
## X-squared = 133.84, df = 1, p-value < 2.2e-16
## alternative hypothesis: greater
## 95 percent confidence interval:
## 0.09129648 1.00000000
## sample estimates:
## prop 1 prop 2
## 0.2491145 0.1393233
Phép kiểm định tỷ lệ hai mẫu một phía được thực hiện nhằm đánh giá xem tỷ lệ khách mua hàng (Revenue = “True”) ở nhóm khách quay lại (Returning Visitor) có cao hơn nhóm khách mới (New Visitor) hay không. Kết quả cho thấy:
Vì p-value nhỏ hơn 0.05 và khoảng tin cậy không chứa giá trị 0, ta
bác bỏ giả thuyết H₀ và kết luận rằng:
> Tỷ lệ khách mua hàng trong nhóm Returning Visitor thực sự
cao hơn so với nhóm New Visitor, với độ tin cậy rất cao.
Kết quả này cho thấy nhóm khách quay lại có xu hướng mua hàng nhiều hơn đáng kể, phản ánh mức độ cam kết hoặc quen thuộc cao hơn với trang web. Do đó, đây là nhóm khách hàng tiềm năng cần được doanh nghiệp ưu tiên giữ chân và chăm sóc.
#RiskRatio
# Tính risk ratio
riskratio(tab3_sub, method = "wald")
## $data
##
## True False Total
## New_Visitor 422 1272 1694
## Returning_Visitor 1470 9081 10551
## Total 1892 10353 12245
##
## $measure
## risk ratio with 95% C.I.
## estimate lower upper
## New_Visitor 1.000000 NA NA
## Returning_Visitor 1.146216 1.114029 1.179332
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## New_Visitor NA NA NA
## Returning_Visitor 0 5.309485e-28 3.872622e-31
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
Với RR = 1.146, điều này có nghĩa là :
or_result2 <- oddsratio(tab3_sub)
print(or_result2)
## $data
##
## True False Total
## New_Visitor 422 1272 1694
## Returning_Visitor 1470 9081 10551
## Total 1892 10353 12245
##
## $measure
## odds ratio with 95% C.I.
## estimate lower upper
## New_Visitor 1.000000 NA NA
## Returning_Visitor 2.049723 1.810839 2.316751
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## New_Visitor NA NA NA
## Returning_Visitor 0 5.309485e-28 3.872622e-31
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "median-unbiased estimate & mid-p exact CI"
Với OD = 2.049, điều này có nghĩa: