Почему функция stl для разложения временных рядов в R не работает? - PullRequest
0 голосов
/ 20 марта 2020

Я собрал эти данные (80 строк) и пытаюсь использовать stl() для разложения этого временного ряда:

    V1
1  6069
2  5989
3  5882
4  5875
5  6263
6  6168
7  6209
8  5171
9  5938
10 6296
11 6314
12 6003
13 5923
14 4389
15 4985
16 6273
17 5438
18 5126
19 6571
20 6783
21 7093
22 5010
23 7683
24 7233
25 6758
26 7356
27 7437
28 7520
29 7444
30 7466
31 7673
32 7945
33 8782
34 8245
35 8369
36 7750
37 7649
38 7187
39 6949
40 7520
41 6912
42 7983
43 7406
44 8361
45 6500
46 8224
47 8985
48 7663
49 8785
50 6251
51 8453
52 8515
53 7698
54 8833
55 8991
56 8583
57 8865
58 8689
59 6276
60 8141
61 8060
62 8966
63 8233
64 6526
65 7561
66 8160
67 7622
68 7976
69 7619
70 7810
71 7674
72 6784
73 4910
74 6999
75 6665
76 6604
77 5767
78 6691
79 6163
80 2258

Чтобы разложить временные ряды, я пытаюсь использовать stl() который должен работать с объектами формы класса ts:

myts <- read.table(file="clipboard", header=FALSE)
myts <- ts(myts, frequency=4)
stl(myts, "periodic")

Но я получаю эту ошибку независимо от того, что я делаю (например: установить frequency=1 при вызове функции ts или используя только ts без дополнительных аргументов, кроме моих данных:

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

Я не знаю, что я делаю неправильно, потому что все примеры, которые я нашел в Интернете, имеют одинаковую структуру. очень цениться.

1 Ответ

0 голосов
/ 20 марта 2020

Проблема с ts в предположении, что ваши данные представляют собой матрицу. Вам необходимо указать, какую переменную вы используете. Это должно работать:

x <-
  "V1
1  6069
2  5989
3  5882
4  5875
5  6263
6  6168
7  6209
8  5171
9  5938
10 6296
11 6314
12 6003
13 5923
14 4389
15 4985"
y <- read.table(text = x, header = TRUE)
myts <- ts(y, frequency = 4)
stl(myts[, 1], "periodic")

Проблема обсуждается здесь .

...