Bagaimana cara mendapatkan nilai-p koefisien dari regresi bootstrap?


10

Dari Quick-R Robert Kabacoff yang saya miliki

# 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

Bagaimana saya bisa mendapatkan nilai-p dari koefisien regresi bootstrap?H0:bj=0


"nilai p" artinya apa? Tes spesifik apa dengan hipotesis nol apa?
Brian Diggs

Koreksi H0: bj = 0
ECII

3
Anda sudah mendapatkan / p > 0,05 berdasarkan apakah interval kepercayaan tidak termasuk / tidak termasuk 0. Rincian lebih lanjut tidak dimungkinkan karena distribusi parameter dari bootstrap tidak parametrik (dan dengan demikian Anda tidak bisa mendapatkan probabilitas bahwa nilainya 0). hal<0,05hal>0,05
Brian Diggs

Jika Anda tidak dapat mengasumsikan distribusi bagaimana Anda tahu bahwa p <0,05 jika CI tidak termasuk 0? Ini berlaku untuk distribusi z atau t.
ECII

Saya mengerti tetapi Anda hanya bisa mengatakan bahwa p <0,05, Anda tidak dapat melampirkan nilai tertentu, kan?
ECII

Jawaban:


8

Hanya varian lain yang agak sederhana tapi saya pikir menyampaikan pesan tanpa menggunakan perpustakaan secara eksplisit boot yang dapat membingungkan beberapa orang dengan sintaks yang digunakannya.

Kami memiliki model linier: 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

Komunitas dan @BrianDiggs dapat mengoreksi saya jika saya salah, tapi saya yakin Anda bisa mendapatkan nilai p untuk masalah Anda sebagai berikut. Nilai p untuk uji dua sisi didefinisikan sebagai

2min[P(Xx|H0),P(Xx|H0)]

Jadi jika Anda memesan koefisien bootstrap berdasarkan ukuran dan kemudian menentukan proporsi lebih besar dan lebih kecil nol, proporsi minimum dua kali akan memberi Anda nilai-p.

Saya biasanya menggunakan fungsi berikut dalam situasi seperti ini:

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

4

hal , tetapi akan membutuhkan perubahan besar pada kode Anda. Karena saya tidak terbiasa dengan RI, hanya dapat memberi Anda referensi di mana Anda dapat mencari apa yang perlu Anda lakukan: bab 4 dari (Davison dan Hinkley 1997).

Davison, AC dan Hinkley, DV 1997. Metode bootstrap dan aplikasinya. Cambridge: Cambridge University Press.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.