Resampling으로 회귀계수 검정

re-sampling 방법으로 회귀모형 파라메터를 검정해보기로 한다. 개인적으로는 리샘플링 방법이 직관적이고 설명이 편한 장점이 있어서 자주 쓰고자 하는 소망을 가지고 있고 금번 포스팅도 그 일환이다. 무엇보다 우리 주변의 컴퓨팅 파워는 놀고 있으니 요즘들어 안쓸 이유가 없는 방법이라 생각한다. …

suppressPackageStartupMessages(library(UsingR))
suppressPackageStartupMessages(library(data.table))
suppressPackageStartupMessages(library(extrafont))

data(father.son)

coeffs <- data.table()

#2만번 re-sampling 
for(i in 1:20000){
  rfheigh <- sample(father.son$fheight)
  rsheigh <- sample(father.son$sheight)

  mdl <- lm(rfheigh ~ rsheigh)
  coeffs <- rbind(coeffs, data.table(inte=mdl$coefficients[1], b0=mdl$coefficients[2]))
}

plot(density(coeffs$b0), main="density plot of b0(H0)")

plot of chunk unnamed-chunk-1

xval <- seq(range(father.son$fheight)[1],range(father.son$fheight)[2], length=100)

rows <- as.data.frame(coeffs[sample(1:nrow(coeffs), 30)] )
plot(father.son, main="H0")

for(i in 1:30){
  lines(xval, rows[i, 'b0'] * xval + rows[i, 'inte'], col = "gray")
}

plot of chunk unnamed-chunk-1

#귀무 가설 공간에서 0.05% 미만으로 나올 극단적인 b0값은?
coeffsdec <- coeffs$b0[order(coeffs$b0, decreasing = T)]
coeffsdec[which.max(cumsum(abs(coeffsdec))/sum(abs(coeffsdec)) > 0.0005)]
## [1] 0.1064
rmdl <- lm(fheight ~ sheight, father.son)

rmdl$coefficients
## (Intercept)     sheight 
##     34.1075      0.4889

이미 b0는 0.4889로 귀무가설 공간에서의 극단적인 값(10000번중에 5번 미만)을 상회하는 값이 나와 b0추정치가 유의미하다는 것을 알 수 있다.

CC BY-NC 4.0 Resampling으로 회귀계수 검정 by from __future__ import dream is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.