2014-10-18 5 views
0

내 데이터 세트에서 로지스틱 회귀를 수행하려면 R을 사용하고 있습니다. 내 데이터 세트에는 50 개 이상의 변수가 있습니다.로지스틱 회귀 : 유의하지 않은 예측 내림 변수

특정 레코드 및 변수 (예 : p 값> .05)의 통계적 유효성을 평가하고 그와 같은 매개 변수를 기반으로 모델에서 레코드 및 변수를 제거 할 수있는 코드를 R에 작성해야합니다.

이미 구현 된 방법이 있습니까? 어떤 도움이나 제안을 주시면 감사하겠습니다. 고맙습니다.

+3

stats :: step 또는 MASS :: stepAIC을 살펴보십시오. 이것은 물론 PIC가 아닌 AIC를 기반으로 합니다만, 이것은 아마도 더 적절할 것입니다. –

+3

@ J.R. 단, 그것은 (더 적절하다). 이와 같이 기능을 선택하는 것은 p 값을 통해 수행하는 것과 동일하며 AIC를 통해 다른 알파 (유의 수준) 수준을 사용하는 것입니다. –

+0

개빈과 동의하십시오. AIC를 사용하는 패널티는 특히 단계별로 사용될 때 상당히 적당합니다. –

답변

1

다음은 예상 변수 집합을 취하여 원하는 유의 수준보다 낮은 예측 변수 만있는 선형 모델이 발견 될 때까지 단계별로 해당 변수를 제거하는 기본 함수의 구현입니다.

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 메소드를 체크 아웃 할 수도 있습니다.

관련 문제