Временные ряды и stl в R :Ошибка разрешены только одномерные ряды

Я делаю анализ почасовых осадков на файл, который неорганизован. Однако мне удалось очистить его и сохранить в кадре данных (с именем CA1 ), который принимает следующий вид:

  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 часа в сутки (строку)

Используя только CA1 (кадр данных выше ), я беру каждый день (строку )из 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 )согласуется с указанными выше пунктами. Однако, если я ставлю точку в функции ts, например

>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 без конечного аргумента, я подаю его в качестве входных данных для stl:

>rainCA1_2 <-stl(rainCA1, "periodic")

К сожалению, я получаю сообщение об ошибке :

Error in stl(rainCA1, "periodic") : only univariate series are allowed

, которое я не понимаю и как это сделать. Однако, если я вернусь к функции ts и предоставлю конечный аргумент, stl работает нормально без каких-либо ошибок.

Я исследовал множество форумов, но никто (или, насколько я понимаю, )не предлагает хорошего решения для получения атрибутов данных почасовых данных. Если кто-нибудь может мне помочь, я буду очень признателен. Спасибо!

11
задан Luciano Rodriguez 8 May 2012 в 03:27
поделиться