Làm cách nào để tính khoảng tin cậy cho phân phối không bình thường?


21

Tôi có 383 mẫu có độ lệch lớn đối với một số giá trị phổ biến, làm thế nào để tôi tính được 95% CI cho giá trị trung bình? CI mà tôi tính toán dường như tắt, mà tôi giả sử là do dữ liệu của tôi không giống như một đường cong khi tôi tạo biểu đồ. Vì vậy, tôi nghĩ rằng tôi phải sử dụng một cái gì đó như bootstrapping, điều mà tôi không hiểu rõ lắm.


2
Một giải pháp sẽ được sử dụng CI tiệm cận mà làm cho việc sử dụng thực tế là RV có một phân phối chuẩn tiêu chuẩn giới hạn. Mẫu của bạn khá lớn nên có thể tạo ra một xấp xỉ tốt. X¯μS/n
JohnK

1
Không, bạn sẽ thấy phạm vi bảo hiểm đuôi thực sự xấu ở cả hai đuôi của khoảng tin cậy khi sử dụng phương pháp đó. Phạm vi bảo hiểm trung bình có thể may mắn là OK nhưng cả hai tỷ lệ lỗi đuôi sẽ sai.
Frank Harrell

2
"Sai lệch nặng nề đối với một số giá trị chung" nghĩa là gì? Lưu ý rằng thiên vị có một ý nghĩa cụ thể trong thống kê; bạn nên cố gắng tránh nó nếu bạn không có ý đó. Bạn chỉ đơn giản có nghĩa là "một số giá trị cụ thể xảy ra rất thường xuyên"? Bạn có thể hiển thị các tính toán của bạn và một số hiển thị hoặc bảng dữ liệu của bạn?
Glen_b -Reinstate Monica

Câu trả lời:


21

Có, bootstrap là một thay thế để có được khoảng tin cậy cho giá trị trung bình (và bạn phải nỗ lực một chút nếu bạn muốn hiểu phương pháp).

Ý tưởng là như sau:

  1. Lấy mẫu lại với B thay thế lần.
  2. Đối với mỗi mẫu này tính trung bình mẫu.
  3. Tính toán khoảng tin cậy bootstrap thích hợp .

Liên quan đến bước cuối cùng, có một số loại khoảng tin cậy bootstrap (BCI). Các tài liệu tham khảo sau đây trình bày một cuộc thảo luận về các thuộc tính của các loại BCI khác nhau:

http://staff.ustc.edu.cn/~zwp/teach/Stat-Comp/Efron_Bootstrap_CIs.pdf

http://www.tau.ac.il/~saharon/Boot/10.1.1.133.8405.pdf

Đó là một thực hành tốt để tính toán một số BCI và cố gắng hiểu sự khác biệt có thể có giữa chúng.

Trong R, bạn có thể dễ dàng thực hiện ý tưởng này bằng cách sử dụng gói R 'boot' như sau:

rm(list=ls())
# Simulated data
set.seed(123)
data0 = rgamma(383,5,3)
mean(data0) # Sample mean

hist(data0) # Histogram of the data

library(boot) 

# function to obtain the mean
Bmean <- function(data, indices) {
  d <- data[indices] # allows boot to select sample 
    return(mean(d))
} 

# bootstrapping with 1000 replications 
results <- boot(data=data0, statistic=Bmean, R=1000)

# view results
results 
plot(results)

# get 95% confidence interval 
boot.ci(results, type=c("norm", "basic", "perc", "bca"))

3
Bước cuối cùng, tính toán một số, ngụ ý câu cá cho một CI bạn thích từ kết quả. Bạn nên quyết định loại CI bạn muốn dựa trên những gì họ đang có trước đó.
Giăng

@ John khác CI có tính chất khác nhau. Đó là một thực hành tốt để kiểm tra sự khác biệt có thể có (và cố gắng điều tra nguồn gốc của điều này). Nó không phải là về câu cá cho một kết quả thuận tiện.
Munchausen

Hoàn toàn, nhưng không có một mô tả như vậy về lý do trong câu trả lời của bạn, nó "ngụ ý" câu cá. Và bạn vẫn không nói rằng việc chọn CI mà bạn muốn trước tiên là rất quan trọng. Tôi đang đề nghị cập nhật câu trả lời với một số thông tin quan trọng cho một người hỏi ngây thơ. Sẽ tốt hơn nữa nếu bạn nói rõ CI nào bạn thường thích và tại sao, hoặc bạn thích cái nào hơn trong trường hợp như cái này và tại sao.
Giăng

2
@IhaveCandy: Không. Nó thể hiện Định lý giới hạn trung tâm, tức là cách phân phối lấy mẫu của giá trị trung bình có xu hướng bình thường, ngay cả đối với các giá trị theo phân phối rất "bất thường". Đó là lý do tại sao khoảng tin cậy z đơn giản sẽ không khác nhiều so với bất kỳ giải pháp ưa thích nào khác, ví dụ bootstrap.
Michael M

1
@IhaveCandy Xin vui lòng xem nhận xét của tôi ở trên, Michael Mayer đang đưa ra quan điểm tương tự.
JohnK

8

Một lựa chọn tiêu chuẩn khác là tính toán CI bằng xét nghiệm Wilcoxon. Trong R

wilcox.test(your-data, conf.int = TRUE, conf.level = 0.95)

Thật không may, nó cung cấp cho bạn CI xung quanh trung vị (giả) không phải là trung bình, nhưng sau đó nếu dữ liệu nặng không bình thường thì có thể trung vị là một biện pháp thông tin hơn.


2

Đối với dữ liệu thông thường nhật ký, Olsson (2005) đề xuất 'phương pháp Cox đã sửa đổi'

XE(X)= =θđăng nhập(θ)

Y¯= =S22±tdfS2n+S42(n-1)

Ở đâu Y= =đăng nhập(X), giá trị trung bình mẫu của YY¯ và phương sai mẫu của YS2. Đối với df, sử dụng n-1.

Một hàm R bên dưới:

ModifiedCox <- function(x){
  n <- length(x)
  y <- log(x)
  y.m <- mean(y)
  y.var <- var(y)

  my.t <- qt(0.975, df = n-1)

  my.mean <- mean(x)
  upper <- y.m + y.var/2 + my.t*sqrt(y.var/n + y.var^2/(2*(n - 1)))
  lower <- y.m + y.var/2 - my.t*sqrt(y.var/n + y.var^2/(2*(n - 1)))

 return(list(upper = exp(upper), mean = my.mean, lower = exp(lower)))

}

Lặp lại ví dụ từ bài báo của Olsson

CO.level <- c(12.5, 20, 4, 20, 25, 170, 15, 20, 15)

ModifiedCox(CO.level)
$upper
[1] 78.72254

$mean
[1] 33.5

$lower
[1] 12.30929

1

Bạn chỉ có thể sử dụng khoảng tin cậy tiêu chuẩn cho giá trị trung bình: Hãy nhớ rằng khi chúng ta tính khoảng tin cậy cho giá trị trung bình, chúng ta có thể kháng cáo định lý giới hạn trung tâm và sử dụng khoảng chuẩn (sử dụng các điểm tới hạn của phân bố T), ngay cả khi dữ liệu cơ bản là không bình thường. Trong thực tế, miễn là phân phối dữ liệu cơ bản có phương sai hữu hạn, phân phối của mẫu có ý nghĩa vớin= =383các quan sát nên hầu như không thể phân biệt được với một phân phối bình thường. Đây sẽ là trường hợp ngay cả khi phân phối cơ bản của dữ liệu cực kỳ khác với phân phối bình thường.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.