R中的Prewhiten给出“所有时间都包含NA”,但时间序列中没有NA值

问题描述 投票:1回答:2

我在R中使用来自“TSA”包的函数prewhiten。我得到关于NA值的错误,但我不明白,因为我的数据中没有NA值。这是错误消息:

whitedata <- prewhiten(xhr, ypred, mod1)

Error in na.omit.ts(as.ts(x)) : all times contain an NA

它适用于某些数据文件,但不适用于其他数据文件。当我打印xhrypred时,我没有看到任何NA值。

两者都是时间序列:

xhr <- ts(data$hr_z,start=1,frequency=10) #convert to a time series

ypred < - ts(数据$ pred_z,start = 1,频率= 10)#convert为时间序列

奇怪的是,如果我用不同的模型(一个建立在ypred上)运行它,它运行得很好。我使用的模型是:

ARIMA(2,1,2)                    

Coefficients:
         ar1      ar2      ma1     ma2
      1.4835  -0.7641  -0.9574  0.4021
s.e.  0.1136   0.0826   0.1365  0.0910

sigma^2 estimated as 0.02589:  log likelihood=79.98
AIC=-149.96   AICc=-149.65   BIC=-133.55

因此,在进入预白化之前,似乎正在对数据进行某些操作,并且出现NA值。

是否有任何方法/功能让我检查更详细的内容或让我手动进行预白化?

r time-series
2个回答
0
投票

不知道prewhiten函数有什么问题,但您可以手动执行以下操作:

 fitwhite <- fitted(Arima(xhr, model=mod1))
 fitwhite2 <- fitted(Arima(ypred, model=mod1))
 print(ccf(fitwhite, fitwhite2))

0
投票

我也有同样的问题。我已经尝试过你的方法,但它可以工作

library(forecast)
x <- xhr - fitted(Arima(xhr, model = mod1))
y <- ypred - fitted(Arima(ypred, model = mod1))
ccf(x, y)

你也可以这样做:

y <- residuals(Arima(y, model = mod_1))

您可以检查预美白方法是否有效

sum(x - mod1$residuals) < 10^6

How to prewhiten univariate time series?的答案相同。

© www.soinside.com 2019 - 2024. All rights reserved.