Cách thực hiện: Khoảng dự đoán cho hồi quy tuyến tính thông qua bootstrapping


14

Tôi gặp khó khăn để hiểu cách sử dụng bootstrapping để tính toán các khoảng dự đoán cho mô hình hồi quy tuyến tính. Ai đó có thể phác thảo một thủ tục từng bước? Tôi đã tìm kiếm thông qua google nhưng không có gì thực sự có ý nghĩa với tôi.

Tôi hiểu cách sử dụng bootstrapping để tính khoảng tin cậy cho các tham số mô hình.


1
Điều này được thảo luận chi tiết trong cuốn sách của Davison và Hinkley, Phương pháp Bootstrap và Ứng dụng của họ , cùng với một thuật toán rõ ràng (Thuật toán 6.4). Họ giải thích các khái niệm, cạm bẫy và chi tiết với độ dài lớn hơn có thể trong một câu trả lời hợp lý ở đây.
Glen_b -Reinstate Monica

@Glen_b Cảm ơn bạn đã tham khảo. Thật không may, tôi không ở trong trường đại học hoặc công ty nên tôi không có đủ nguồn lực để mua cuốn sách này.
Tối đa

Nó có thể được đặt hàng từ amazon; một lời giải thích đầy đủ về thuật toán và tất cả các cảnh báo và vấn đề liên quan không thực sự là loại điều bạn có thể bao gồm trong vài trăm từ hoặc thậm chí là một câu trả lời một trang.
Glen_b -Reinstate Monica

1
@Glen_b Tôi đã viết ra thuật toán từ Davison và HInkely --- có một số câu hỏi về CV về điều này, vì vậy tôi nghĩ rằng nó đáng để nỗ lực. Bất kỳ ý kiến ​​bạn có sẽ được đánh giá cao. stats.stackexchange.com/questions/226565/ Kiếm
Bill

Chủ đề này dường như trả lời câu hỏi của bạn: stats.stackexchange.com/questions/226565/NH
user2683832

Câu trả lời:


7

Khoảng tin cậy có tính đến độ không đảm bảo của ước tính. Khoảng dự đoán thêm vào điều này sự không chắc chắn cơ bản. R's predict.lmsẽ cung cấp cho bạn khoảng dự đoán cho mô hình tuyến tính. Từ đó, tất cả những gì bạn phải làm là chạy nó liên tục trên các mẫu bootstrapping.

n <- 100
n.bs <- 30

dat <- data.frame( x<-runif(n), y=x+runif(n) )
plot(y~x,data=dat)


regressAndPredict <- function( dat ) {
  model <- lm( y~x, data=dat )
  predict( model, interval="prediction" )
}

regressAndPredict(dat)

replicate( n.bs, regressAndPredict(dat[ sample(seq(n),replace=TRUE) ,]) )

Kết quả replicatelà một mảng 3 chiều ( nx 3x n.bs). Chiều dài 3 chiều bao gồm giá trị được trang bị cho từng thành phần dữ liệu và giới hạn dưới / trên của khoảng dự đoán 95%.

Phương pháp Gary King

Tùy thuộc vào những gì bạn muốn, có một phương pháp tuyệt vời của King, Tomz và Wittenberg . Nó tương đối dễ thực hiện và tránh các vấn đề về bootstrapping cho các ước tính nhất định (ví dụ max(Y)).

Tôi sẽ trích dẫn từ định nghĩa của ông về sự không chắc chắn cơ bản ở đây, vì nó khá hợp lý:

Một dạng biến thiên thứ hai, sự không chắc chắn cơ bản được biểu thị bởi thành phần ngẫu nhiên (phân phối f) trong Công thức 1, là kết quả của vô số các sự kiện cơ hội như thời tiết hoặc bệnh tật có thể ảnh hưởng đến Y nhưng không được bao gồm trong X. chúng tôi biết các giá trị ngoại lệ của các tham số (do đó loại bỏ độ không đảm bảo ước tính), độ không đảm bảo cơ bản sẽ ngăn chúng tôi dự đoán Y mà không gặp lỗi.


3
Không chắc chắn cách bạn xây dựng khoảng tin cậy từ ma trận các khoảng dự đoán n.bs này.
B_Miner

1

Bootstrapping không thừa nhận bất kỳ kiến ​​thức nào về hình thức phân phối cha mẹ cơ bản mà từ đó mẫu phát sinh. Ước tính tham số thống kê cổ điển truyền thống dựa trên giả định quy tắc. Bootstrap liên quan đến tính phi quy tắc và chính xác hơn trong thực tế so với các phương pháp cổ điển.

Bootstrapping thay thế sức mạnh tính toán thô của máy tính để phân tích lý thuyết nghiêm ngặt. Nó là một ước tính cho phân phối lấy mẫu của một thuật ngữ lỗi tập dữ liệu. Bootstrapping bao gồm: lấy mẫu lại dữ liệu đặt một số lần xác định, tính giá trị trung bình từ mỗi mẫu và tìm ra lỗi tiêu chuẩn của giá trị trung bình.

Đoạn mã Rv sau đây thể hiện khái niệm:

Ví dụ thực tế này cho thấy tính hữu ích của bootstrapping và ước tính lỗi tiêu chuẩn. Các lỗi tiêu chuẩn được yêu cầu để tính khoảng tin cậy.

Giả sử bạn có tập dữ liệu bị lệch "a":

a<-rexp(395, rate=0.1)          # Create skewed data

trực quan hóa tập dữ liệu bị lệch

plot(a,type="l")                # Scatter plot of the skewed data
boxplot(a,type="l")             # Box plot of the skewed data
hist(a)                         # Histogram plot of the skewed data

Thực hiện thủ tục bootstrapping:

n <- length(a)                  # the number of bootstrap samples should equal the original data set
    xbarstar <- c()                 # Declare the empty set “xbarstar” variable which will be holding the mean of every bootstrap iteration
    for (i in 1:1000) {             # Perform 1000 bootstrap iteration
        boot.samp <- sample(a, n, replace=TRUE) #”Sample” generates the same number of elements as the original data set
    xbarstar[i] <- mean(boot.samp)} # “xbarstar” variable  collects 1000 averages of the original data set
    ## 
    plot(xbarstar)                  # Scatter plot of the bootstrapped data
    boxplot(xbarstar)               # Box plot of the bootstrapped data
    hist(xbarstar)                  # Histogram plot of the bootstrapped data

    meanOfMeans <- mean(xbarstar)
    standardError <- sd(xbarstar)    # the standard error is the standard deviation of the mean of means
    confidenceIntervalAboveTheMean <- meanOfMeans + 1.96 * standardError # for 2 standard deviation above the mean 
    confidenceIntervalBelowTheMean <- meanOfMeans - 1.96 * standardError # for 2 standard deviation above the mean 
    confidenceInterval <- confidenceIntervalAboveTheMean + confidenceIntervalBelowTheMean
    confidenceInterval

1
Cảm ơn Ragy cho ví dụ. Tuy nhiên, từ những gì tôi có thể thấy câu trả lời của bạn không bao gồm việc tính toán các khoảng dự đoán bằng cách sử dụng bootstrap. Như tôi đã nói trong câu trả lời của mình, tôi đã hiểu cách sử dụng bootstrapping để tính khoảng tin cậy - điều mà mã của bạn dường như làm.
Tối đa
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.