การถดถอยแบบขั้นตอนได้รับการใช้มากเกินไปในเอกสารชีวการแพทย์จำนวนมากในอดีต แต่สิ่งนี้ดูเหมือนว่าจะดีขึ้นด้วยการศึกษาที่ดีขึ้นของปัญหามากมาย ผู้ตรวจสอบรุ่นเก่าหลายคนยังคงขอมัน สถานการณ์ใดที่การถดถอยแบบขั้นตอนมีบทบาทและควรใช้ถ้ามี
การถดถอยแบบขั้นตอนได้รับการใช้มากเกินไปในเอกสารชีวการแพทย์จำนวนมากในอดีต แต่สิ่งนี้ดูเหมือนว่าจะดีขึ้นด้วยการศึกษาที่ดีขึ้นของปัญหามากมาย ผู้ตรวจสอบรุ่นเก่าหลายคนยังคงขอมัน สถานการณ์ใดที่การถดถอยแบบขั้นตอนมีบทบาทและควรใช้ถ้ามี
คำตอบ:
ฉันไม่ได้ตระหนักถึงสถานการณ์ซึ่งการถดถอยแบบขั้นตอนจะเป็นวิธีที่ต้องการ มันอาจจะไม่เป็นไร (โดยเฉพาะอย่างยิ่งในรุ่นขั้นตอนลงมันเริ่มต้นจากรุ่นเต็ม) กับ bootstrapping ของกระบวนการขั้นตอนทั้งหมดในชุดข้อมูลขนาดใหญ่มากกับพี ที่นี่คือจำนวนการสังเกตในผลอย่างต่อเนื่อง (หรือจำนวนของบันทึกที่มีเหตุการณ์ในการวิเคราะห์การอยู่รอด)คือจำนวนของตัวทำนายผู้สมัครรวมทั้งการพิจารณาการโต้ตอบทั้งหมด - เช่นเมื่อเอฟเฟกต์แม้แต่น้อยกลายเป็นชัดเจนมาก คุณสร้างแบบจำลองของคุณมากแค่ไหน (นั่นหมายความว่าจะมีขนาดใหญ่กว่ามากกว่ามากโดยมากกว่าปัจจัยที่ยกมาในบางครั้งที่ 20)n P n P
แน่นอนว่าเหตุผลที่คนส่วนใหญ่ถูกล่อลวงให้ทำบางสิ่งเช่นการถดถอยแบบขั้นตอนคือ
เช่นวิธีการถดถอยแบบขั้นตอนจะ (ถ้ามีลักษณะการดำเนินงานที่ดี) จะดึงดูดโดยเฉพาะอย่างยิ่งในสถานการณ์เหล่านั้นเมื่อมันไม่ได้มีลักษณะการดำเนินงานที่ดี
สองกรณีที่ฉันจะไม่คัดค้านการเห็นการถดถอยขั้นตอนคือ
ในทั้งสองกรณีการใช้งานที่สำคัญมากคุณไม่กังวลเกี่ยวกับการอนุมานเชิงสถิติแบบดั้งเดิมดังนั้นข้อเท็จจริงที่ว่าค่า p และอื่น ๆ ไม่ถูกต้องอีกต่อไปมีความกังวลเล็กน้อย
ตัวอย่างเช่นหากรายงานการวิจัยกล่าวว่า "ในการศึกษานำร่องของเราเราใช้การถดถอยแบบขั้นตอนเพื่อค้นหา 3 ตัวแปรที่น่าสนใจจาก 1,000 ในการศึกษาติดตามด้วยข้อมูลใหม่เราพบว่าตัวแปรที่น่าสนใจทั้งสามนี้มีความสัมพันธ์อย่างมากกับ ผลลัพธ์ที่น่าสนใจ "ฉันจะไม่มีปัญหากับการใช้การถดถอยแบบชาญฉลาด ในทำนองเดียวกัน "เราใช้การถดถอยแบบชาญฉลาดเพื่อสร้างแบบจำลองการทำนายโมเดล X ทางเลือกที่ไม่อยู่ในรูปแบบ X ในชุดข้อมูลที่เราจัดไว้สำหรับ MSE นั้นดีมากเช่นกัน
เพื่อความชัดเจนฉันไม่ได้บอกว่าการถดถอยแบบชาญฉลาดเป็นวิธีที่ดีที่สุดในการแก้ไขปัญหาเหล่านี้ แต่มันง่ายและอาจให้ทางออกที่น่าพอใจแก่คุณ
ในความคิดเห็นมีคำถามว่า AIC แบบขั้นตอนสามารถเป็นประโยชน์สำหรับการทำนายได้จริงหรือไม่ นี่คือการจำลองที่แสดงว่ามันทำได้ดีกว่าการถดถอยเชิงเส้นกับ covariates ทั้งหมดและเกือบรวมถึงอวนยืดหยุนด้วยการลงโทษที่เลือกโดยการตรวจสอบข้าม
ฉันจะไม่จำลองสถานการณ์นี้ในตอนท้ายของการอภิปราย มันไม่ยากเกินไปที่จะคิดสถานการณ์ที่ AIC แบบขั้นตอนจะแย่กว่านั้น แต่มันไม่ใช่สถานการณ์ที่ไร้เหตุผลจริงๆและประเภทของสถานการณ์ที่มุ้งยืดหยุ่นได้รับการออกแบบมาสำหรับ (ความสัมพันธ์ของ covariates ที่มีเอฟเฟกต์ใหญ่น้อยมาก)!
library(leaps)
library(glmnet)
nRows <- 1000
nCols <- 500
# Seed set For reproducibility.
# Try changing for investigation of reliability of results
set.seed(1)
# Creating heavily correlated covariates
x_firstHalf <- matrix(rnorm(nRows * nCols / 2), nrow = nRows)
x_secondHalf <- x_firstHalf + 0.5 *
matrix(rnorm(nRows * nCols / 2), nrow = nRows)
x_mat <- cbind(x_firstHalf, x_secondHalf) + rnorm(nRows)
# Creating beta's. Most will be of very small magnitude
p_large = 0.01
betas <- rnorm(nCols, sd = 0.01) +
rnorm(nCols, sd = 4) * rbinom(nCols, size = 1, prob = p_large)
y <- x_mat %*% betas + rnorm(nRows, sd = 4)
all_data <- data.frame(y, x_mat)
colnames(all_data) <- c('y', paste('x', 1:nCols, sep = '_'))
# Holding out 25% of data for validation
holdout_index <- 1:(nRows * .25)
train_data <- all_data[-holdout_index, ]
validate_data <- all_data[holdout_index, ]
mean_fit <- lm(y ~ 0, data = train_data)
full_fit <- lm(y ~ ., data = train_data)
step_fit <- step(mean_fit,
scope = list(lower = mean_fit, upper = full_fit),
direction = "forward", steps = 20, trace = 0)
glmnet_cvRes <- cv.glmnet(x = as.matrix(train_data[,-1]),
y = as.numeric(train_data$y) )
full_pred <- predict(full_fit, validate_data)
step_pred <- predict(step_fit, validate_data)
glmnet_pred <- predict(glmnet_cvRes, as.matrix(validate_data[,-1]), s='lambda.min')
sd(full_pred - validate_data$y) # [1] 6.426117
sd(step_pred - validate_data$y) # [1] 4.233672
sd(glmnet_pred - validate_data$y) # [1] 4.127171
# Note that stepwise AIC does considerably better than using all covariates
# in linear regression, and not that much worse than penalized methods
# with cross validation!!
ฉันไม่ใช่แฟนตัวยงของการถดถอยแบบขั้นตอนด้วยเหตุผลหลาย ๆ อย่างดังนั้นฉันรู้สึกอึดอัดใจที่ต้องใช้ท่านี้เพื่อป้องกันมัน แต่ฉันคิดว่ามันสำคัญที่จะต้องแม่นยำเกี่ยวกับสิ่งที่ฉันไม่ชอบ