2014-10-18 59 views
0

我正在使用R對我的數據集執行邏輯迴歸。我的數據集有超過50個變量。邏輯迴歸:下降無關緊要的預測變量

的挑戰是如何編寫中的R的代碼,可以評估的某些記錄和變量統計有效性(例如,P值> 0.05),並消除來自基於參數,如,該模型的記錄和變量。

有沒有已經實現的方法來做到這一點?任何幫助或建議將不勝感激。謝謝。

+3

看看統計::臺階或MASS :: stepAIC。這當然是基於AIC而不是p值,但這可能更合適。 – 2014-10-18 13:36:59

+3

@ J.R。除非它不是(更合適)。像這樣做功能選擇與通過p值進行功能選擇相同,當您通過AIC進行功能選擇時,您只是使用不同的alpha(顯着性)級別。 – 2014-10-18 16:38:09

+0

同意加文。使用AIC的處罰相當適中,尤其是在逐步使用時。 – 2014-10-18 17:07:04

回答

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方法。