使用tsDyn进行时间序列预测 - R中的错误

3

早上好,
目前我正在使用每日销售的时间序列进行预测。
名为 myts 的数据集之前已被转换成了 时间序列 对象。

无论何时运行以下代码,它都会给出一个 错误

require(tsDyn)
x <- log(myts)
mod.ar <- linear(x, m=2)

错误: x 必须是向量,不能是时间序列对象,您是否想使用 stats::lag()

祝好, Alex

3个回答

2
Alessandro 报告的问题可能是由 dplyr 中的 lag 函数引起的,该函数覆盖了 stats 中的 lag 函数。
尝试这样做:
detach("package:dplyr", unload=TRUE)
library(tsDyn)
linear(log(lynx), m=2)

这里 linear 正确工作,结果如下:
Non linear autoregressive model

AR model
Coefficients:
     const      phi.1      phi.2 
 2.4352150  1.3842377 -0.7477757 

现在,请试试这个:

detach("package:tsDyn", unload=TRUE)
library(dplyr)
library(tsDyn)
linear(log(lynx), m=2)

该代码出现错误信息:
Error: `x` must be a vector, not a ts object, do you want `stats::lag()`?

马可,你的发现太棒了! - dmb

1
尝试这个例子(注意我是从向量开始,然后将其转换为时间序列对象)
require(tsDyn)

set.seed(1234)
tsdatav <- (seq(1:300)+rnorm(300,1000,10))
myts <- ts(tsdatav, frequency = 365, start = c(2017, 6))
plot(myts)

x <- log(myts)
mod.ar <- linear(x, m = 2)
mod.ar

0

是的,问题是由于 dplyr 有自己的版本 lag,它覆盖了通常的滞后函数,以及包 tseriesChaostsDyn 依赖于该包)导入 stas::lag 的错误。已经发送并批准了修复程序,但尚未提交到 CRAN: https://github.com/antoniofabio/tseriesChaos/commit/8abcc5a2d6d65588cdcec5527d4e5cb96eeccaec

同时,您可以简单地将 lag 覆盖回来:

lag <- stats::lag

现在应该可以工作了:

mod.ar <- linear(lynx, m=2)

如果你真的想要使用 dplyr 的版本,可以使用 dplyr::lag


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接