我试图从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(数据)出错:仅允许数字数据
所以我这样做了:
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"
两次我得到“数字”作为结果,但cpt.means仍然没有运行。
我错过了什么?有什么建议?
谢谢
在documentation,它突出了data
功能:
数据
包含要在其中查找变更点的数据的矢量,ts对象或矩阵。如果数据是矩阵,则每行被视为单独的数据集。
因此,正如它所说,您的数据应该是矢量,矩阵或时间序列对象。
但如果你运行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)