다음은 예상 변수 집합을 취하여 원하는 유의 수준보다 낮은 예측 변수 만있는 선형 모델이 발견 될 때까지 단계별로 해당 변수를 제거하는 기본 함수의 구현입니다.
reverse.step <- function(y, b, df, alpha=0.05) {
# y = dependent variable name (as character) e.g. 'Height',
# b = vector of explanatory variable names (as characters) e.g.
# c('x1','x2','x3',...), # df = data frame
sum <- summary(lm(paste(paste(y,' ~ ', sep=''),
paste(b, collapse='+'), sep=''), data=df))
cat(b)
cat("\n")
pvals <- sum$coeff[2:nrow(sum$coeff),4]
if (pvals[which.max(pvals)] < alpha) {
return(sum)
}
new.b <- names(pvals[-which.max(pvals)])
if (length(new.b) == 0 | length(new.b) == length(b)) {
return(sum)
} else {
return(reverse.step(y, new.b, df, alpha))
}
}
가장 강력한 기능은 아니지만 처음 시작하게됩니다.
leaps 라이브러리의 regsubsets 메소드를 체크 아웃 할 수도 있습니다.
stats :: step 또는 MASS :: stepAIC을 살펴보십시오. 이것은 물론 PIC가 아닌 AIC를 기반으로 합니다만, 이것은 아마도 더 적절할 것입니다. –
@ J.R. 단, 그것은 (더 적절하다). 이와 같이 기능을 선택하는 것은 p 값을 통해 수행하는 것과 동일하며 AIC를 통해 다른 알파 (유의 수준) 수준을 사용하는 것입니다. –
개빈과 동의하십시오. AIC를 사용하는 패널티는 특히 단계별로 사용될 때 상당히 적당합니다. –