4

次のコードを使用して、R で時系列をプロットおよび分解できます。

# Monthly Airline Passenger Numbers 1949-1960
data(AirPassengers)
data = data.frame(AirPassengers)
data

#Transform to time series
ts.data1 = ts(data=as.vector(t(data['AirPassengers'])), start = c(1949), end = c(1960), frequency=12)
#Plot seasonality, trend

plot(stl(ts.data1, "periodic"))
plot(ts.data1)

decomposed <- stl(ts.data1, s.window="periodic")
seasonal <- decomposed$time.series[,1]
trend   <- decomposed$time.series[,2]
remainder <- decomposed$time.series[,3]

#Show seasonal effect
seasonal

ここで私の質問があります: をdeseasonalizeするには、単純に

# deseasonalize time sereis
ts.data1 <- ts.data1 - seasonal
ts.data1
plot(ts.data1)

季節値を差し引くには?

別のデータセットでは、季節値を差し引くと負の値になることに気付きました。因数とかを使った方がいいと思ったのはそのためです。

注: 「deseasonalize」パッケージは使用したくありません。

4

1 に答える 1

7

はい、うまくいきます。

または、パッケージseasadj内の関数を使用してください。forecastただし、このAirPassengersデータでは、図 1 に示すような加法的分解stlは適切な選択ではありません。最初にログを取得すると、妥当な結果が得られます。

library(forecast)
library(ggplot2)

decomp <- stl(log(AirPassengers), s.window="periodic")
ap.sa <- exp(seasadj(decomp))
autoplot(cbind(AirPassengers, SeasonallyAdjusted=ap.sa)) +
  xlab("Year") + ylab("Number of passengers (thousands)")

ここに画像の説明を入力

于 2016-10-28T18:30:59.400 に答える