본문 바로가기

Programming/R

Resampling using R : Cross-validation / Bootstrap

1

Cross-validation(교차검증) 을 위한 R함수로,  

boot 라이브러리의 cv.glm함수를 사용할 수 있다.

 

library(boot)
#glm.fit 이라는 generalized linear model이 있다고 가정을 하자.

cv.err <- cv.glm(data, glm.fit, K = n) # n : 폴드 수 -> n = 데이터 수 : LOOCV 수행
#cv.err$delta : 길이가 2인 벡터를 반환하는데, 첫번째는 raw cv error 추정값, 두번째는 수정된 cv error 추정값이다.

#이 때, cv.glm 안에 lm모델을 넣으면 cv가 제대로 동작하지를 않는다.
#family 인자를 지정하지 않으면 glm도 least square estimate를 산출하므로, glm 모델을 인자값으로 전달하도록 하자.

2.

Bootstrap을 할때는, boot라이브러리의 boot함수를 이용할 수 있다,

 

boot함수의 경우,

인자로 데이터, 추정하고자 하는 통계량을 산출하는 함수, 부트스트랩 횟수를 받는다.

이 때, 통계량을 산출하는 함수는 인자로 (data, index)를 받아야 한다.

코드로 확인해보자

#linear 모델의 회귀계수를 bootstrap을 통해 구하고자 한다.

library(boot)
boot.fn <- function(data, index){
	return coef(lm(y~x, data = data, subset = index))}
    
boot(데이터, boot.fn, R = 1000)
# 데이터에서 1000회 부트스트랩을 하여 boot.fn으로 통계량을 추정해냄

 

'Programming > R' 카테고리의 다른 글

Shrinkage Methods using R  (0) 2022.05.12
Subset selection using R : regsubsets()  (0) 2022.05.08
R을 이용한 Classifiers : LDA, QDA, NaiveBayes  (0) 2022.05.08
R : lm() / glm()  (0) 2022.05.07