Ggplot2'deki regresyon çizgileri nasıl tahmin edilir veya uzatılır?


18

İki zaman serisi içeren bir veri çerçevesi var: tarihleri ​​ve Emacs ve Firefox sürümleri sürüm numaraları. Bir ggplot2 komutu kullanarak, noktaları çizgi haline getirmek için loess (biraz eğlenceli görünüyor, umursamıyorum) kullanan bir grafik yapmak kolaydır.

Hatları geleceğe nasıl uzatabilirim? Emacs ve Firefox sürüm numaralarının nerede ve ne zaman geçeceğini belirlemek istiyorum ve bir hata aralığını göstermenin bir yolu varsa, daha iyi.

Ggplot2'nin çizgileri çizdiği göz önüne alındığında, bir modeli olmalı, ancak çizgileri uzatmak veya modeli çıkarmak ve onunla bir şeyler yapmak için nasıl söyleyeceğimi göremiyorum.

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

Tarihe göre Emacs ve Firefox sürümleri

(Not: Erken Firefox sürümlerini geçip 0,1'e 0,01 vb. Çevirmek zorunda kaldım, çünkü "nokta bir" ve "nokta on" aritmetik olarak eşittir. Firefox'un şimdi altı haftada bir yayınladığını biliyorum, ancak mevcut değiller ama bu tahmin sorusunun genel bir cevabı ile ilgileniyorum.)

Yanıtlar:


22

@Glen'den bahsedildiği gibi stat_smooth, ekstrapolasyonları destekleyen bir yöntem kullanmanız gerekir loess. lmancak. Yapmanız gereken , x ekseni fullrangeparametresini kullanmak ve stat_smoothtahmin etmek istediğiniz aralığı dahil etmek için genişletmektir. Verileriniz yok, ancak mtcars veri kümesini kullanan bir örnek:

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

1
Teşekkürler, bu işi yapar (bazı verileri dışarıda bırakarak Firefox satırının çalışmasını sağlar): ggplot (alt küme (programlar,! (Program == "Firefox" ve Sürüm <4)), aes (y = Sürüm, x = Tarih, color = Program)) + geom_point () + ylim (0,30) + xlim (as.Date ("1985-01-01"), asTate ("2015-01-01")) + stat_smooth (yöntem = lm, fullrange = TRUE)
William Denton

3

Ggplot2 dışındaki gelecekteki gözlemlerin değerlerini tahmin etmeniz ve sonra öngörülen değerleri çizmeniz gerekir, ayrıca bu tahminler için bir güven aralığı da alabilirsiniz.

Veri aralığınızın dışında tahminler yapıp yapmadığından emin olmasam da, iyi olmayan işleve bakın, ancak bazı pürüzsüz fonksiyonların bunu yaptığından eminim.

Ancak, veri aralığınızın dışındaki değerleri tahmin etmek genellikle akıllıca olmaz. Bu tahminlere fazla güvenmem.

Bir zaman serisi modeli kullanarak tahmin değerlerini araştırmak isteyebilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.