5

我想生成过去 22 年每个县的经季节性调整的失业数据。

美国劳工统计局使用 ARIMA 对整个国家的失业率进行季节性调整,但不适用于个别县。我需要帮助弄清楚如何在 R 中强制 ARIMA 为每个美国县进行季节性调整。

我可以使用 得到 ARIMA 模型auto.arima(mytimeseries),但我不知道如何减去季节性分量(使用(decompose(mytimeseries))$seasonal).

这个网站https://onlinecourses.science.psu.edu/stat510/?q=book/export/html/51暗示我应该能够减去 ARIMA 残差:

predicteds = oilindex - expsmoothfit$residuals 

但是当我尝试它时,这看起来并不正确(肉眼)——它看起来根本没有识别出大部分的季节性变化。

我想也许提出的模型auto.arima()很差,但是当我将模型绘制在与原始数据相同的图上时,它看起来相当不错。

该站点http://www.statoek.wiso.uni-goettingen.de/mitarbeiter/ogi/pub/r_workshop.pdf谈到了通过使用 predict() 与序列进行平滑处理,但我无法让它工作:我无法判断我的data.frame(mytimeseries[date=seq])行是否有问题,或者 arima 对象是否没有与gam对象相同的方法,因此预测不起作用。

那么:如何使用 ARIMA 从数据中去除季节性?任何帮助表示赞赏!

这是我到目前为止的一个例子。(我是一个 R 新手,所以毫无疑问,这段代码是次优的。)

# I put unadjusted values for one county at
# http://tmp.webfoot.com/tmp/tmp/unemployment17019.csv
a = read.table("/tmp/unemployment17019.csv", header=FALSE)
# there is probably a simple seven-character way of doing the next line...
all = c(a[1,], a[2,], a[3,], a[4,], a[5,], a[6,], a[7,], a[8,], a[9,], a[10,], a[11,], a[12,], a[13,], a[14,], a[15,], a[16,], a[17,], a[18,], a[19,], a[20,], a[21,], a[22,])
timeseries=ts(as.numeric(all), frequency=12, start=1990)
arimabestfit = forecast::auto.arima(timeseries)
title("Iroquois County", xlab="Date", ylab="Unemployment Rate")
legend(1991,12,c("unadjusted", "adjusted"), col=c("grey", "red"), cex=0.8, lty=1)
plot((timeseries - arimabestfit$residuals), col="red", ylim=c(0,12))
lines(timeseries, col="grey")
4

3 回答 3

6

劳工统计局使用美国人口普查局的 X12 算法对数据进行季节性调整

有一个 R 包 (x12) 实现了这个功能

美国人口普查局:

http://www.census.gov/srd/www/x12a/

x12 包 r:

http://cran.r-project.org/web/packages/x12/x12.pdf

于 2013-01-29T22:47:45.137 回答
4

分解季度和月度数据的最流行方法之一是 X-12-ARIMA,它起源于美国人口普查局开发的方法。它现在被世界各地的局和政府机构广泛使用。该方法的早期版本包括 X-11 和 X-11-ARIMA。X-13-ARIMA 方法目前是最现代的标准,将 X-12-ARIMA 与 TRAMO/SEATS 相结合。TRAMO/SEATS 代表基于 Victor Gomez 和 Agustin Maravall(西班牙银行)开发的季节性调整方法的 ARIMA 模型。您可以在此处找到有关季节性调整的简短介绍:

https://economictheoryblog.com/2017/05/02/seasonal-adjustment/

存在一个称为季节性的可靠 R 包,它有助于 R 中的季节性调整。R 包为美国人口普查局提供的 Fortran 库提供了一个易于使用的接口。以下链接提供了有关如何在 R 中进行季节性调整的简短教程:

https://economictheoryblog.com/2017/05/16/seasonal-adjustment-in-r/

于 2017-06-03T07:43:51.790 回答
1

我知道你想对你的时间序列进行淡化。我使用来自http://research.stlouisfed.org/fred2/series/ILIROQ5URN/downloaddata?cid=27976的数据进行演示。

unemploy<-read.table("ILIROQ5URN.txt",header=T,skip=11)
unemploy<-ts(unemploy$VALUE,frequency=12,start(1990,1))

plot(deseason<-stl(unemploy,s.window="periodic"))

plot(unemploy)
lines(deseason$time.series[,2],col="red")

这对你有帮助吗?

于 2012-07-11T14:07:05.547 回答