Làm thế nào để dự đoán hoặc mở rộng đường hồi quy trong ggplot2?


17

Tôi có một khung dữ liệu chứa hai chuỗi thời gian: ngày và số phiên bản của bản phát hành Emacs và Firefox. Sử dụng một lệnh ggplot2, thật dễ dàng để tạo một biểu đồ sử dụng hoàng thổ (theo cách có vẻ hơi thú vị, điều mà tôi không bận tâm) để biến các điểm thành các đường.

Làm thế nào tôi có thể mở rộng các dòng vào tương lai? Tôi muốn xác định vị trí và thời điểm số phiên bản Emacs và Firefox sẽ giao nhau và nếu có cách nào để hiển thị phạm vi lỗi, thì tốt hơn hết.

Cho rằng ggplot2 đang vẽ các dòng, nó phải có một mô hình, nhưng tôi không thấy làm thế nào để bảo nó mở rộng các dòng hoặc để đưa mô hình ra và làm gì đó với nó.

> 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)

Phiên bản Emacs và Firefox theo ngày

(Lưu ý: Tôi đã phải làm mờ các phiên bản Firefox đầu tiên và biến 0,1 thành 0,01, v.v., bởi vì "dot one" và "dot ten" là bằng nhau về mặt đối xứng. Tôi biết Firefox sẽ phát hành sáu tuần một lần, nhưng chúng không tồn tại chưa, và tôi quan tâm đến câu trả lời chung cho câu hỏi dự đoán này.)

Câu trả lời:


21

Như @Glen đề cập, bạn phải sử dụng một stat_smoothphương pháp hỗ trợ ngoại suy, loessnhưng không. lmtuy nhiên. Những gì bạn cần làm là sử dụng fullrangetham số stat_smoothvà mở rộng trục x để bao gồm phạm vi bạn muốn dự đoán. Tôi không có dữ liệu của bạn, nhưng đây là một ví dụ sử dụng bộ dữ liệu mtcars:

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

1
Cảm ơn, điều này thực hiện công việc (bỏ một số dữ liệu để dòng Firefox hoạt động): ggplot (tập hợp con (chương trình ,! (Chương trình == "Firefox" & Phiên bản <4)), aes (y = Phiên bản, x = Ngày, color = Chương trình)) + geom_point () + ylim (0,30) + xlim (as.Date ("1985-01-01"), as.Date ("2015-01-01")) + stat_smooth (phương thức = lm, fullrange = TRUE)
William Denton

3

Bạn sẽ phải dự đoán các giá trị cho các quan sát trong tương lai bên ngoài ggplot2 và sau đó vẽ các giá trị dự đoán, bạn cũng có thể có được khoảng tin cậy cho các dự đoán này.

Nhìn vào chức năng hoàng thổ, mặc dù tôi không chắc liệu nó có dự đoán ngoài phạm vi dữ liệu của bạn hay không, tuy nhiên tôi chắc chắn một số chức năng trơn tru thực hiện.

Tuy nhiên, thường không khôn ngoan khi dự đoán các giá trị ngoài phạm vi dữ liệu của bạn. Tôi sẽ không đặt nhiều niềm tin vào những dự đoán này.

Bạn có thể muốn điều tra các giá trị dự đoán bằng mô hình chuỗi thời gian.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.