Làm thế nào để có được giá trị p của các hệ số từ hồi quy bootstrap?


10

Từ Quick-R của Robert Kabacoff, tôi có

# Bootstrap 95% CI for regression coefficients 
library(boot)
# function to obtain regression weights 
bs <- function(formula, data, indices) {
  d <- data[indices,] # allows boot to select sample 
  fit <- lm(formula, data=d)
  return(coef(fit)) 
} 
# bootstrapping with 1000 replications 
results <- boot(data=mtcars, statistic=bs, 
     R=1000, formula=mpg~wt+disp)

# view results
results
plot(results, index=1) # intercept 
plot(results, index=2) # wt 
plot(results, index=3) # disp 

# get 95% confidence intervals 
boot.ci(results, type="bca", index=1) # intercept 
boot.ci(results, type="bca", index=2) # wt 
boot.ci(results, type="bca", index=3) # disp

Làm cách nào tôi có thể nhận được các giá trị p của hệ số hồi quy bootstrap?H0:bj=0


"Các giá trị p" nghĩa là gì? Thử nghiệm cụ thể với giả thuyết null là gì?
Brian Diggs

Sửa lỗi H0: bj = 0
ECII

3
Bạn đã nhận được / p > 0,05 dựa trên việc khoảng tin cậy không / không bao gồm 0. Mọi chi tiết khác là không thể vì phân phối tham số từ bootstrap không phải là tham số (và do đó bạn không thể có xác suất rằng giá trị là 0). p<0,05p>0,05
Brian Diggs

Nếu bạn không thể giả sử phân phối, làm sao bạn biết rằng p <0,05 nếu CI không bao gồm 0? Điều này đúng cho các phân phối z hoặc t.
ECII

Tôi hiểu điều đó nhưng bạn chỉ có thể nói rằng p <0,05, bạn không thể đính kèm một giá trị cụ thể phải không?
ECII

Câu trả lời:


8

Chỉ là một biến thể khác có phần đơn giản nhưng tôi nghĩ việc gửi thông điệp mà không sử dụng rõ ràng thư viện bootcó thể khiến một số người nhầm lẫn với cú pháp mà nó sử dụng.

Chúng tôi có một mô hình tuyến tính: ,y= =Xβ+εε~N(0,σ2)

ββεβH0:0= =βjβ

# Sample Size
N           <- 2^12;
# Linear Model to Boostrap          
Model2Boot  <- lm( mpg ~ wt + disp, mtcars)
# Values of the model coefficients
Betas       <- coefficients(Model2Boot)
# Number of coefficents to test against
M           <- length(Betas)
# Matrix of M columns to hold Bootstraping results
BtStrpRes   <- matrix( rep(0,M*N), ncol=M)

for (i in 1:N) {
# Simulate data N times from the model we assume be true
# and save the resulting coefficient in the i-th row of BtStrpRes
BtStrpRes[i,] <-coefficients(lm(unlist(simulate(Model2Boot)) ~wt + disp, mtcars))
}

#Get the p-values for coefficient
P_val1 <-mean( abs(BtStrpRes[,1] - mean(BtStrpRes[,1]) )> abs( Betas[1]))
P_val2 <-mean( abs(BtStrpRes[,2] - mean(BtStrpRes[,2]) )> abs( Betas[2]))
P_val3 <-mean( abs(BtStrpRes[,3] - mean(BtStrpRes[,3]) )> abs( Betas[3]))

#and some parametric bootstrap confidence intervals (2.5%, 97.5%) 
ConfInt1 <- quantile(BtStrpRes[,1], c(.025, 0.975))
ConfInt2 <- quantile(BtStrpRes[,2], c(.025, 0.975))
ConfInt3 <- quantile(BtStrpRes[,3], c(.025, 0.975))

β


16

Cộng đồng và @BrianDiggs có thể sửa lỗi cho tôi nếu tôi sai, nhưng tôi tin rằng bạn có thể nhận được giá trị p cho vấn đề của mình như sau. Giá trị p cho thử nghiệm hai mặt được xác định là

2*tối thiểu[P(Xx|H0),P(Xx|H0)]

Vì vậy, nếu bạn đặt các hệ số bootstrapping theo kích thước và sau đó xác định tỷ lệ lớn hơn và nhỏ hơn 0, tỷ lệ tối thiểu hai lần sẽ cung cấp cho bạn một giá trị p.

Tôi thường sử dụng các chức năng sau trong tình huống như vậy:

twosidep<-function(data){
  p1<-sum(data>0)/length(data)
  p2<-sum(data<0)/length(data)
  p<-min(p1,p2)*2
  return(p)
}

4

p

Davison, AC và Hinkley, DV 1997. Phương pháp Bootstrap và ứng dụng của chúng. Cambridge: Nhà xuất bản Đại học Cambridge.

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.