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
它适用于某些数据文件,但不适用于其他数据文件。当我打印xhr
和ypred
时,我没有看到任何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 中的随机数生成器,例如 rnorm 在重复运行时给出相同的输出