【问题标题】:Use of loops and seasonal adjustment in R with multivariate timeseries在具有多元时间序列的 R 中使用循环和季节调整
【发布时间】:2016-10-28 03:56:31
【问题描述】:

我的目标是按季节调整数据并仅保存季节性因素。 我的数据包含 60 多个时间序列。如您所见,我的问题之一是 是很多时间序列,我需要一次调整。这是我在 R 中的尝试:

library("timeDate")
library("timeSeries")
library("seasonal")

mDxts <- structure(c(35.8, 41.6, 35.9, 36.9, 42.43, 36.067,28.67, 29.53, 32.83, 29.867,23.9, 20.8, 21.167, NA, NA, NA, NA, NA, NA, NA, 149.67,108.89, 89.067, 83.33, 77.2,64.91, 50.2, 48, 62.13, 52.93,43.2, 38.8, 37.9, 19, 18, 17, 16.5, 16, 15.5, 15), class = c("xts","zoo"), .indexCLASS = "yearqtr", tclass = "yearqtr", .indexTZ = "", tzone = "", index = structure(c(946684800,954547200, 962409600, 970358400, 978307200, 986083200, 993945600,1001894400, 1009843200, 1017619200, 1025481600, 1033430400, 1041379200,1491004800, 1498867200, 1506816000, 1514764800, 1522540800, 1530403200,1538352000), tzone = "", tclass = "yearqtr"), .Dim = c(20L, 2L), .Dimnames = list(NULL, c("depall", "ref"))) 
ll<-lapply(mDxts, function(e) ts(e,start=c(2000,1),frequency=4))
#I. Seasonal adjustment and saving only d10 component:
sf<-sapply(ll,function(e) try(seas(e,x11="",na.action=na.exclude, transform.function = "none",x11.mode="logadd",arima.model="(0 1 1) (0 1 0)",regression.aictest = NULL, outlier=NULL,x11.save="d10")))

据我了解,我的主要问题是在执行sf&lt;-sapply(st,function(e) try(seas(e, x11.save="d10")) 时,我获得了一个列表,其中每个元素都是一个包含所有 d10、d11 等的列表(查看SF.df&lt;-as.data.frame(SF))。

【问题讨论】:

    标签: r loops time-series


    【解决方案1】:

    嗯,时间过去了,现在我可以回答问题了。 我需要同时对大量数据进行季节性调整,然后一次重新计算它们。

    1. 首先,一个问题是季节性调整的结果被保存为列表。答案是使用来自seasonal 的函数final

      sa<-sapply(st,function(e) try(final(seas(e,x11="",na.action=na.exclude,
      transform.function = "none",x11.mode="logadd",arima.model="(0 1 1) (0 1 0)",
      regression.aictest = NULL, outlier=NULL))))
      
    2. 要保存季节性因素,需要来自同一包的函数 series

      sf<-sapply(st,function(e) try(series(seas(e,x11="",na.action=na.exclude,
       transform.function = "none",x11.mode="logadd",arima.model="(0 1 1) (0 1 0)",
      regression.aictest = NULL, outlier=NULL),"d10")))
      

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-08-19
      • 2017-03-11
      • 2021-11-02
      • 2018-06-01
      • 1970-01-01
      • 2021-10-25
      • 1970-01-01
      • 2021-03-18
      相关资源
      最近更新 更多