Ошибка в as.data.frame.default (x [[i]], необязательно = TRUE): невозможно принудительно привести класс «false.nearest» к data.frame - PullRequest
1 голос
/ 20 апреля 2020

Функция false.nearest из R пакета tseriesChaos реализует метод ложных ближайших соседей, чтобы помочь определить оптимальный размер вложения временного ряда, series.

library(tseriesChaos)
fb <- false.nearest(series, m=20, d=3, t=220, eps=1, rt=3)

Результат в этом случае

                   m1           m2           m3           m4           m5
fraction 7.944049e-01 6.918705e-01 6.174054e-01 5.591561e-01 5.405405e-01
total    1.696928e+06 5.091560e+05 1.569860e+05 5.128800e+04 1.753800e+04
                  m6           m7           m8           m9          m10
fraction 5.282105e-01 5.005336e-01 5.016949e-01 5.339806e-01 4.516129e-01
total    5.778000e+03 1.874000e+03 5.900000e+02 2.060000e+02 6.200000e+01
                  m11          m12          m13          m14          m15
fraction 1.818182e-01 1.428571e-01 2.500000e-01 0.000000e+00             
total    2.200000e+01 1.400000e+01 8.000000e+00 2.000000e+00 0.000000e+00
                  m16          m17          m18          m19          m20
fraction                                                                 
total    0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00

Я хотел бы получить data.frame таким образом, чтобы первый столбец содержал долю ложных соседей, а второй столбец содержал общее количество соседей для каждого указанного измерения вложения (строк).

Я попытался получить этот результат, используя:

df=data.frame(text=names(fb), class=fb, row.names=NULL)

, но это вернуло следующую ошибку:

Error in as.data.frame.default(x[[i]], optional = TRUE) :   cannot coerce class ‘"false.nearest"’ to a data.frame

1 Ответ

1 голос
/ 20 апреля 2020

Вы имеете дело с объектом массива здесь. Хитрость заключается в том, чтобы использовать as.data.frame.table:

fb %>% as.data.frame.table %>% 
  pivot_wider(id_cols = Var2, names_from = Var1, values_from = Freq) %>%
  as.data.frame()

   Var2     fraction   total
1    m1 8.264617e-01 2744386
2    m2 4.784931e-01  519368
3    m3 1.590979e-01  266138
4    m4 4.327443e-03  177472
5    m5 2.278451e-03  133424
6    m6 2.217003e-03  106450
7    m7 1.990275e-03   88430
8    m8 1.772487e-03   75600
9    m9 1.387758e-03   66294
10  m10 1.282571e-03   59256
11  m11 1.158272e-03   53528
12  m12 1.071900e-03   48512
13  m13 7.661799e-04   44376
14  m14 6.919731e-04   40464
15  m15 2.698473e-04   37058
16  m16 1.768138e-04   33934
17  m17 1.937859e-04   30962
18  m18 7.007217e-05   28542
19  m19 0.000000e+00   26238
20  m20 0.000000e+00   24110

Данные, которые я использовал (поскольку series не было доступно):

library(tseriesChaos)
fb <- false.nearest(rossler.ts, m=20, d=3, t=220, eps=1, rt=3)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...