Ma quando passo quel vettore che tu hai chiamato x1 alla funzione applyrolling mi da errore
Hai ragionissima, Paolo: ho provato a specificare delle date a caso per
x e adesso funziona perfettamente.
Media mobile semplice a 10 periodi:
Codice:
[COLOR=#000000][FONT=Lucida Console][COLOR=blue]> [/COLOR][COLOR=blue]tail(x1 <- timeSeries(data = x, charvec = x.dates))
[/COLOR]GMT TS.1
1993-09-08 22:00:00 14180
1993-09-09 22:00:00 14245
1993-09-10 22:00:00 14260
1993-09-11 22:00:00 14290
1993-09-12 22:00:00 14330
1993-09-13 22:00:00 14340
[COLOR=blue]> [/COLOR][COLOR=blue]tail(apply.rolling(x1, width = 10, FUN = mean))
[/COLOR]GMT calcs
1993-09-08 22:00:00 14132.5
1993-09-09 22:00:00 14145.5
1993-09-10 22:00:00 14161.0
1993-09-11 22:00:00 14179.0
1993-09-12 22:00:00 14200.0
1993-09-13 22:00:00 14225.0[/FONT][/COLOR]
Ma c'è una spiegazione: la comodità di
apply.rolling() è quella di creare un altro oggetto
time series già automaticamente allineato, in termini di date, all'oggetto di partenza (quindi non hai bisogno di allinearlo manualmente).
Infatti, se provi ad applicare
rollapply() anzichè
apply.rolling()(*), vedi che funziona anche senza date ma ti restituisce un oggetto che (eventualmente) va manualmente allineato a quello di partenza se hai intenzione di farci un
back test o di visualizzarlo su un grafico, perchè ha una lunghezza differente.
Siccome
apply.rolling() cerca automaticamente l'allineamento delle date delle due
time series, quando non le trova si incazza e ti "suggerisce" di usare
rollapply() per questo genere di cose
(*)
rollapply() è semplicemente la funzione di partenza da cui è stata ricavata
apply.rolling() per le serie storiche.