Bootstrap, Monte Carlo


12

Tôi đã được đặt câu hỏi sau đây như là một phần của bài tập về nhà:

Thiết kế và thực hiện một nghiên cứu mô phỏng để kiểm tra hiệu suất của bootstrap để có được khoảng tin cậy 95% trên giá trị trung bình của một mẫu dữ liệu đơn biến. Việc thực hiện của bạn có thể ở R hoặc SAS.

Các khía cạnh của hiệu suất bạn có thể muốn xem xét là độ bao phủ của khoảng tin cậy (nghĩa là tỷ lệ số lần khoảng tin cậy chứa giá trị trung bình thực) và biến thiên Monte Carlo (nghĩa là giới hạn độ tin cậy trên và dưới khác nhau bao nhiêu giữa các mô phỏng) '

Có ai biết làm thế nào để đi về khía cạnh biến thể Monte Carlo của điều này? Tôi dường như thậm chí không thể tìm ra một thuật toán hay bất cứ thứ gì. Có phải để làm với tích hợp Monte Carlo? Cảm ơn!

Câu trả lời:


18

Sự nhầm lẫn này giữa các thủ tục bootstrap và thủ tục Monte Carlo cứ lặp đi lặp lại, vì vậy có lẽ đây là nơi tốt nhất để giải quyết nó. (Các ví dụ về Rmã cũng có thể giúp với bài tập về nhà.)

Hãy xem xét việc thực hiện bootstrap này trong R:

boot <- function(x, t) { # Exact bootstrap of procedure t on data x
    n <- length(x)       # Must lie between 2 and 7 inclusive.
    if (n > 7) {
        stop("Sample size exceeds 7; use an approximate method instead.")
    }
    p <- c(n, 1:(n-1))
    a <- rep(x, n^(n-1))
    dim(a) <- rep(n, n)
    y <- as.vector(a)
    while (n > 1) {
        n <- n-1
        a <- aperm(a, p)
        y <- cbind(as.vector(a), y)
    }
    apply(y, 1, t)
}

Một cái nhìn nhanh sẽ xác nhận rằng đây là một phép tính xác định : không có giá trị ngẫu nhiên nào được tạo hoặc sử dụng. (Tôi sẽ để lại chi tiết về hoạt động bên trong của nó để người đọc quan tâm tự tìm ra.)

Các đối số bootlà một lô dữ liệu số trong mảng xvà tham chiếu tđến một hàm (có thể được áp dụng cho các mảng chính xác như x) để trả về một giá trị số duy nhất; nói cách khác, tlà một thống kê . Nó tạo ra tất cả các mẫu có thể có sự thay thế từ xvà áp dụng tcho từng mẫu, do đó tạo ra một số cho mỗi mẫu như vậy: đó là bootstrap một cách ngắn gọn. Giá trị trả về là một mảng biểu thị phân phối bootstrap chính xác củat cho mẫu x.

Ví dụ nhỏ , hãy bootstrap nghĩa của mẫu x= c(1,3):

> boot(c(1,3), mean)
> [1] 1 2 2 3

2(1,3)(1,1)(1,3)(3,1)(3,3)boottt1223, tương ứng, như thể hiện trong đầu ra.

(1,3,3,4,7)

hist(boot(c(1,3,3,4,7), sd))

Biểu đồ của SD

5

> set.seed(17)
> quantile(boot(runif(5, min=0, max=10), sd), .95)[1]
     95% 
3.835870 

Kết quả cho mẫu ngẫu nhiên đặc biệt này là 3,83587. Điều này là chắc chắn: bạn đã gọi bootlại với cùng một bộ dữ liệu, câu trả lời sẽ hoàn toàn giống nhau. Nhưng làm thế nào câu trả lời có thể thay đổi với các mẫu ngẫu nhiên khác nhau? Tìm hiểu bằng cách lặp lại quá trình này một vài lần và vẽ biểu đồ kết quả:

