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)")
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")
}
#귀무 가설 공간에서 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추정치가 유의미하다는 것을 알 수 있다.
Resampling으로 회귀계수 검정 by from __future__ import dream is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.