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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了R中的Prewhiten给出“所有时间都包含NA”,但时间序列中没有NA值相关的知识,希望对你有一定的参考价值。

我在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值。

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

答案

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

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

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

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?的答案相同。

以上是关于R中的Prewhiten给出“所有时间都包含NA”,但时间序列中没有NA值的主要内容,如果未能解决你的问题,请参考以下文章

与手动计算相比,R 中的 glht 函数给出不同的结果

R 中的随机数生成器,例如 rnorm 在重复运行时给出相同的输出

R Shiny 中的朴素贝叶斯实现

如何在 r 中更改和/或分离图形图例中的组件?

如何编写一个循环,其中数据集被拆分,每个拆分的趋势线斜率在 R 中给出

R.id 给出错误“无法解析符号'R'”[重复]