> boot.sd <- replicate(100, quantile(boot(runif(5, min=0, max=10), sd), .95)[1])
> hist(boot.sd)

Biểu đồ mô phỏng

01010/122.887

> length(boot.sd[boot.sd >= 10/sqrt(12)]) / length(boot.sd)
[1] 0.75

Nhưng đó không phải là gần 95% danh nghĩa mà chúng tôi đã chỉ định (và đang hy vọng)! Đây là một giá trị của mô phỏng: nó so sánh hy vọng của chúng ta với những gì đang thực sự xảy ra. (Tại sao lại có sự khác biệt? Tôi tin rằng đó là do bootstrapping SD không hoạt động tốt với các mẫu thực sự nhỏ.)

Ôn tập

  • Thống kê Bootstrap về mặt khái niệm cũng giống như bất kỳ thống kê nào khác như độ lệch trung bình hoặc độ lệch chuẩn; họ chỉ có xu hướng mất nhiều thời gian để tính toán. (Xem thông báo cảnh báo trong bootmã!)

  • Mô phỏng Monte-Carlo có thể hữu ích cho việc nghiên cứu cách thống kê bootstrap thay đổi do tính ngẫu nhiên trong việc lấy mẫu. Các biến thể quan sát được trong mô phỏng như vậy là do sự thay đổi trong các mẫu, không phải là biến thể trong bootstrap.

  • nnn


+1 Điều này rất hay. Tôi không nghĩ rằng tôi có thể làm điều đó tốt hơn! Tôi chỉ muốn nói thêm rằng tôi có một số bài viết về hiệu suất của bootstrap trong ước tính tỷ lệ lỗi và cho các khoảng tin cậy khi ước tính phương sai. Những kết quả này có thể được tìm thấy trong ấn bản thứ hai của cuốn sách phương pháp bootstrap của tôi và cuốn sách của tôi về bootstrapping với các ứng dụng cho R.
Michael R. Chernick

Liên kết Amazon để những cuốn sách đang ở đây: amazon.com/... amazon.com/Introduction-Bootstrap-Methods-Applications/dp/...
Michael R. Chernick

Tôi chỉ nói rằng ý tưởng là mô phỏng dữ liệu từ các bản phân phối đã biết áp dụng quy trình quan tâm bootstrap (ví dụ: khoảng tin cậy cho một tham số hoặc ước tính tỷ lệ lỗi của trình phân loại) và bạn có thể đánh giá mức độ của nó vì bạn biết sự thật.
Michael R. Chernick

5

Bootstrap là một kỹ thuật Monte Carlo, trong đó nó liên quan đến một số loại lấy mẫu ngẫu nhiên. Nếu bạn chạy bootstrap hai lần trên cùng một bộ dữ liệu, bạn sẽ nhận được các câu trả lời khác nhau. Càng sử dụng nhiều mẫu trong bootstrap của bạn, bạn càng nhận được ít biến thể.

Phạm vi đề cập đến sự thay đổi của các kết quả trên các tập dữ liệu khác nhau từ cùng một phân phối lấy mẫu giả thuyết.


cảm ơn, tôi sẽ cho rằng nó chỉ có nghĩa là đưa ra mã để xem liệu giới hạn độ tin cậy có khác nhau giữa các mô phỏng không!
Sarah

7
Để chính xác (pedantic?), Chúng ta nên làm rõ rằng bootstrap không phải là một kỹ thuật Monte Carlo. Tuy nhiên, nó thường được tính gần đúng bằng cách sử dụng mô phỏng Monte Carlo vì nó thường không dễ tính để tính toán số lượng quan tâm cụ thể. Tôi thấy từ ngữ của vấn đề rất dễ bị giải thích sai! Người ta phải cẩn thận để phân biệt lấy mẫu lỗi từ Monte Carlo xấp xỉ lỗi. Cái sau chỉ được ước tính hợp lý bằng cách lặp lại xấp xỉ bootstrap MC nhiều lần trên cùng một mẫu, như bạn chỉ ra. :)
Đức hồng y

