模型不是从 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 <- KalmanForecast(2, z)
我检查了模型,但它是不同的。
你没有看我写的。除非您以帮助文件中描述的形式创建 mod 参数,否则您不能使用 KalmanForecast
。
谢谢...现在使用预测包。最初,我搜索了预测包,但没有找到卡尔曼滤波器:)以上是关于模型不是从 R 中的 ARFIMA 生成的的主要内容,如果未能解决你的问题,请参考以下文章