gpt4 book ai didi

r - 在季节周期分析 R 中处理 NA

转载 作者:行者123 更新时间:2023-12-01 16:29:56 29 4
gpt4 key购买 nike

我有一个每月数据的时间序列,其中有很多缺失的数据点,设置为 NA。我想简单地从数据中减去年度周期,忽略丢失的条目。似乎分解函数无法处理丢失的数据点,但我在其他地方看到建议使用季节性包。不过,我在 NA 方面也遇到了问题。

这是使用内置数据集的问题的最小可重现示例...

library(seasonal)

# set range to missing NA in Co2 dataset
c2<-co2
c2[c2>330 & c2<350]=NA
seas(c2,na.action=na.omit)

Error in na.omit.ts(x) : time series contains internal NAs

是的,我知道!这就是为什么我要求你忽略它们!让我们试试这个:

seas(c2,na.action=na.x13)

Error: X-13 run failed

Errors:
- Adding MV1981.Apr exceeds the number of regression effects
allowed in the model (80).

嗯,有趣,不知道这意味着什么,好吧,请排除 NA:

seas(c2,na.action=na.exclude)

Error in na.omit.ts(x) : time series contains internal NAs

这并没有多大帮助!并且更好地衡量

decompose(c2)

Error in na.omit.ts(x) : time series contains internal NAs

我的观点如下:

R version 3.4.4 (2018-03-15) -- "Someone to Lean On"
Copyright (C) 2018 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)

为什么忽略 NA 会造成这样的问题?我显然是完全愚蠢的,但我看不出我在海洋功能上做错了什么。很高兴考虑使用 xts 的替代解决方案。

最佳答案

我的第一个解决方案,只需手动计算季节性周期,转换为数据帧以减去向量,然后再转换回来。

# seasonal cycle
scycle=tapply(c2,cycle(c2),mean,na.rm=T)
# converting to df
df=tapply(c2, list(year=floor(time(c2)), month = cycle(c2)), c)
# subtract seasonal cycle
for (i in 1:nrow(df)){df[i,]=df[i,]-scycle}
# convert back to timeseries
anomco2=ts(c(t(df)),start=start(c2),freq=12)

不太漂亮,也不是很高效。

误用的评论让我想到了另一个Seasonal decompose of monthly data including NA in r我错过了一个几乎重复的问题,这建议了动物园包,它似乎对于添加剂系列非常有效

library(zoo)
c2=co2
c2[c2>330&c2<350]=NA
d=decompose(na.StructTS(c2))
plot(co2)
lines(d$x,col="red")

表明该系列通过缺失的时期得到了很好的重建。

black lines shows Co2 series with missing chunk and the red line is the reconstructed series

deconstruct的输出具有可用的趋势和季节周期。我希望我可以将我的赏金转移给用户 https://stackoverflow.com/users/516548/g-grothendieck对于这个有用的回应。也感谢用户的误用。

但是,如果缺失的部分位于系列的末尾,则软件必须推断趋势并且会遇到更多困难。原始序列(黑色)保持趋势,而重建序列(红色)趋势较小:

c2=co2
c2[c2>350]=NA
d=decompose(na.StructTS(c2))
plot(co2)
lines(d$x,col="red")

extrapolation of data using zoo

最后,如果缺失的部分位于系列的开头,则该软件无法及时向后推断并抛出错误...我觉得另一个问题即将出现...

c2=co2
c2[c2<330]=NA
d=decompose(na.StructTS(c2))

Error in StructTS(y) :
the first value of the time series must not be missing

关于r - 在季节周期分析 R 中处理 NA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52311856/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com