Khi phân tích dữ liệu định lượng đôi khi chúng ta gặp một bảng tóm tắt như sau:
| mean | sd | n |
|---|---|---|
| 12.5 | 1.4 | 30 |
| 15.7 | 0.9 | 78 |
Chúng ta cần làm t.test và tính ra p-value để xem hai nhóm trên có khác biệt có ý nghĩa thống kê hay không và p-value là bao nhiêu.
Chúng ta cần một công cụ t test calculator để khi nhập các giá trị của mean, sd, n của x1 và x2 vào thì kết quả xuất ra là giá trị difference của hai mean, Std Error, t và p-value.
Từ nhu cầu này một function đã được tìm thấy như sau:
t.test2 <- function(m1,m2,s1,s2,n1,n2,m0=0,equal.variance=FALSE)
{
if( equal.variance==FALSE )
{
se <- sqrt( (s1^2/n1) + (s2^2/n2) )
# welch-satterthwaite df
df <- ( (s1^2/n1 + s2^2/n2)^2 )/( (s1^2/n1)^2/(n1-1) + (s2^2/n2)^2/(n2-1) )
} else
{
# pooled standard deviation, scaled by the sample sizes
se <- sqrt( (1/n1 + 1/n2) * ((n1-1)*s1^2 + (n2-1)*s2^2)/(n1+n2-2) )
df <- n1+n2-2
}
t <- (m1-m2-m0)/se
dat <- c(m1-m2, se, t, 2*pt(-abs(t),df))
names(dat) <- c("Difference of means", "Std Error", "t", "p-value")
return(dat)
}
Chúng ta nhập dữ liệu bảng trên vào function t.test2 để xem kết quả
t.test2(12.5,15.7,1.4,0.9,30,78)
## Difference of means Std Error t
## -3.200000e+00 2.751689e-01 -1.162922e+01
## p-value
## 3.516968e-14
Tuy nhiên, chúng ta muốn có một công cụ thật gọn gàng, dễ nhớ thay thế function này để tiện áp dụng mỗi khi cần tới.
Từ hướng dẫn tạo R Package trên link http://web.mit.edu/insong/www/pdf/rpackage_instructions.pdf, tôi thực hành tạo ra một package đơn giản đặt tên là TtestCal, viết tắt cho t.test calculator.
Khi cần tính toán các chỉ số cho bảng trên, tôi không cần đi tìm xem function đó bây giờ nằm ở đâu trong máy tính để chép ra RStudio mà chì cần load package TtestCal như sau:
library(TtestCal)
t.test2(12.5,15.7,1.4,0.9,30,78)
## Difference of means Std Error t
## -3.200000e+00 2.751689e-01 -1.162922e+01
## p-value
## 3.516968e-14
Kết quả consistent như mong muốn.
Thử lại với dữ liệu khác
library(TtestCal)
round(t.test2(8.4,10.2,0.87,1.42,37,85), digits = 3)
## Difference of means Std Error t
## -1.800 0.210 -8.564
## p-value
## 0.000
Một trãi nghiệm tạo r package nho nhỏ này giúp ta nghĩ đến việc tạo ra những công cụ hữu ích tương tự như thế khi phải làm việc với những function phức tạp hơn.
Cám ơn các bạn đã đọc bài viết này.