การถดถอยแบบขั้นตอนใน R - มันทำงานอย่างไร


15

ฉันพยายามที่จะเข้าใจความแตกต่างพื้นฐานระหว่างการถดถอยแบบขั้นตอนและย้อนกลับใน 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 มี + disp ที่เพิ่มเข้ามา ขั้นตอนที่ 2 ฟังก์ชั่นพยายามทำอะไรโดยเพิ่มเครื่องหมาย + อีกครั้งในการเลือกแบบขั้นตอน? ทำไม R เพิ่ม + disp ในขั้นตอนที่ 2 ในขณะที่ผลลัพธ์เหมือนกัน (ค่า AIC และค่าการเลือกแบบจำลอง) เป็นการเลือกแบบย้อนหลัง R ทำงานอย่างไรในการเลือกแบบขั้นตอน

ฉันต้องการเข้าใจจริงๆว่าฟังก์ชั่นนี้ทำงานอย่างไรใน R. ขอบคุณล่วงหน้าสำหรับความช่วยเหลือ!

คำตอบ:


16

บางทีมันอาจจะง่ายกว่าที่จะเข้าใจวิธีการถดถอยแบบขั้นตอนโดยดูที่โมเดล lm ที่เป็นไปได้ทั้งหมด 15 แบบ

นี่คือ quickie เพื่อสร้างสูตรสำหรับชุดค่าผสมทั้ง 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

ลองย้อนกลับไปที่ขั้นตอนการถดถอยของคุณ ค่า extractAIC สำหรับ lm (mpg ~ wt + drat + disp + qsec) คือ 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 มากขึ้นขั้นตอนจะคงรูปแบบ (-disp) ไว้ในขั้นตอนที่หนึ่ง

กระบวนการนี้ทำซ้ำอีกครั้ง แต่ด้วยรุ่นที่เก็บ (-disp) เป็นจุดเริ่มต้น คำศัพท์อาจถูกลบ ("ย้อนหลัง") หรือลบ / เพิ่ม ("ทั้งคู่") เพื่อให้สามารถเปรียบเทียบแบบจำลองได้ เนื่องจากค่า AIC ที่ต่ำที่สุดในการเปรียบเทียบยังคงเป็นโมเดล (-disp) โมเดลการหยุดกระบวนการและโมเดลผลลัพธ์

สำหรับการค้นหาของคุณ: "อะไรคือฟังก์ชั่นที่พยายามทำให้สำเร็จโดยการเพิ่ม + disp อีกครั้งในการเลือกแบบขั้นตอน?" ในกรณีนี้มันไม่ได้ทำอะไรเลย คือ lm (mpg ~ wt + drat + qsec)

อย่างไรก็ตามในโมเดลที่ซับซ้อนที่มีตัวทำนายจำนวนมากที่ต้องการขั้นตอนมากมายในการแก้ไขการเพิ่มคำศัพท์ที่ถูกลบออกในตอนแรกนั้นเป็นสิ่งสำคัญเพื่อให้วิธีการเปรียบเทียบเงื่อนไขครบถ้วนสมบูรณ์ที่สุด

หวังว่าจะช่วยได้บ้าง


6
"เนื่องจากค่า AIC ที่น้อยกว่ามีแนวโน้มที่จะคล้ายกับโมเดล TRUTH" จึงเป็นเท็จอย่างตรงไปตรงมา การสร้างแบบจำลองที่ชาญฉลาดนั้นมีความเป็นไปได้ที่จะรักษาตัวทำนายเท็จไว้เท่า ๆ กันเพื่อปฏิเสธตัวทำนายที่แท้จริง ... ในบรรดาโฮสต์ของปัญหาอื่น ๆ : stats.stackexchange.com/questions/115843/…
อเล็กซิส

2
เห็นได้ชัดว่ามันเป็นเรื่องโกหก นั่นเป็นเหตุผลที่การเลือกรูปแบบขึ้นอยู่กับเกณฑ์เดียว (เช่นการถดถอยแบบขั้นตอน) เป็นไร้เดียงสา
Adam Quek

@Alexis รักคำแนะนำของคุณในคำตอบของคุณในลิงค์
Adam Quek

3

นี่คือคำตอบที่ง่ายขึ้น ขั้นแรกทั้งสองโพรซีเดอร์พยายามลด AIC ของโมเดลที่กำหนด แต่ทำในวิธีที่ต่างกัน จากนั้นความแตกต่างพื้นฐานคือในขั้นตอนการเลือกถอยหลังคุณสามารถละทิ้งตัวแปรจากตัวแบบได้ทุกขั้นตอนในขณะที่การเลือกแบบขั้นตอนคุณสามารถเพิ่มตัวแปรเข้ากับแบบจำลองได้

เกี่ยวกับผลลัพธ์ในการเลือกแบบขั้นตอนโดยทั่วไปผลลัพธ์จะแสดงให้คุณสั่งทางเลือกเพื่อลด AIC ของคุณดังนั้นแถวแรกในขั้นตอนใด ๆ ก็เป็นทางเลือกที่ดีที่สุดของคุณ จากนั้นมี+dispแถวที่สามเนื่องจากการเพิ่มตัวแปรนั้นลงในแบบจำลองของคุณจะเป็นตัวเลือกที่ดีที่สุดอันดับสามของคุณในการลด AIC ของคุณ แต่เห็นได้ชัดว่าในฐานะที่เป็นทางเลือกที่ดีที่สุดของคุณ<none>นั่นหมายถึงว่าไม่ได้ทำอะไรเลยขั้นตอนจะหยุดและให้ผลลัพธ์เดียวกันกับการเลือกย้อนหลัง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.