Trước hết, tôi sẽ kiểm tra xem giá trị trung bình có phải là một chỉ số thích hợp cho nhiệm vụ trong tay không. Nếu bạn đang tìm kiếm "giá trị tiêu biểu / hoặc trung tâm" của phân phối bị lệch, giá trị trung bình có thể chỉ cho bạn một giá trị không đại diện. Hãy xem xét phân phối log-normal:
x <- rlnorm(1000)
plot(density(x), xlim=c(0, 10))
abline(v=mean(x), col="red")
abline(v=mean(x, tr=.20), col="darkgreen")
abline(v=median(x), col="blue")
Giá trị trung bình (đường màu đỏ) nằm khá xa so với phần lớn dữ liệu. 20% trung bình cắt (màu xanh lá cây) và trung bình (màu xanh) gần với giá trị "điển hình".
Các kết quả phụ thuộc vào loại phân phối "không bình thường" của bạn (biểu đồ dữ liệu thực tế của bạn sẽ hữu ích). Nếu nó không bị lệch, nhưng có đuôi nặng, các TCTD của bạn sẽ rất rộng.
Trong mọi trường hợp, tôi nghĩ rằng bootstrapping thực sự là một cách tiếp cận tốt, vì nó cũng có thể cung cấp cho bạn các TCTD bất đối xứng. Các R
gói simpleboot
là một khởi đầu tốt:
library(simpleboot)
# 20% trimmed mean bootstrap
b1 <- one.boot(x, mean, R=2000, tr=.2)
boot.ci(b1, type=c("perc", "bca"))
... cho bạn kết quả như sau:
# The bootstrap trimmed mean:
> b1$t0
[1] 1.144648
BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS
Based on 2000 bootstrap replicates
Intervals :
Level Percentile BCa
95% ( 1.062, 1.228 ) ( 1.065, 1.229 )
Calculations and Intervals on Original Scale