다소 단순하지만 다른 boot사람들이 사용하는 구문과 일부 사람들을 혼동시킬 수 있는 라이브러리 를 명시 적으로 사용하지 않고 메시지를 전달한다고 생각 합니다.
우리는 선형 모델을 가지고 있습니다 : ,y=Xβ+ϵϵ∼N(0,σ2)
다음은 해당 선형 모델에 대한 파라 메트릭 부트 스트랩입니다. 즉, 원래 데이터를 다시 샘플링하지 않지만 실제로는 적합 모델에서 새 데이터를 생성합니다. 또한 회귀 계수 의 부트 스트랩 된 분포 가 대칭이며 변환이 변하지 않는 것으로 가정합니다 . (대략 우리가 그 속성에 영향을 미치면서 축을 움직일 수 있다고 말하면) 의 변동은 때문 이므로 충분한 샘플을 사용하면 실제 분포 에 대한 근사치를 제공해야합니다 의 의. 이전과 같이 다시 테스트 하고 p- 값을 다음과 같이 정의했습니다.ββϵβ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))
앞에서 언급했듯이 의 부트 스트랩 배포는 실제 배포 량과 비슷합니다. (이 코드는 속도에 최적화되어 있지만 가독성에 최적화되어 있습니다. :))β