จะทำนายหรือขยายสายการถดถอยใน ggplot2 ได้อย่างไร?


17

ฉันมีกรอบข้อมูลที่มีสองชุดเวลา: วันที่และหมายเลขรุ่นของ Emacs และ Firefox ที่วางจำหน่าย การใช้หนึ่งคำสั่ง ggplot2 ทำให้ง่ายต่อการสร้างแผนภูมิที่ใช้เหลือง (ในลักษณะที่ดูน่าขบขันซึ่งฉันไม่สนใจ) เพื่อเปลี่ยนจุดให้เป็นเส้น

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

เนื่องจาก ggplot2 กำลังพล็อตบรรทัดมันต้องมีโมเดล แต่ฉันไม่เห็นวิธีบอกให้ขยายบรรทัดหรือเพื่อเอาโมเดลออกมาและทำอะไรกับมัน

> library(ggplot2)
> programs <- read.csv("http://www.miskatonic.org/files/se-program-versions.csv")
> programs$Date <- as.Date(programs$Date, format="%B %d, %Y")
> head(programs)
  Program Version       Date
1   Emacs    24.1 2012-06-10
2   Emacs    23.4 2012-01-29
3   Emacs    23.3 2011-03-10
4   Emacs    23.2 2010-05-08
5   Emacs    23.1 2009-07-29
6   Emacs    22.3 2008-09-05
> head(subset(programs, Program == "Firefox"))
   Program Version       Date
18 Firefox      16 2012-10-09
19 Firefox      15 2012-08-28
20 Firefox      14 2012-06-26
21 Firefox      13 2012-06-15
22 Firefox      12 2012-04-24
23 Firefox      11 2012-03-13
> ggplot(programs, aes(y = Version, x = Date, colour = Program)) + geom_point() + geom_smooth(span = 0.5, fill = NA)

รุ่น Emacs และ Firefox ตามวันที่

(หมายเหตุ: ฉันต้องทำให้เหลวไหล Firefox รุ่นแรก ๆ และเปลี่ยน 0.1 เป็น 0.01 เป็นต้นไปเพราะ "จุดหนึ่ง" และ "จุดสิบ" เท่ากับเลขคณิตฉันรู้ว่า Firefox กำลังเปิดตัวทุกหกสัปดาห์ในขณะนี้ แต่ไม่มีอยู่จริง แต่และฉันสนใจคำตอบทั่วไปสำหรับคำถามทำนายผลนี้)

คำตอบ:


21

ในฐานะที่เป็น @Glen กล่าวถึงคุณต้องใช้stat_smoothวิธีการที่สนับสนุนการคาดการณ์ซึ่งloessไม่ได้ lmทำอย่างไร สิ่งที่คุณต้องทำคือใช้fullrangeพารามิเตอร์ของstat_smoothและขยายแกน x เพื่อรวมช่วงที่คุณต้องการทำนาย ฉันไม่มีข้อมูลของคุณ แต่นี่เป็นตัวอย่างการใช้ชุดข้อมูล mtcars:

ggplot(mtcars,aes(x=disp,y=hp)) + geom_point() + xlim(0,700) +
stat_smooth(method="lm",fullrange=TRUE)

1
ขอบคุณสิ่งนี้ทำงาน (ปล่อยข้อมูลบางอย่างออกเพื่อให้สาย Firefox ทำงานได้): ggplot (ชุดย่อย (โปรแกรม,! (โปรแกรม == "Firefox" & รุ่น <4)), aes (y = เวอร์ชั่น, x = วันที่, color = Program)) + geom_point () + ylim (0,30) + xlim (as.Date ("1985-01-01"), as.Date ("2015-01-01")) + stat_smooth (เมธอด = lm, fullrange = TRUE)
William Denton

3

คุณจะต้องทำนายค่าสำหรับการสังเกตการณ์ในอนาคตนอก ggplot2 แล้ววางแผนค่าที่คาดการณ์ไว้คุณจะได้รับช่วงความมั่นใจสำหรับการทำนายเหล่านี้

ดูฟังก์ชั่นเหลืองแม้ว่าฉันไม่แน่ใจว่ามันจะทำนายนอกช่วงข้อมูลของคุณหรือไม่

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

คุณอาจต้องการตรวจสอบค่าการทำนายโดยใช้ตัวแบบอนุกรมเวลา

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