เปรียบเทียบเส้นโค้งที่ราบเรียบเทียบกับเหลืองเพื่อให้เรียบ


25

ฉันต้องการเข้าใจข้อดีข้อเสียของการใช้เส้นเหลืองหรือเส้นโค้งที่ราบเรียบเพื่อให้เส้นโค้งเรียบขึ้น

อีกรูปแบบของคำถามของฉันคือถ้ามีวิธีสร้าง spline ที่ปรับให้เรียบในลักษณะที่จะให้ผลลัพธ์เหมือนกับการใช้เหลือง

ยินดีต้อนรับการอ้างอิงหรือข้อมูลเชิงลึกใด ๆ


Tal บทความที่อ้างถึงอย่างดีดังต่อไปนี้ดูที่วิธีการถดถอยแบบไม่อิงพารามิเตอร์หลายวิธี Buja, A. , Hastie, T. , & Tibshirani, R. (1989) Linear Smoothers และรุ่นเพิ่มเติม พงศาวดารของสถิติ , 17 (2), 453–510, ดีที่สุด
Alexis

คำตอบ:


16

นี่คือตัวอย่างรหัส R ที่จะให้คุณเปรียบเทียบความพอดีสำหรับแบบเหลืองและเส้นโค้งแบบ:

library(TeachingDemos)
library(splines)

tmpfun <- function(x,y,span=.75,df=3) {
    plot(x,y)
    fit1 <- lm(y ~ ns(x,df))
    xx <- seq( min(x), max(x), length.out=250 )
    yy <- predict(fit1, data.frame(x=xx))
    lines(xx,yy, col='blue')
    fit2 <- loess(y~x, span=span)
    yy <- predict(fit2, data.frame(x=xx))
    lines(xx,yy, col='green')
    invisible(NULL)
}

tmplst <- list( 
    span=list('slider', from=0.1, to=1.5, resolution=0.05, init=0.75),
    df=list('slider', from=3, to=25, resolution=1, init=3))

tkexamp( tmpfun(ethanol$E, ethanol$NOx), tmplst )

คุณสามารถลองใช้กับข้อมูลของคุณและเปลี่ยนรหัสเพื่อลองประเภทหรือตัวเลือกอื่น ๆ คุณอาจต้องการดูloess.demoฟังก์ชั่นในแพ็คเกจ TeachingDemos เพื่อความเข้าใจที่ดีขึ้นเกี่ยวกับสิ่งที่ algorythm ทำ โปรดทราบว่าสิ่งที่คุณเห็นจากดินเหลืองมักจะเป็นการรวมกันของดินเหลืองกับการแก้ไขที่สองเรียบ (บางครั้งก็เป็นอิสระ) loess.demoฟังก์ชั่นแสดงให้เห็นทั้งเรียบและดิบพอดี

ในทางทฤษฎีคุณสามารถหาเส้นโค้งที่ใกล้เคียงกับฟังก์ชันต่อเนื่องอื่นใกล้เคียงกับที่คุณต้องการเสมอ แต่ไม่น่าเป็นไปได้ที่จะมีตัวเลือกที่เรียบง่ายของปมที่จะให้การประมาณที่ใกล้เคียงกับชุดข้อมูลใด ๆ


สวัสดี Greg: 1) ขอบคุณสำหรับคำตอบ 2) ฉันรักฟังก์ชั่นของคุณ ... loess.demo
Tal Galili

29

ผลลัพธ์ที่เกิดขึ้นจริงจากเส้นโค้งเรียบหรือเหลืองจะคล้ายกันมาก พวกเขาอาจมีลักษณะแตกต่างกันเล็กน้อยที่ขอบของการสนับสนุน แต่ตราบใดที่คุณตรวจสอบให้แน่ใจว่ามันเป็นเส้นโค้งเรียบ "ธรรมชาติ" พวกเขาจะมีลักษณะที่คล้ายกันจริงๆ

หากคุณเพียงแค่ใช้อันใดอันหนึ่งเพื่อเพิ่ม "เรียบเนียน" ให้กับสแกตเตอร์ล็อตเตอรีก็ไม่มีเหตุผลที่จะชอบอันใดอันหนึ่ง หากคุณต้องการคาดการณ์ข้อมูลใหม่โดยทั่วไปคุณสามารถใช้เส้นโค้งที่ราบเรียบได้ง่ายขึ้น เพราะนี่คือเส้นโค้งที่ราบเรียบเป็นส่วนขยายโดยตรงของข้อมูลต้นฉบับ; ถ้าคุณใช้ 100 นอตเพื่อทำให้มันหมายความว่าคุณสร้างตัวแปรใหม่ ~ 100 ตัวแปรจากตัวแปรดั้งเดิม แทนที่จะเป็นเพียงแค่ประมาณการตอบสนองที่ค่าทั้งหมดที่มีประสบการณ์ (หรือชุดย่อยแบ่งชั้นสำหรับข้อมูลขนาดใหญ่)

โดยทั่วไปมีอัลกอริทึมที่จัดตั้งขึ้นเพื่อเพิ่มประสิทธิภาพค่าปรับสำหรับเส้นโค้งที่ราบเรียบ (mgcv ใน R อาจทำสิ่งนี้ได้ดีที่สุด) ดินเหลืองค่อนข้างไม่ชัดเจนนัก แต่โดยทั่วไปคุณจะยังได้ผลลัพธ์ที่สมเหตุสมผลจากการนำไปใช้งานใด ๆ MGCV ยังให้คุณรู้สึกถึงองศาอิสระที่เท่าเทียมกันดังนั้นคุณจึงสามารถรับรู้ได้ว่าข้อมูลของคุณเป็นแบบ "ไม่เป็นเชิงเส้น"

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


+1, คำตอบที่ดี! ฉันชอบการแสดงออกทางทฤษฎีที่ชัดเจน
gung - Reinstate Monica

ทำไมมันถึงแตกต่างกันใกล้กับขอบของการรองรับ
imu96

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