Skip to content

Instantly share code, notes, and snippets.

@konabuta
Last active April 30, 2020 12:45
Show Gist options
  • Save konabuta/bd2c40d27efd2ad4655b2c232af91e46 to your computer and use it in GitHub Desktop.
Save konabuta/bd2c40d27efd2ad4655b2c232af91e46 to your computer and use it in GitHub Desktop.
---
title: "AirPassengers"
output: html_notebook
---
```{r}
AirPassengers %>% as_tsibble %>% autoplot
```
## 過去データの平均値
```{r}
AirPassengers %>% as_tsibble %>% model(MEAN(value)) %>% forecast(h="1 years") -> mean_forecast
AirPassengers %>% as_tsibble %>% model(MEAN(value)) %>% fitted -> mean_fitted
ggplot() +
geom_line(data=as_tsibble(AirPassengers),aes(x=index,y=value),color="black") +
geom_line(data=mean_fitted,aes(x=index,y=.fitted),color="blue") +
geom_line(data=mean_forecast,aes(x=index,y=value),color="red")
```
## 過去データの最終データ点
```{r}
AirPassengers %>% as_tsibble %>% model(RW(value)) %>% forecast(h="1 years") -> last_forecast
AirPassengers %>% as_tsibble %>% model(RW(value)) %>% fitted -> last_fitted
ggplot() +
geom_line(data=as_tsibble(AirPassengers),aes(x=index,y=value),color="black") +
geom_line(data=last_fitted,aes(x=index,y=.fitted),color="blue") +
geom_line(data=last_forecast,aes(x=index,y=value),color="red")
```
## 直近N点のデータの平均値
```{r}
#直近12点
AirPassengers %>% as_tsibble %>% filter(year(index) > 1959) %>% model(MEAN(value)) %>% forecast(h="1 years") -> ndata_forecast
AirPassengers %>% as_tsibble %>% filter(year(index) > 1958 & 1960 > year(index)) %>% model(MEAN(value)) %>% forecast(h="1 years") -> ndata_forecast1
AirPassengers %>% as_tsibble %>% filter(year(index) > 1957 & 1959 > year(index)) %>% model(MEAN(value)) %>% forecast(h="1 years") -> ndata_forecast2
ggplot() +
geom_line(data=as_tsibble(AirPassengers),aes(x=index,y=value),color="black") +
geom_line(data=ndata_forecast1,aes(x=index,y=value),color="blue") +
geom_line(data=ndata_forecast2,aes(x=index,y=value),color="blue") +
geom_line(data=ndata_forecast,aes(x=index,y=value),color="red")
```
```{r}
AirPassengers %>% as_tsibble %>% model(MEAN(value ~ window(12))) %>% forecast(h="1 years") -> win_forecast
AirPassengers %>% as_tsibble %>% model(MEAN(value ~ window(12))) %>% fitted -> win_fitted
ggplot() +
geom_line(data=as_tsibble(AirPassengers),aes(x=index,y=value),color="black") +
geom_line(data=win_fitted,aes(x=index,y=.fitted),color="blue") +
geom_line(data=win_forecast,aes(x=index,y=value),color="red")
```
## 重み付き平均値
```{r}
AirPassengers %>% as_tsibble %>% model(ETS(value ~ error("M") + trend("N",alpha=c(0.3)) + season("N"))) %>% forecast(h="1 years") -> ses_forecast
AirPassengers %>% as_tsibble %>% model(ETS(value ~ error("M") + trend("N",alpha=c(0.3)) + season("N"))) %>% fitted -> ses_fitted
ggplot() +
geom_line(data=as_tsibble(AirPassengers),aes(x=index,y=value),color="black") +
geom_line(data=ses_fitted,aes(x=index,y=.fitted),color="blue") +
geom_line(data=ses_forecast,aes(x=index,y=value),color="red")
```
## トレンド
```{r}
AirPassengers %>% as_tsibble %>% model(ETS(value ~ error("M") + trend("M",alpha=c(0.3)) + season("N"))) %>% forecast(h="1 years") -> trend_forecast
AirPassengers %>% as_tsibble %>% model(ETS(value ~ error("M") + trend("M",alpha=c(0.3)) + season("N"))) %>% fitted -> trend_fitted
ggplot() +
geom_line(data=as_tsibble(AirPassengers),aes(x=index,y=value),color="black") +
geom_line(data=trend_fitted,aes(x=index,y=.fitted),color="blue") +
geom_line(data=trend_forecast,aes(x=index,y=value),color="red")
```
## 季節性
```{r}
AirPassengers %>% as_tsibble %>% model(ETS(value ~ error("M") + trend("N",alpha=c(0.3)) + season("M"))) %>% forecast(h="1 years") -> seson_forecast
AirPassengers %>% as_tsibble %>% model(ETS(value ~ error("M") + trend("N",alpha=c(0.3)) + season("M"))) %>% fitted -> seson_fitted
ggplot() +
geom_line(data=as_tsibble(AirPassengers),aes(x=index,y=value),color="black") +
geom_line(data=seson_fitted,aes(x=index,y=.fitted),color="blue") +
geom_line(data=seson_forecast,aes(x=index,y=value),color="red")
```
## トレンド + 季節性
```{r}
AirPassengers %>% as_tsibble %>% model(ETS(value ~ error("M") + trend("M",alpha=c(0.3)) + season("M"))) %>% forecast(h="1 years") -> ts_forecast
AirPassengers %>% as_tsibble %>% model(ETS(value ~ error("M") + trend("M",alpha=c(0.3)) + season("M"))) %>% fitted -> ts_fitted
ggplot() +
geom_line(data=as_tsibble(AirPassengers),aes(x=index,y=value),color="black") +
geom_line(data=ts_fitted,aes(x=index,y=.fitted),color="blue") +
geom_line(data=ts_forecast,aes(x=index,y=value),color="red")
```
## STL
```{r}
AirPassengers %>% as_tsibble %>% model(STL(value)) %>% components %>% autoplot
```
## 移動平均
```{r}
AirPassengers %>% as_tsibble %>% model(ARIMA(value ~ pdq(p=0,d=0,q=2)+PDQ(0,0,0))) -> model
model %>% report
```
```{r}
AirPassengers %>% as_tsibble %>% model(ARIMA(value ~ pdq(0,0,1)+PDQ(0,0,0))) %>% forecast(h="1 years") -> ma_forecast
AirPassengers %>% as_tsibble %>% model(ARIMA(value ~ pdq(0,0,1)+PDQ(0,0,0))) %>% fitted -> ma_fitted
ggplot() +
geom_line(data=as_tsibble(AirPassengers),aes(x=index,y=value),color="black") +
geom_line(data=ma_fitted,aes(x=index,y=.fitted),color="blue") +
geom_line(data=ma_forecast,aes(x=index,y=value),color="red")
```
## 自己回帰
```{r}
AirPassengers %>% as_tsibble %>% model(ARIMA(value ~ pdq(p=0:3,d=0,q=0)+PDQ(0,0,0))) %>% forecast(h="1 years") -> ar_forecast
AirPassengers %>% as_tsibble %>% model(ARIMA(value ~ pdq(p=0:3,d=0,q=0)+PDQ(0,0,0))) %>% fitted -> ar_fitted
ggplot() +
geom_line(data=as_tsibble(AirPassengers),aes(x=index,y=value),color="black") +
geom_line(data=ar_fitted,aes(x=index,y=.fitted),color="blue") +
geom_line(data=ar_forecast,aes(x=index,y=value),color="red")
```
## 自己回帰移動平均
```{r}
AirPassengers %>% as_tsibble %>% model(ARIMA(value ~ pdq(p=0:10,d=0,q=0:10)+PDQ(0,0,0))) %>% forecast(h="1 years") -> arma_forecast
AirPassengers %>% as_tsibble %>% model(ARIMA(value ~ pdq(p=0:10,d=0,q=0:10)+PDQ(0,0,0))) %>% fitted -> arma_fitted
ggplot() +
geom_line(data=as_tsibble(AirPassengers),aes(x=index,y=value),color="black") +
geom_line(data=arma_fitted,aes(x=index,y=.fitted),color="blue") +
geom_line(data=arma_forecast,aes(x=index,y=value),color="red")
```
## 自己回帰和分移動平均
```{r}
AirPassengers %>% as_tsibble %>% model(ARIMA(value ~ pdq(p=0:10,d=0:10,q=0:10)+PDQ(0,0,0))) %>% forecast(h="1 years") -> arima_forecast
AirPassengers %>% as_tsibble %>% model(ARIMA(value ~ pdq(p=0:10,d=0:10,q=0:10)+PDQ(0,0,0))) %>% fitted -> arima_fitted
ggplot() +
geom_line(data=as_tsibble(AirPassengers),aes(x=index,y=value),color="black") +
geom_line(data=arima_fitted,aes(x=index,y=.fitted),color="blue") +
geom_line(data=arima_forecast,aes(x=index,y=value),color="red")
```
## 季節性自己回帰和分移動平均
```{r}
AirPassengers %>% as_tsibble %>% model(ARIMA(value ~ pdq(p=0:10,d=0:10,q=0:10)+PDQ(P=0:2,D=0:2,Q=0:2))) %>% forecast(h="1 years") -> sarima_forecast
AirPassengers %>% as_tsibble %>% model(ARIMA(value ~ pdq(p=0:10,d=0:10,q=0:10)+PDQ(P=0:2,D=0:2,Q=0:2))) %>% fitted -> sarima_fitted
ggplot() +
geom_line(data=as_tsibble(AirPassengers),aes(x=index,y=value),color="black") +
geom_line(data=sarima_fitted,aes(x=index,y=.fitted),color="blue") +
geom_line(data=sarima_forecast,aes(x=index,y=value),color="red")
```
@konabuta
Copy link
Author

image
image
image
image
image
image
image
image
image
image
image
image
image
image
image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment