[R-es] Consulta sobre el correcto uso de smoothSpline()

2015-04-07 Por tema lbianchi
Hola a todos:
  quiero consultarles para estar seguro de que estoy entendiendo bien el 
funcionamiento de la función smoothSpline() del paquete 'timeSeries'.

Tengo una serie temporal con datos mensuales a la cual quiero suavizar usando 
splines para, por ejemplo, comparar con otras series temporales.
Por lo que estuve viendo, me conviene usar la función smoothSpline() que se 
basa en smooth.spline() del paquete 'stats'.
Pero me quedan algunas dudas respecto de los argumentos que se utilizan en 
ambas funciones. Principalmente, el que más me interesa es 'nknots' y no logro 
estar seguro de su funcionamiento.

Digamos que tengo una serie mensual con 30 años de datos, es decir 360 
registros, uno por cada mes.
Yo quisiera hacer y comparar distintos suavizados, por ejemplo, agrupando de 
a 6, 12, 24 y 60 meses (perdón pero no sé cuál sería el término exacto en lugar 
de agrupar).
Las dudas que me surgen son:
1- ¿el número que le asigno a 'nknots' divide a la serie en partes 
iguales?...yo creo que sí, pero no estoy seguro
2- ¿nknots es el número de puntos internos? ¿sin considerar los extremos?
3- si es así, y considerando que tengo 360 datos, si defino nknots=59 ¿estoy 
dividiendo a la serie en 60 partes, es decir agrupando cada 6 meses (360/60)? y 
si, por ejemplo, defino nknots=29 ¿la divido en 30 partes, es decir agrupando 
cada 12 meses (360/30)?...y así sucesivamente.

Por ejemplo, el código sería

   # sri1 es una serie temporal con 360 registros mensuales
   .
   .
   # calculo la curva suavizada con knots=29
   sri1.smooth29 lt;- smoothSpline(sri1, all.knots=FALSE, nknots=29)
   # dibujo la serie original con la suavizada sobre ella
   plot(sri1.smooth29, plot.type=single, main=Knots=29 -- 12 meses)
   .
   .
   # lo mismo podría hacer para los otros casos y luego compararlos


Espero que se entienda lo que quiero hacer y me puedan ayudar a responder si 
¿está bien lo que estoy haciendo? ¿hay alguna otra forma mejor de hacerlo?

Muchísimas gracias,
Saludos,

Lucas.


[[alternative HTML version deleted]]

___
R-help-es mailing list
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es


Re: [R-es] Consulta sobre el correcto uso de smoothSpline()

2015-04-07 Por tema Javier Marcuzzi
Estimado Lucas Bianchi

Para algunas cosas se usar spline, no justo smoothSpline(), tendía que
leerlo y ahora no alcanzo, pero como la idea es sobre los knot, básicamente
estos son puntos donde se coloca algo, y ese algo no es obligatorio, puede
no ser utilizado. Ese algo que es un punto es utilizado para intentar por
decirlo de alguna forma, hacer pasar la curva del ajuste, por ejemplo el
knot es 5,50, el algoritmo intentaría hacer pasar por ese punto el ajuste
de curva. Sobre los ajustes de curvas y spline y los knot leí
varias publicaciones científicas donde cambiaban el lugar y cantidad de
estos, y decían este modelo es mejor para, este otro para ...

Pienso que el problema no va a ser de R, le sugiero leer
algunas publicaciones sobre el área de la ciencia que necesita e inspirarse
en estos para comenzar, creo que podría colocar tantos knot como desde 0 a
la cantidad de días que tiene (no seguro), claro, esto último sería medio
feo, pero ...

Javier Marcuzzi



El 7 de abril de 2015, 17:24, lbianchi lbian...@zoho.com escribió:

 Hola a todos:
   quiero consultarles para estar seguro de que estoy entendiendo bien el
 funcionamiento de la función smoothSpline() del paquete 'timeSeries'.

 Tengo una serie temporal con datos mensuales a la cual quiero suavizar
 usando splines para, por ejemplo, comparar con otras series temporales.
 Por lo que estuve viendo, me conviene usar la función smoothSpline() que
 se basa en smooth.spline() del paquete 'stats'.
 Pero me quedan algunas dudas respecto de los argumentos que se utilizan en
 ambas funciones. Principalmente, el que más me interesa es 'nknots' y no
 logro estar seguro de su funcionamiento.

 Digamos que tengo una serie mensual con 30 años de datos, es decir 360
 registros, uno por cada mes.
 Yo quisiera hacer y comparar distintos suavizados, por ejemplo,
 agrupando de a 6, 12, 24 y 60 meses (perdón pero no sé cuál sería el
 término exacto en lugar de agrupar).
 Las dudas que me surgen son:
 1- ¿el número que le asigno a 'nknots' divide a la serie en partes
 iguales?...yo creo que sí, pero no estoy seguro
 2- ¿nknots es el número de puntos internos? ¿sin considerar los extremos?
 3- si es así, y considerando que tengo 360 datos, si defino nknots=59
 ¿estoy dividiendo a la serie en 60 partes, es decir agrupando cada 6 meses
 (360/60)? y si, por ejemplo, defino nknots=29 ¿la divido en 30 partes, es
 decir agrupando cada 12 meses (360/30)?...y así sucesivamente.

 Por ejemplo, el código sería

# sri1 es una serie temporal con 360 registros mensuales
.
.
# calculo la curva suavizada con knots=29
sri1.smooth29 lt;- smoothSpline(sri1, all.knots=FALSE, nknots=29)
# dibujo la serie original con la suavizada sobre ella
plot(sri1.smooth29, plot.type=single, main=Knots=29 -- 12 meses)
.
.
# lo mismo podría hacer para los otros casos y luego compararlos


 Espero que se entienda lo que quiero hacer y me puedan ayudar a responder
 si ¿está bien lo que estoy haciendo? ¿hay alguna otra forma mejor de
 hacerlo?

 Muchísimas gracias,
 Saludos,

 Lucas.


 [[alternative HTML version deleted]]

 ___
 R-help-es mailing list
 R-help-es@r-project.org
 https://stat.ethz.ch/mailman/listinfo/r-help-es


[[alternative HTML version deleted]]

___
R-help-es mailing list
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es