Sto facendo analisi sulle precipitazioni orarie su un file che è disorganizzato. Tuttavia, sono riuscito a pulirlo e memorizzarlo in un dataframe (chiamato CA1), che assume la forma come segue:Serie temporali e stl in R: sono consentite solo serie univariate
Station_ID Guage_Type Lat Long Date Time_Zone Time_Frame H0 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23
1 4457700 HI 41.52 124.03 1948-07-01 8 LST 0 0 0 0 0 0 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0 0 0 0 0 0 0 0 0 0 0 0
2 4457700 HI 41.52 124.03 1948-07-05 8 LST 0 1 1 1 1 1 2.0000000 2.0000000 2.0000000 4.0000000 5.0000000 5.0000000 4 7 1 1 0 0 10 13 5 1 1 3
3 4457700 HI 41.52 124.03 1948-07-06 8 LST 1 1 1 0 1 1 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0 0 0 0 0 0 0 0 0 0 0 0
4 4457700 HI 41.52 124.03 1948-07-27 8 LST 3 0 0 0 0 0 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0 0 0 0 0 0 0 0 0 0 0 0
5 4457700 HI 41.52 124.03 1948-08-01 8 LST 0 0 0 0 0 0 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0 0 0 0 0 0 0 0 0 0 0 0
6 4457700 HI 41.52 124.03 1948-08-17 8 LST 0 0 0 0 0 0 0.3888889 0.3888889 0.3888889 0.3888889 0.3888889 0.3888889 6 1 0 0 0 0 0 0 0 0 0 0
Dove H0 attraverso H23 rappresentano le 24 ore al giorno (riga)
Uso solo CA1 (la dataframe sopra), prendo ogni giorno (riga) di 24 punti e trasposizione verticalmente e concatenare i restanti giorni (righe) a una variabile, che chiamo DAT1:
> dat1[1:48,]
H0 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H0 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 2 2 2 4 5 5 4 7 1 1 0 0 10 13 5 1 1 3
Uso della DAT1 variabile , L'ho inserito come argomento per ottenere i dati di una serie storica:
> rainCA1 <- ts(dat1, start = c(1900+as.POSIXlt(CA1[1,5])$year, 1+as.POSIXlt(CA1[1,5])$mon),
frequency = 24)
Alcune cose da notare:
>dim(CA1)
[1] 5636 31
>length(dat1)
[1] 135264
Così 5636 * 24 (punti dati totali [24] per riga) = 135264 punti totali. La lunghezza (rainCA1) concorda con i punti sopra. Tuttavia, se ho messo fine a se la funzione ts, come ad esempio
>rainCA1 <- ts(dat1, start = c(1900+as.POSIXlt(CA1[1,5])$year, 1+as.POSIXlt(CA1[1,5])$mon),
end = c(1900+as.POSIXlt(CA1[5636,5])$year, 1+as.POSIXlt(CA1[5636,5])$mon),
frequency = 24)
ottengo 1134 la lunghezza totale di punti, dove mi manca un sacco di dati. Suppongo che ciò sia dovuto al fatto che le date non sono consecutive e dato che sono solo il mese e l'anno come argomento per il punto di partenza.
Continuando, in quello che penso è il percorso corretto, utilizzando il primo calcolo ts senza l'argomento fine, ho fornirle come input per lo STL:
>rainCA1_2 <-stl(rainCA1, "periodic")
Purtroppo, ottengo un errore:
Error in stl(rainCA1, "periodic") : only univariate series are allowed
Che non capisco o come farlo. Tuttavia, se torno alla funzione ts e fornisco l'argomento end, stl funziona bene senza errori.
Ho effettuato ricerche in molti forum, ma nessuno (o a mio parere) fornisce una buona soluzione per ottenere gli attributi dei dati dei dati orari. Se qualcuno mi può aiutare, lo apprezzerò molto. Grazie!