частота ts () для ежегодного ряда данных 30-минутных наблюдений частоты - PullRequest
0 голосов
/ 16 апреля 2019

Я хочу создать объект ts() из кадра данных для прогнозирования физических явлений.

Мои данные имеют периодичность 30 минут в течение 1 года (с 1-1-2018 по 12-31-2018) также я заметил, что мои данные имеют сезонность 1 день.

> head(pleiadesGH.v2[,c("time", "humExt.R", "tempExt", "radExt", "vientoVelo")])
                 time humExt.R  tempExt    radExt vientoVelo
1 2018-01-01 00:00:00       NA       NA        NA         NA
2 2018-01-01 00:30:00 36.78287 16.95125 -10.08125    3.68550
3 2018-01-01 01:00:00 38.56775 16.26350  -9.75000    2.38420
4 2018-01-01 01:30:00 38.76425 15.63470 -10.08125    2.71915
5 2018-01-01 02:00:00 39.61575 15.32030 -10.41250    3.70475
6 2018-01-01 02:30:00 37.48700 15.06485 -10.74375    2.51895

На основании этих ответов:

https://robjhyndman.com/hyndsight/seasonal-periods/

временной рядс частотой 10 минут в R

Я делаю вывод, что моя частота ts() должна быть 48, потому что за 1 день было 48 наблюдений.

ts.freq1 <- ts(data = pleiadesGH.v2[,2:ncol(pleiadesGH.v2)],
           start = c(2018),
           frequency = 48)

Но в результате ts () имеет неверный указатель времени, как вы можете видеть ниже.Данные времени должны быть с 2018 по 2019 вместо 2400.

Time Series:
Start = c(2018, 1) 
End = c(2383, 1) 
Frequency = 48 
          humInt.R    humInt.E  tempInt   tempMac  humExt.R    humExt.E     radExt  tempExt vientoVelo
2018.000        NA          NA       NA        NA        NA          NA         NA       NA         NA
2018.021        NA          NA       NA        NA  36.78287 0.004410894  -10.08125 16.95125  3.6855000
2018.042        NA          NA       NA        NA  38.56775 0.004427114   -9.75000 16.26350  2.3842000
2018.062        NA          NA       NA        NA  38.76425 0.004273306  -10.08125 15.63470  2.7191500
2018.083        NA          NA       NA        NA  39.61575 0.004280005  -10.41250 15.32030  3.7047500
2018.104        NA          NA       NA        NA  37.48700 0.003982139  -10.74375 15.06485  2.5189500
2018.125        NA          NA       NA        NA  35.84950 0.003735063  -10.41250 14.77010  3.2235000
2018.146        NA          NA       NA        NA  36.68462 0.003697674   -8.75625 14.25920  1.4409500
2018.167        NA          NA       NA        NA  41.48250 0.003954404  -11.07500 13.39460  1.5064000
2018.188        NA          NA       NA        NA  42.54688 0.003968433   -9.41875 13.06055  3.6701000
2018.208        NA          NA       NA        NA  43.05450 0.003969581   -9.08750 12.88370  1.6103500
2018.229        NA          NA       NA        NA  44.11888 0.004000366   -9.41875 12.62825  1.3485500
2018.250        NA          NA       NA        NA  46.26400 0.004061953   -9.08750 12.13700  1.9491500
2018.271        NA          NA       NA        NA  46.88625 0.004084874   -9.08750 12.01910  2.0569500
2018.292        NA          NA       NA        NA  49.57175 0.004187059   

неверный график из-за временного индекса

Я также пробовал с этой частотой:

ts.freq1 <- ts(data = pleiadesGH.v2[,2:ncol(pleiadesGH.v2)],
           start = c(2018),
           frequency =  365.25*24*60/30 )

Получение следующего результата:

Time Series:
Start = c(2018, 1) 
End = c(2018, 17521) 
Frequency = 17532 
          humInt.R    humInt.E  tempInt   tempMac  humExt.R    humExt.E     radExt  tempExt vientoVelo
2018.000        NA          NA       NA        NA        NA          NA         NA       NA         NA
2018.000        NA          NA       NA        NA  36.78287 0.004410894  -10.08125 16.95125  3.6855000
2018.000        NA          NA       NA        NA  38.56775 0.004427114   -9.75000 16.26350  2.3842000
2018.000        NA          NA       NA        NA  38.76425 0.004273306  -10.08125 15.63470  2.7191500
2018.000        NA          NA       NA        NA  39.61575 0.004280005  -10.41250 15.32030  3.7047500
2018.000        NA          NA       NA        NA  37.48700 0.003982139  -10.74375 15.06485  2.5189500
2018.000        NA          NA       NA        NA  35.84950 0.003735063  -10.41250 14.77010  3.2235000
2018.000        NA          NA       NA        NA  36.68462 0.003697674   -8.75625 14.25920  1.4409500
2018.000        NA          NA       NA        NA  41.48250 0.003954404  -11.07500 13.39460  1.5064000
2018.001        NA          NA       NA        NA  42.54688 0.003968433   -9.41875 13.06055  3.6701000
2018.001        NA          NA       NA        NA  43.05450 0.003969581   -9.08750 12.88370  1.6103500
2018.001        NA          NA       NA        NA  44.11888 0.004000366   -9.41875 12.62825  1.3485500
2018.001        NA          NA       NA        NA  46.26400 0.004061953   -9.08750 12.13700  1.9491500

Но это косвенно означает, что моя сезонность годовая, но это не моя цель.На следующем рисунке вы можете видеть, что индекс времени теперь фиксирован, несмотря на неправильную сезонность

хороший индекс неправильной сезонности

Что я делаю неправильно?

1 Ответ

0 голосов
/ 22 апреля 2019

Решение заключается в следующем:

freq.daily <- 48 # 24 hours *  2 obs per hour

ts.daily <- ts(data = pleiadesGH.v2.interp[,2:ncol(pleiadesGH.v2)],
           start = c(1),
           frequency = freq.daily)
Time Series:
Start = c(1, 1) 
End = c(366, 1) 
Frequency = 48 
            humInt.R    humInt.E  tempInt   tempMac  humExt.R    humExt.E      radExt
  1.000000  74.56250 0.007699896 14.53500 13.625000  36.78287 0.004410894  -10.081250
  1.020833  74.56250 0.007699896 14.53500 13.625000  36.78287 0.004410894  -10.081250
  1.041667  74.56250 0.007699896 14.53500 13.625000  38.56775 0.004427114   -9.750000
  1.062500  74.56250 0.007699896 14.53500 13.625000  38.76425 0.004273306  -10.081250
  1.083333  74.56250 0.007699896 14.53500 13.625000  39.61575 0.004280005  -10.412500
  1.104167  74.56250 0.007699896 14.53500 13.625000  37.48700 0.003982139  -10.743750

Так просто и эффективно можно управлять датами, начиная с 1.

...