17 votos

Cómo predecir o extender las líneas de regresión en ggplot2?

Tengo una estructura de datos que contiene dos series de tiempo: las fechas y los números de versión de Emacs y Firefox versiones. El uso de una ggplot2 comando es fácil hacer un gráfico que utiliza loess (de una manera que parece un poco divertido, que no me importa) para activar los puntos en las líneas.

¿Cómo puedo extender las líneas en el futuro? Quiero determinar donde y cuando Emacs y Firefox versión números de la cruz, y si hay una manera de mostrar un rango de error, mejor que mejor.

Dado que ggplot2 es el trazado de las líneas, se debe tener un modelo, pero no veo cómo decirle a extender sus líneas, o para obtener el modelo y hacer algo con ella.

> 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 and Firefox versions by date

(Nota: he tenido que cambiar los principios de las versiones de Firefox y gire a la 0.1 a 0.01, etc., porque "punto uno" y "punto diez" son iguales aritméticamente. Sé que Firefox es la liberación de cada seis semanas, pero no existen todavía, y estoy interesado en una respuesta general a esta predicción pregunta.)

6voto

Danny Whitt Puntos 111

Como @Glen menciona usted tiene que utilizar un stat_smooth método que apoya las extrapolaciones, que loess no. lm no obstante. Lo que usted necesita hacer es utilizar el fullrange parámetro de stat_smooth y ampliar el eje de las x para incluir el rango que desea predecir. No tengo los datos, pero he aquí un ejemplo de uso de la mtcars conjunto de datos:

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

3voto

Funkatron Puntos 757

Usted tiene que predecir los valores de las futuras observaciones fuera de ggplot2 y, a continuación, la trama de la predicción de los valores, también se puede obtener un intervalo de confianza para estas predicciones.

Mira el loess de la función, aunque no estoy seguro de si lo hace predicciones fuera de su rango de datos, estoy seguro de que algunos liso función sin embargo.

Sin embargo no suele ser sabio para predecir valores fuera de su rango de datos. Yo no pondría mucha confianza en estas predicciones.

Puede que desee investigar la predicción de los valores de uso de un modelo de serie temporal.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X