ฉันต้องการเข้าใจข้อดีข้อเสียของการใช้เส้นเหลืองหรือเส้นโค้งที่ราบเรียบเพื่อให้เส้นโค้งเรียบขึ้น
อีกรูปแบบของคำถามของฉันคือถ้ามีวิธีสร้าง spline ที่ปรับให้เรียบในลักษณะที่จะให้ผลลัพธ์เหมือนกับการใช้เหลือง
ยินดีต้อนรับการอ้างอิงหรือข้อมูลเชิงลึกใด ๆ
ฉันต้องการเข้าใจข้อดีข้อเสียของการใช้เส้นเหลืองหรือเส้นโค้งที่ราบเรียบเพื่อให้เส้นโค้งเรียบขึ้น
อีกรูปแบบของคำถามของฉันคือถ้ามีวิธีสร้าง spline ที่ปรับให้เรียบในลักษณะที่จะให้ผลลัพธ์เหมือนกับการใช้เหลือง
ยินดีต้อนรับการอ้างอิงหรือข้อมูลเชิงลึกใด ๆ
คำตอบ:
นี่คือตัวอย่างรหัส 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
ฟังก์ชั่นแสดงให้เห็นทั้งเรียบและดิบพอดี
ในทางทฤษฎีคุณสามารถหาเส้นโค้งที่ใกล้เคียงกับฟังก์ชันต่อเนื่องอื่นใกล้เคียงกับที่คุณต้องการเสมอ แต่ไม่น่าเป็นไปได้ที่จะมีตัวเลือกที่เรียบง่ายของปมที่จะให้การประมาณที่ใกล้เคียงกับชุดข้อมูลใด ๆ
ผลลัพธ์ที่เกิดขึ้นจริงจากเส้นโค้งเรียบหรือเหลืองจะคล้ายกันมาก พวกเขาอาจมีลักษณะแตกต่างกันเล็กน้อยที่ขอบของการสนับสนุน แต่ตราบใดที่คุณตรวจสอบให้แน่ใจว่ามันเป็นเส้นโค้งเรียบ "ธรรมชาติ" พวกเขาจะมีลักษณะที่คล้ายกันจริงๆ
หากคุณเพียงแค่ใช้อันใดอันหนึ่งเพื่อเพิ่ม "เรียบเนียน" ให้กับสแกตเตอร์ล็อตเตอรีก็ไม่มีเหตุผลที่จะชอบอันใดอันหนึ่ง หากคุณต้องการคาดการณ์ข้อมูลใหม่โดยทั่วไปคุณสามารถใช้เส้นโค้งที่ราบเรียบได้ง่ายขึ้น เพราะนี่คือเส้นโค้งที่ราบเรียบเป็นส่วนขยายโดยตรงของข้อมูลต้นฉบับ; ถ้าคุณใช้ 100 นอตเพื่อทำให้มันหมายความว่าคุณสร้างตัวแปรใหม่ ~ 100 ตัวแปรจากตัวแปรดั้งเดิม แทนที่จะเป็นเพียงแค่ประมาณการตอบสนองที่ค่าทั้งหมดที่มีประสบการณ์ (หรือชุดย่อยแบ่งชั้นสำหรับข้อมูลขนาดใหญ่)
โดยทั่วไปมีอัลกอริทึมที่จัดตั้งขึ้นเพื่อเพิ่มประสิทธิภาพค่าปรับสำหรับเส้นโค้งที่ราบเรียบ (mgcv ใน R อาจทำสิ่งนี้ได้ดีที่สุด) ดินเหลืองค่อนข้างไม่ชัดเจนนัก แต่โดยทั่วไปคุณจะยังได้ผลลัพธ์ที่สมเหตุสมผลจากการนำไปใช้งานใด ๆ MGCV ยังให้คุณรู้สึกถึงองศาอิสระที่เท่าเทียมกันดังนั้นคุณจึงสามารถรับรู้ได้ว่าข้อมูลของคุณเป็นแบบ "ไม่เป็นเชิงเส้น"
ฉันพบว่าเมื่อสร้างแบบจำลองบนข้อมูลที่มีขนาดใหญ่มากเส้นโค้งธรรมชาติที่เรียบง่ายมักจะให้ผลลัพธ์ที่คล้ายกันสำหรับการคำนวณที่น้อยที่สุดเมื่อเปรียบเทียบกับเส้นโค้งที่ราบเรียบหรือเหลือง