R의 단계적 회귀-어떻게 작동합니까?


15

step 함수를 사용하여 R의 단계별 회귀와 역 회귀의 기본 차이점을 이해하려고합니다. 단계별 회귀 분석을 위해 다음 명령을 사용했습니다.

  step(lm(mpg~wt+drat+disp+qsec,data=mtcars),direction="both")

위의 코드에 대한 아래 출력이 있습니다.

앞으로

뒤로 변수 선택을 위해 다음 명령을 사용했습니다.

 step(lm(mpg~wt+drat+disp+qsec,data=mtcars),direction="backward")

그리고 나는 뒤로 출력을 얻었습니다.

뒤로

내가 아는 한, 매개 변수가 지정되지 않은 경우 매개 변수 "upper"및 "lower"가 R에 지정되어 있지 않으면 stepwise selection이 뒤로 작동합니다. 그러나 stepwise selection의 출력에는 + disp가 추가됩니다. 두 번째 단계. 단계적 선택에서 + disp를 다시 추가하여 달성하려는 기능은 무엇입니까? R이 2 단계에서 + disp를 더하는 반면 결과는 이전 선택과 동일한 결과 (AIC 값 및 모델 선택 값)입니다. 단계별 선택에서 R이 정확히 어떻게 작동합니까?

이 기능이 R에서 어떻게 작동하는지 이해하고 싶습니다. 도움을 주셔서 감사합니다!

답변:


16

아마도 15 개의 가능한 lm 모델을 모두 보면서 단계별 회귀가 수행되는 방식을 이해하는 것이 더 쉬울 것입니다.

다음은 15 가지 조합 모두에 대한 수식을 생성하는 간단한 방법입니다.

library(leaps)
tmp<-regsubsets(mpg ~ wt + drat + disp + qsec, data=mtcars, nbest=1000, really.big=T, intercept=F)
all.mods <- summary(tmp)[[1]]
all.mods <- lapply(1:nrow(all.mods, function(x)as.formula(paste("mpg~", paste(names(which(all.mods[x,])), collapse="+"))))

head(all.mods)
[[1]]
mpg ~ drat
<environment: 0x0000000013a678d8>

[[2]]
mpg ~ qsec
<environment: 0x0000000013a6b3b0>

[[3]]
mpg ~ wt
<environment: 0x0000000013a6df28>

[[4]]
mpg ~ disp
<environment: 0x0000000013a70aa0>

[[5]]
mpg ~ wt + qsec
<environment: 0x0000000013a74540>

[[6]]
mpg ~ drat + disp
<environment: 0x0000000013a76f68>

각 모델의 AIC 값은 다음과 같이 추출됩니다.

all.lm<-lapply(all.mods, lm, mtcars)

sapply(all.lm, extractAIC)[2,]
 [1]  97.98786 111.77605  73.21736  77.39732  63.90843  77.92493  74.15591  79.02978  91.24052  71.35572
[11]  63.89108  65.90826  78.68074  72.97352  65.62733

단계 회귀로 돌아가 봅시다. lm (mpg ~ wt + drat + disp + qsec)의 extractAIC 값은 65.63입니다 (위 목록의 모델 15와 동일).

모델이 disp (-disp)를 제거하면 lm (mpg ~ wt + drat + qsec)은 63.891 (또는 목록의 모델 11)입니다.

모델이 아무것도 제거하지 않으면 (없음) AIC는 여전히 65.63입니다.

모델이 qsec (-qsec)를 제거하면 lm (mpg ~ wt + drat + disp)은 65.908 (모델 12)입니다.

기타

기본적으로 요약은 전체 모형에서 한 항을 단계적으로 제거 할 수있는 모든 단계적 제거를 나타내고 오름차순으로 추출하여 extractAIC 값을 비교합니다. AIC 값이 작을수록 TRUTH 모델과 유사 할 수 있으므로 1 단계에서 (-disp) 모델을 단계적으로 유지하십시오.

프로세스는 다시 반복되지만 유지 된 (-disp) 모델을 시작점으로 사용합니다. 모형을 비교할 수 있도록 항을 빼거나 ( "뒤로") 빼거나 더합니다 ( "둘 다"). 가장 낮은 AIC 값은 여전히 ​​(-disp) 모델이므로 프로세스 중지 및 결과 모델이 제공됩니다.

쿼리와 관련하여 : "단계별 선택에서 + disp를 다시 추가하여 달성하려는 기능은 무엇입니까?",이 경우 실제로 아무 것도하지 않습니다. 왜냐하면 15 개 모델 중에서 가장 좋은 모델은 모델 11입니다. 즉, lm (mpg ~ wt + drat + qsec).

그러나 해결하기 위해 많은 단계가 필요한 다수의 예측 변수가있는 복잡한 모형에서 초기에 제거 된 항을 더하는 것이 항을 비교하는 가장 철저한 방법을 제공하는 데 중요합니다.

어떤 식 으로든 도움이되기를 바랍니다.


6
"AIC 값이 작을수록 TRUTH 모델과 유사 할 가능성이 높기 때문에"거짓입니다. 단계별 현명한 모델 구축은 다른 많은 문제 중에서도 실제 예측 변수를 거부 할 때 허위 예측 변수를 유지할 가능성이 높습니다. stats.stackexchange.com/questions/115843/…
Alexis

2
분명히 거짓말입니다. 이것이 바로 단계적 회귀와 같은 단일 기준에 기반한 모델 선택이 순진한 이유입니다.
Adam Quek 1

@Alexis는 링크의 답변에서 권장 사항을 좋아합니다.
Adam Quek 1

3

여기에 간단한 답변이 있습니다. 먼저 두 절차 모두 주어진 모델의 AIC를 줄이려고하지만 다른 방식으로 수행합니다. 그런 다음 기본적인 차이점은 이전 선택 절차에서는 모든 단계에서 모델의 변수 만 버릴 수있는 반면, 단계별 선택에서는 모델에 변수를 추가 할 수도 있다는 것입니다.

단계적 선택의 출력에 대해서는 일반적으로 출력에 AIC를 줄이기위한 대체품이 표시되므로 모든 단계의 첫 번째 행이 최선의 선택입니다. 그런 다음 +disp모델에 해당 변수를 추가하는 것이 AIC를 줄이는 세 번째 최선의 옵션이기 때문에 세 번째 행에 있습니다. 그러나 분명히 최선의 대안은 <none>아무것도하지 않음을 의미하므로 절차가 중지되고 뒤로 선택과 동일한 결과가 제공됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.