ggplot คำนวณช่วงความเชื่อมั่นสำหรับการถดถอยอย่างไร


15

แพ็คเกจการลงจุด R ggplot2 มีฟังก์ชั่นที่ยอดเยี่ยมที่เรียกว่าstat_smoothสำหรับการลงจุดเส้นถดถอย (หรือเส้นโค้ง) ด้วยแถบความเชื่อมั่นที่เกี่ยวข้อง

อย่างไรก็ตามฉันมีเวลายากที่จะหาว่าแถบความเชื่อมั่นนี้จะถูกสร้างขึ้นได้อย่างไรในทุกครั้งที่มีการถดถอย (หรือ "วิธี") ฉันจะหาข้อมูลนี้ได้อย่างไร


2
ดูหัวข้อ "รายละเอียด" ในลิงค์ของคุณ
Stéphane Laurent

1
@ StéphaneLaurent: ฉันได้อ่านหัวข้อนั้นแล้ว แต่ฉันยังคงมีปัญหาในการเชื่อมต่อจุดต่าง ๆ ฉันใช้วิธี "rlm" สำหรับการหาเส้นตรง, ช่วงความเชื่อมั่นคำนวณได้อย่างไร (ในทางคณิตศาสตร์, สมการ / อัลกอริทึมอะไร?) ฉันจะหาข้อมูลนั้นได้อย่างไร
static_rtti

1
ดังนั้นฉันคิดว่าคุณควรถามคำถามที่แม่นยำยิ่งขึ้น
Stéphane Laurent

1
ฉันคิดว่าคำถามของคุณมีความแม่นยำพอสมควร ... แต่ฉันสงสัยว่าคุณจะไม่ได้รับคำตอบที่นี่ คุณอาจโชคดีได้ที่กลุ่ม Google ggplot2: groups.google.com/forum/?fromgroups#!forum/ggplot2
russellpierce

คำตอบ:


22

จากDetailsส่วนของความช่วยเหลือ

การคำนวณจะดำเนินการโดยฟังก์ชั่นทั่วไป (ปัจจุบันไม่มีเอกสาร) ทำนายและวิธีการ สำหรับวิธีการส่วนใหญ่ขอบเขตความเชื่อมั่นจะถูกคำนวณโดยใช้วิธีการทำนาย - ข้อยกเว้นคือเหลืองซึ่งใช้การประมาณแบบ t-based และสำหรับ glm ที่ช่วงความเชื่อมั่นปกติถูกสร้างขึ้นบนสเกลลิงก์จากนั้นเปลี่ยนกลับเป็นระดับการตอบสนอง

ดังนั้นการทำนายโดยทั่วไปจะเรียกstats::predictซึ่งจะเรียกpredictวิธีที่ถูกต้องสำหรับวิธีการปรับให้เรียบ ฟังก์ชั่นอื่น ๆ ที่เกี่ยวข้องกับstat_smooth ยังเป็นประโยชน์ในการพิจารณา

ฟังก์ชั่นการกระชับตัวแบบส่วนใหญ่จะมีpredictวิธีการที่เกี่ยวข้องกับclassตัวแบบ เหล่านี้มักจะใช้newdataวัตถุและการโต้แย้งse.fitที่จะแสดงว่าข้อผิดพลาดมาตรฐานจะได้รับการติดตั้ง (ดู?predict) สำหรับรายละเอียดเพิ่มเติม

se
แสดงช่วงความเชื่อมั่นที่ราบรื่น (ตามค่าเริ่มต้นจริงดูระดับที่จะควบคุม

นี่คือการส่งโดยตรงไปยังวิธีการทำนายเพื่อส่งกลับข้อผิดพลาดมาตรฐานที่เหมาะสม (ขึ้นอยู่กับวิธีการ)

fullrange
ความพอดีควรครอบคลุมช่วงเต็มของพล็อตหรือเพียงแค่ข้อมูล

สิ่งนี้จะกำหนดnewdataค่าxที่จะทำการประเมินการคาดคะเน

level ระดับของช่วงความมั่นใจที่จะใช้ (0.95 โดยค่าเริ่มต้น)

ส่งโดยตรงไปยังวิธีการทำนายเพื่อให้ช่วงความมั่นใจสามารถกำหนดค่าวิกฤตที่เหมาะสม (เช่นpredict.lmใช้qt((1 - level)/2, df)สำหรับข้อผิดพลาดมาตรฐานที่จะคูณด้วย

n จำนวนคะแนนที่ประเมินได้ราบรื่นขึ้นที่

ใช้ร่วมกับfullrangeเพื่อกำหนดxค่าในnewdataวัตถุ

ภายในการโทรหาstat_smoothคุณสามารถกำหนดseว่าอะไรคือสิ่งที่จับคู่บางส่วนกับse.fit(หรือse) และจะกำหนดintervalอาร์กิวเมนต์หากจำเป็น levelจะให้ระดับของช่วงความมั่นใจ (ค่าเริ่มต้น 0.95)

newdataวัตถุที่กำหนดไว้ในการประมวลผลขึ้นอยู่กับการตั้งค่าของคุณfullrangeจะลำดับของความยาวnอยู่ในช่วงที่เต็มรูปแบบของพล็อตหรือข้อมูล

ในกรณีของคุณการใช้rlmสิ่งนี้จะใช้predict.rlmซึ่งถูกกำหนดเป็น

predict.rlm <- function (object, newdata = NULL, scale = NULL, ...)
{
    ## problems with using predict.lm are the scale and
    ## the QR decomp which has been done on down-weighted values.
    object$qr <- qr(sqrt(object$weights) * object$x)
        predict.lm(object, newdata = newdata, scale = object$s, ...)
}

ดังนั้นจึงเป็นการเรียกภายในpredict.lmด้วยสเกลที่เหมาะสมของการqrแบ่งแยกและscaleอาร์กิวเมนต์


... และ predict.rlm ถูกซ่อนอยู่ใน MASS ... และการเรียกไปยังการทำนายผ่านรูปแบบ, xseq, se และการโต้แย้งระดับเพื่อคาดการณ์. rm ... แต่ค่าเหล่านั้นมาจากไหน? ดีฉันเดาว่าขึ้นอยู่กับสิ่งที่เกิดขึ้นเมื่อมีการโต้แย้งจะถูกส่งผ่านจาก stat_smooth ไป StatSmooth $ ใหม่ ... ซึ่งในทางกลับกันเรียก ...
russellpierce

1
ประเด็นของฉันคือว่าคำตอบของคุณเป็นขั้นตอนในทิศทางที่ถูกต้อง แต่การตอบคำถาม OPs นั้นไม่สำคัญอย่างที่คิดไว้ก่อน (แม้ว่าใครจะคาดหวังว่ารหัสจะทำงานได้อย่างมีสติ) แต่ก็ไม่แน่ใจ )
russellpierce

2
เราคาดหวังว่าโค้ดจะทำงานได้อย่างมีเหตุผลหากpredictมีการตั้งค่าวิธีการแบบมาตรฐาน ฉันได้แก้ไขคำตอบของฉันเพื่อแก้ไขปัญหาที่เกิดขึ้นในความคิดเห็นแรกของคุณ
mnel

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