模型不是从 R 中的 ARFIMA 生成的

Posted

技术标签:

【中文标题】模型不是从 R 中的 ARFIMA 生成的【英文标题】:Model is not generated from ARFIMA in R 【发布时间】:2016-08-10 14:09:27 【问题描述】:

我想用卡尔曼滤波器预测 ARFIMA,但无法将 arfima 模型拟合到 Kalmanforecast 中。

 library(base)
 library(stats)
 library(parallel)
 library(forecast)
 sink(file='/home/nero/KF_arfima.log')
 f=COST$COST
 x=logb(p,10)
 # Start the clock!
 ptm <- proc.time()
 p=arfima(x[1:50], drange=c(0, 0.5),estim=c("mle"))
 pr <- KalmanForecast(2, p$model)
 y=x[51:52] 
 yhat=pr$pred #predicted value
 map=mean(abs((y - yhat)/y)) #MAPE
 proc.time() - ptm
 print(map)

我收到了错误

KalmanForecast(2, p$model) 中的错误:参数类型无效"

我也查了一下,发现没有叫model的对象。我花了三天时间来解决它。我尝试了各种 R 包,但没有一个能解决它。请让我知道如何解决它。

数据样本:

Timestamp,COST
2015-09-21T00:00:00+00:00,6
2015-09-21T00:06:00+00:00,7
2015-09-21T00:12:00+00:00,7
2015-09-21T00:18:00+00:00,7
2015-09-21T00:24:00+00:00,7
2015-09-21T00:30:00+00:00,7
2015-09-21T00:36:00+00:00,7
2015-09-21T00:42:00+00:00,6
2015-09-21T00:48:00+00:00,7
2015-09-21T00:54:00+00:00,6
2015-09-21T01:00:00+00:00,6
2015-09-21T01:06:00+00:00,7
2015-09-21T01:12:00+00:00,7
2015-09-21T01:18:00+00:00,7
2015-09-21T01:24:00+00:00,7
2015-09-21T01:30:00+00:00,7
2015-09-21T01:36:00+00:00,7
2015-09-21T01:42:00+00:00,6
2015-09-21T01:48:00+00:00,7
2015-09-21T01:54:00+00:00,6
2015-09-21T02:00:00+00:00,6
2015-09-21T02:06:00+00:00,8
2015-09-21T02:12:00+00:00,8
2015-09-21T02:18:00+00:00,7
2015-09-21T02:24:00+00:00,8
2015-09-21T02:30:00+00:00,7
2015-09-21T02:36:00+00:00,7
2015-09-21T02:42:00+00:00,7
2015-09-21T02:48:00+00:00,8
2015-09-21T02:54:00+00:00,7
2015-09-21T03:00:00+00:00,6
2015-09-21T03:06:00+00:00,7
2015-09-21T03:12:00+00:00,7
2015-09-21T03:18:00+00:00,7
2015-09-21T03:24:00+00:00,7
2015-09-21T03:30:00+00:00,7
2015-09-21T03:36:00+00:00,7
2015-09-21T03:42:00+00:00,7
2015-09-21T03:48:00+00:00,6
2015-09-21T03:54:00+00:00,6
2015-09-21T04:00:00+00:00,6
2015-09-21T04:06:00+00:00,7
2015-09-21T04:12:00+00:00,7
2015-09-21T04:18:00+00:00,7
2015-09-21T04:24:00+00:00,7
2015-09-21T04:30:00+00:00,6
2015-09-21T04:36:00+00:00,6
2015-09-21T04:42:00+00:00,6
2015-09-21T04:48:00+00:00,6
2015-09-21T04:54:00+00:00,7
2015-09-21T05:00:00+00:00,6
2015-09-21T05:06:00+00:00,7
2015-09-21T05:12:00+00:00,7

【问题讨论】:

我投票结束这个问题,因为它是关于如何在没有可重现示例的情况下使用 R。 @gung 我放了完整的代码和数据源。 谢谢,我认为您已经完成了大部分工作,但我不明白我们如何访问数据。我提供的链接中列出了发布数据的方法。 @gung 我也修复了数据源问题.. 您的数据只是 6、7、8 的交替序列吗?我怀疑 ARFIMA 模型是否适合它。 【参考方案1】:

KalmanForecast 的帮助文件清楚地描述了需要什么样的模型。 arfima 函数不会产生所需类型的输出。

您可以使用 forecast 包中的 forecast 函数来生成预测,而不是使用 KalmanForecast。它还使用卡尔曼滤波器来计算预测。

如果您真的想使用KalmanForecast 来完成这项工作,您必须自己弄清楚如何创建mod 参数。

【讨论】:

我更改了这样的代码,但我仍然收到相同的错误:k=arfima(x[1:400], drange=c(0, 0.5),estim=c("mle")) z=forecast(k,h=2) pr &lt;- KalmanForecast(2, z) 我检查了模型,但它是不同的。 你没有看我写的。除非您以帮助文件中描述的形式创建 mod 参数,否则您不能使用 KalmanForecast 谢谢...现在使用预测包。最初,我搜索了预测包,但没有找到卡尔曼滤波器:)

以上是关于模型不是从 R 中的 ARFIMA 生成的的主要内容,如果未能解决你的问题,请参考以下文章

呼叫不是从web api中的控制器传递到模型

如何使用 R 模型为谷歌表格中的单元格供电?

R中的KNN混淆矩阵?

通过 insert_id() 插入数据库表的最后一个 id,而不是从 Codeigniter 中的模型返回到控制器文件

Django自定义模型(model)中的字段标签

R中怎么就选定变量,而不是从线性回归的所有变量(F-测试)得到的p值(显着性水平)?