使用R中的ARIMA创建经季节性调整的数据

Kai*_*ood 4 r

我想在过去的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 
Run Code Online (Sandbox Code Playgroud)

但是当我尝试它时,它看起来并不正确(通过眼睛) - 看起来它根本没有认识到季节变化.

我想也许可能出现的模型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")
Run Code Online (Sandbox Code Playgroud)

cha*_*ler 5

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

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

美国人口普查局:

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

x12包r:

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