Я делаю анализ по почасовым осадкам в файле, который неорганизован. Тем не менее, мне удалось очистить его и хранить его в dataframe (так называемый СА1), который принимает форму, как следует:Временные ряды и stl в R: допускается только одномерная серия
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
где h0 через H23 представляют 24 часа в сутки (строки)
Использование только СА1 (выше dataframe), Я принимаю каждый день (строки) из 24 точек и перенести его вертикально и конкатенации остальные дни (строки) к одной переменной, которую я называю 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
Использование переменной DAT1 , Я ввожу его в качестве аргумента для получения данных временных рядов:
> rainCA1 <- ts(dat1, start = c(1900+as.POSIXlt(CA1[1,5])$year, 1+as.POSIXlt(CA1[1,5])$mon),
frequency = 24)
Несколько вещей отметить:
>dim(CA1)
[1] 5636 31
>length(dat1)
[1] 135264
Таким образом, 5636 * 24 (всего точек данных [24] для каждой строки) = 135264 общее количество очков. Длина (rainCA1) соответствует приведенным выше пунктам. Однако, если я поставлю точку в функции Т.С., такие как
>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)
Я получаю 1134 общей длину точек, где я пропускаю много данных. Я предполагаю, что это связано с тем, что даты не являются последовательными, и поскольку я применяю только месяц и год в качестве аргумента для отправной точки.
Продолжая, в том, что я думаю, что это правильный путь, используя первый Ts вычисления без конца аргумента я поставить его в качестве входных данных для СТЛ:
>rainCA1_2 <-stl(rainCA1, "periodic")
К сожалению, я получаю сообщение об ошибке:
Error in stl(rainCA1, "periodic") : only univariate series are allowed
Которые я не понимаю или как это делается. Однако, если я вернусь к функции ts и предоставил конечный аргумент, stl отлично работает без каких-либо ошибок.
Я исследовал на многих форумах, но ни один (или, насколько мне известно) не дает хорошего решения для получения атрибутов данных почасовых данных. Если кто-нибудь может мне помочь, я буду очень признателен. Спасибо!