Ошибка в checkData (data): разрешены только числовые данные - PullRequest
0 голосов
/ 04 сентября 2018

Я пытаюсь запустить функцию cpt.mean из changepoint package. После первой попытки запустить его на моем фрейме данных df2 выдает ошибку:

Мой фрейм данных df2 выглядит так:

    date     amount
2012-07-01   0.0000000
2012-08-01   1.1111111
2012-09-01   0.2985075
2012-10-01   0.5141388
2012-11-01   0.0000000
2012-12-01   0.0000000
2013-01-01   0.6849315
2013-02-01   1.9762846
2013-03-01   1.1799410
2013-04-01   0.2881844
2013-05-01   0.2617801
2013-06-01   1.2285012

Мой код:

df2 <- data.frame(df1$date,df1$amount))
df2.pelt <- cpt.mean(df2, method="PELT")

Ошибка в checkData (data): разрешены только числовые данные

Итак, я сделал это:

df2 <- data.frame(as.numeric(df2$date),as.numeric(df2$amount))

И мой новый фрейм данных выглядит так:

 date        amount
15522      0.0000000
15553      1.1111111
15584      0.2985075
15614      0.5141388
15645      0.0000000
15675      0.0000000
15706      0.6849315
15737      1.9762846
15765      1.1799410
15796      0.2881844
15826      0.2617801
15857      1.2285012

Я снова пытаюсь запустить функцию cpt.mean, появляется та же ошибка. Тогда я вижу, какие классы мои столбцы с этим:

> class(df2$date.)
[1] "numeric"
> class(df2$amount.)
[1] "numeric"

Оба раза я получаю "numeric" в результате, но cpt.means все еще не запускается.

Чего мне не хватает? Есть предложения?

Спасибо

1 Ответ

0 голосов
/ 04 сентября 2018

В документации выделено свойство data:

данные

Вектор, объект или матрица, содержащие данные, в пределах которых Вы хотите найти точку изменения. Если данные представляют собой матрицу, каждая строка считается отдельным набором данных.

Итак, как говорится, ваши данные должны быть вектор , матрица или объект временного ряда .

Но если вы запустите class(df2), это даст вам data.frame.

Вот небольшой пример запуска этой функции с вектором:

library(changepoint)    
x=c(rnorm(100,0,1),rnorm(100,10,1))
cpt.mean(x,penalty="SIC",method="AMOC",class=FALSE) 
...