2011-09-28 24 views
15

Tôi đang cố gắng sử dụng boot.ci từ gói boot của R để tính toán khoảng tin cậy bootstrap lệch và lệch được sửa chữa từ bootstrap tham số. Từ việc đọc các trang của người đàn ông và thử nghiệm, tôi đã kết luận rằng tôi phải tính toán jackknife ước tính bản thân mình và cho chúng vào boot.ci, nhưng điều này không được nói rõ ràng ở bất cứ đâu. Tôi đã không thể tìm thấy tài liệu khác, mặc dù công bằng tôi đã không nhìn vào cuốn sách Davison và Hinkley gốc mà mã dựa trên ...khoảng tin cậy bootstrap được điều chỉnh (BCa) với bootstrap tham số trong gói khởi động

Nếu tôi ngây thơ chạy b1 <- boot(...,sim="parametric") và sau đó boot.ci(b1), tôi gặp lỗi influence values cannot be found from a parametric bootstrap. Lỗi này xảy ra nếu và chỉ khi tôi chỉ định type="all" hoặc type="bca"; boot.ci(b1,type="bca") cho cùng một lỗi. Vì vậy, empinf(b1). Cách duy nhất tôi có thể làm những việc cần làm là tính toán ước lượng jackknife một cách rõ ràng (sử dụng empinf() với đối số data) và nạp chúng vào boot.ci.

Construct dữ liệu:

set.seed(101) 
d <- data.frame(x=1:20,y=runif(20)) 
m1 <- lm(y~x,data=d) 

Bootstrap:

b1 <- boot(d$y, 
      statistic=function(yb,...) { 
      coef(update(m1,data=transform(d,y=yb))) 
      }, 
      R=1000, 
      ran.gen=function(d,m) { 
      unlist(simulate(m)) 
      }, 
      mle=m1, 
      sim="parametric") 

Mỹ cho đến nay.

boot.ci(b1) 
boot.ci(b1,type="bca") 
empinf(b1) 

tất cả cung cấp lỗi được mô tả ở trên.

này hoạt động:

L <- empinf(data=d$y,type="jack", 
      stype="i", 
      statistic=function(y,f) { 
       coef(update(m1,data=d[f,])) 
      }) 

boot.ci(b1,type="bca",L=L) 

Có ai biết nếu điều này là cách tôi là nghĩa vụ phải được làm việc đó?

cập nhật: Các tác giả ban đầu của gói boot trả lời một e-mail:

... bạn là chính xác rằng vấn đề này là bạn đang làm một bootstrap tham số . Khoảng thời gian bca được thực hiện khi khởi động là khoảng thời gian không tham số và điều này cần phải được nêu rõ là một cách rõ ràng ở đâu đó. Các công thức cho khoảng thời gian tham số bca không giống nhau và phụ thuộc vào các dẫn xuất của khả năng gia đình ít nhất thuận lợi khi có các thông số phiền toái như trong trường hợp của bạn. (Xem trang 206-207 ở Davison & Hinkley) empinf giả định rằng thống kê là một trong các hình thức được sử dụng để khởi động không tham số (mà bạn đã thực hiện trong ví dụ gọi tới empinf) nhưng cuộc gọi ban đầu của bạn để khởi động (đúng) có thống kê ở dạng khác nhau thích hợp cho lấy lại tham số.

Bạn chắc chắn có thể làm những gì bạn đang làm nhưng tôi không chắc chắn về các thuộc tính lý thuyết của việc trộn lại tham số với ước tính khoảng thời gian không tham số.

+1

Tôi có thể có lợi thế là tôi có sách và có toàn bộ chương về ứng dụng hồi quy. Tuy nhiên, tôi không thể nói, liệu việc đăng kết quả của tôi bằng cách sử dụng 'jack.after.boot' có hữu ích không khi bạn nói rằng bạn tin chắc rằng jackknife cần phải được thực hiện trước. –

Trả lời

4

Sau khi xem trang boot.ci Tôi quyết định sử dụng đối tượng khởi động được xây dựng dọc theo các dòng của ví dụ trong Ch 6 của Davison và Hinkley và xem liệu nó có tạo ra lỗi bạn đã quan sát hay không. Tôi nhận được cảnh báo nhưng không có lỗi.:

require(boot) 
lmcoef <- function(data, i){ 
     d <- data[i, ] 
     d.reg <- lm(y~x, d) 
     c(coef(d.reg)) } 
lmboot <- boot(d, lmcoef, R=999) 
m1 
boot.ci(lmboot, index=2) # I am presuming that the interest is in the x-coefficient 
#---------------------------------- 
BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS 
Based on 999 bootstrap replicates 

CALL : 
boot.ci(boot.out = lmboot, index = 2) 

Intervals : 
Level  Normal    Basic   
95% (-0.0210, 0.0261) (-0.0236, 0.0245) 

Level  Percentile   BCa   
95% (-0.0171, 0.0309) (-0.0189, 0.0278) 
Calculations and Intervals on Original Scale 
Warning message: 
In boot.ci(lmboot, index = 2) : 
    bootstrap variances needed for studentized intervals 
+0

hmm. cảm ơn ... hồi quy chỉ là ví dụ của tôi (vấn đề thực sự của tôi là GLMM), nhưng tôi sẽ xem xét điều này và cố gắng tìm ra sự khác biệt giữa những gì bạn đã làm (hoạt động) và những gì tôi đã làm (trong đó không) –

+0

oops. Bây giờ tôi thấy. Điều quan trọng là tôi đang sử dụng ** tham số ** bootstrapping, bạn không. Tôi nghĩ nếu bạn làm lại điều này với 'type =" parametric "' và các thay đổi cần thiết khác (tức là thêm hàm 'ran.gen', v.v.) bạn sẽ kết thúc với một cái gì đó trông rất giống ví dụ của tôi ở trên và không cung cấp các ước tính BCa mà không có các tính toán jackknife bán thủ công ... –

+0

Giá trị 'type =" parametric "' cung cấp trong cấu trúc đó? Một hệ số tuyến tính (hoặc tuyến tính trên một số thang đo khác) là một ước tính tham số. Vì vậy, Sau khi xem xét các tài liệu trong chương 2 của Davison và Hinkley, tôi nghĩ rằng tôi đang làm một bootstrap tham số trong đoạn mã trên. –

Các vấn đề liên quan