1

Tôi cũng không chắc ý nghĩa chính xác của " biến thể Monte Carlo " là gì. Chắc chắn có thể xem xét có bao nhiêu biến thể giữa các lần lặp trong những thứ như giá trị của giới hạn trên (hoặc thấp hơn), ví dụ (gợi ý). Có lẽ họ chỉ muốn bạn làm điều này cho Monte Carlo chứ không phải bootstrap? Đó không phải là một yêu cầu tôi sẽ có cho một bài tập, mặc dù. Có lẽ tốt nhất là chỉ hỏi những gì có nghĩa là cụm từ đó.


Cảm ơn bạn đã giúp đỡ! Có lẽ tôi sẽ chỉ xem xét sự thay đổi giữa giới hạn trên và dưới bây giờ và hỏi về Monte Carlo sau. Bây giờ chỉ để tìm hiểu làm thế nào tôi đi về điều đó ..
Sarah

Có một số khả năng ở đây. Một là trên-dưới (nghĩa là sự khác biệt). Giải thích của tôi về cụm từ trong câu hỏi là biến thể ở trên và & biến thể ở dưới (nghĩa là 2 biến thể khác nhau), nhưng tôi cho rằng tôi không thể chắc chắn. Một lưu ý khác, là một phần câu hỏi của bạn về cách tiến hành mô phỏng MC trong R?
gung - Tái lập Monica

Tôi đi đến kết luận rằng nó đang tìm kiếm 2 biến thể khác nhau, vì vậy tôi nghĩ rằng tôi sẽ thử nó!
Sarah

1
Đủ công bằng, điều tôi đang thắc mắc bây giờ là, bạn có tốt để đi vào thời điểm này không, hoặc bạn có cần thêm gợi ý về cách tiếp cận những gì chúng tôi đoán câu hỏi đang hỏi không?
gung - Phục hồi Monica

1
Vì vậy, trên mỗi lần lặp, bạn có lưu trữ giới hạn trên & dưới (gợi ý) không?
gung - Phục hồi Monica

1

Sự hiểu biết của tôi về bài tập về nhà này là nó yêu cầu bạn thực hiện mô phỏng Monte Carlo cho một kỹ thuật thống kê nhất định. Nghĩa là, bạn mô phỏng một loạt các tập dữ liệu ngẫu nhiên, áp dụng kỹ thuật này cho các tập dữ liệu này và lưu trữ các số để tóm tắt sau một cách thuận tiện (có nghĩa là, xác suất mô phỏng, v.v.)

Bây giờ, kỹ thuật được đề cập là bootstrap, liên quan đến mô phỏng Monte Carlo bên trong nó (trừ khi, như trình bày của whuber, bạn được yêu cầu thực hiện bootstrap chính xác, điều này rất khó xảy ra). Vì vậy, theo kết quả mô phỏng của bạn, bạn có thể lưu trữ giá trị trung bình mẫu, độ lệch chuẩn mẫu và giới hạn của khoảng tin cậy đối với giá trị trung bình thu được từ bootstrap.

n=10


3
Một điều tôi đã học được khi làm việc với bootstrap chính xác là CI lý thuyết bình thường tiêu chuẩn thường sẽ hoạt động tốt hơn nhiều với các mẫu nhỏ ngay cả khi chúng bị lệch. Bootstrap đi vào chính nó với các mẫu lớn: lý thuyết là một tiệm cận, không phải là chính xác.
whuber

2
@whuber, đó là một quan sát thú vị. Tôi thường nhấn mạnh bản chất tiệm cận của bootstrap (xem cuốn sách The Bootstrap và Edgeworth Expansions của Peter Hall để hiểu lý do tại sao), nhưng lần này đã thất bại.
StasK
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.