Zestaw danych plastiki składa się z miesięcznej
sprzedaży (w tysiącach) produktu A dla producenta tworzyw sztucznych
przez pięć lat.
- Wykreśl szereg czasowy sprzedaży produktu A.
# wykres:
- Czy możesz zidentyfikować sezonowe wahania i/lub trend-cykl?
- Oblicz i wykreśl dane dostosowane sezonowo.
Rozważmy miesięczne dane dotyczące sprzedaży i reklamy dla firmy
produkującej części samochodowe (zestaw danych advert).
- Wykreśl dane używając
autoplot. Dlaczego warto ustawićfacets=TRUE?
- Ponieważ dane są w różnych skalach, nie powinny być wykreślane w tym samym panelu. Ustawienie
facets=TRUEumieszcza je w różnych panelach.
- Dopasuj standardowy model regresji \(y_t = a + b*x_t + \a_t\), gdzie \(y_t\) oznacza sprzedaż, a \(x_t\) reklamę, używając funkcji
tslm().
- Wykazać, że reszty mają znaczną autokorelację.
W ćwiczeniu wykorzystano dane cangas (miesięczna
produkcja gazu w Kanadzie w miliardach metrów sześciennych, styczeń 1960
- luty 2005).
- Wykreśl dane używając
autoplot,ggsubseriesplotiggseasonplot, aby spojrzeć na efekt zmieniającej się sezonowości w czasie. Jak myślisz, co powoduje, że zmienia się ona tak bardzo?
- Wykonaj dekompozycję STL danych. Musisz wybrać
s.window, aby wychwycić zmienny kształt składnika sezonowego.
- Porównaj wyniki z tymi uzyskanymi przy użyciu SEATS i X11. Czym się różnią?
Pobieramy dane z Quandl i jednocześnie je dekomponujemy miesięcznie oraz wykreślamy:
plot(stl(Quandl("WIKI/GOOG",type="ts",collapse="monthly")[,11],s.window="per"))
NSE <- Quandl("NSE/OIL", type="xts")
candleChart(NSE)
getSymbols("P9O.F", src='yahoo', from = "2019-01-01", to = "2023-03-29")
## [1] "P9O.F"
tail(P9O.F)
## P9O.F.Open P9O.F.High P9O.F.Low P9O.F.Close P9O.F.Volume
## 2023-03-21 5.664 5.664 5.664 5.664 0
## 2023-03-22 5.928 5.928 5.928 5.928 0
## 2023-03-23 5.828 5.828 5.810 5.810 173
## 2023-03-24 5.792 5.792 5.686 5.686 800
## 2023-03-27 5.668 5.668 5.668 5.668 0
## 2023-03-28 5.748 5.748 5.748 5.748 0
## P9O.F.Adjusted
## 2023-03-21 5.664
## 2023-03-22 5.928
## 2023-03-23 5.810
## 2023-03-24 5.686
## 2023-03-27 5.668
## 2023-03-28 5.748
plot(P9O.F$P9O.F.Close)
p=100
plot(rollmean(P9O.F$P9O.F.Close,p),main='Prosta vs Trójkątna Średnia Ruchoma')
lines(rollmean(P9O.F$P9O.F.Close,10),col='red')
lines(rollmean(rollmean(P9O.F$P9O.F.Close,5),5),col='blue')
Aby tworzyć prognozy przy użyciu prostego wygładzania wykładniczego w R, możemy dopasować prosty model predykcyjny wygładzania wykładniczego przy użyciu funkcji “HoltWinters()” w R. Aby użyć funkcji HoltWinters() do prostego wygładzania wykładniczego, musimy ustawić parametry beta=FALSE i gamma=FALSE w funkcji HoltWinters() (parametry beta i gamma są używane do wygładzania wykładniczego Holta, lub wygładzania wykładniczego Holta-Wintersa, jak opisano poniżej).
Funkcja HoltWinters() zwraca obiekt typu lista, która zawiera kilka nazwanych elementów.
wynik <- HoltWinters(P9O.F$P9O.F.Close, beta=FALSE, gamma=FALSE)
wynik
## Holt-Winters exponential smoothing without trend and without seasonal component.
##
## Call:
## HoltWinters(x = P9O.F$P9O.F.Close, beta = FALSE, gamma = FALSE)
##
## Smoothing parameters:
## alpha: 0.80824
## beta : FALSE
## gamma: FALSE
##
## Coefficients:
## [,1]
## a 5.7343
Wynik działania funkcji HoltWinters() mówi nam, że szacowana wartość parametru alfa wynosi około 0.8. Jest to wartość bardzo bliska 1, co mówi nam, że prognozy są oparte zarówno na ostatnich, jak i mniej aktualnych obserwacjach.
Możemy wykreślić oryginalny szereg czasowy w stosunku do prognoz wpisując:
plot(wynik)
Wykres pokazuje oryginalny szereg czasowy w kolorze czarnym, a prognozy jako czerwoną linię. Szereg czasowy prognoz jest znacznie gładszy niż szereg czasowy oryginalnych danych.
Jako miarę dokładności prognoz możemy obliczyć sumę kwadratów błędów dla błędów prognozy w próbie, czyli błędów prognozy dla okresu czasu objętego naszym oryginalnym szeregiem czasowym.
Suma błędów kwadratowych jest przechowywana w nazwanym elemencie zmiennej listowej “wynik” o nazwie “SSE”, więc możemy uzyskać jej wartość wpisując:
wynik$SSE
## [1] 44.84
Prognozy dla kolejnych punktów czasowych możemy wykonać za pomocą funkcji “forecast.HoltWinters()” z pakietu R “forecast”.
wynik2 <- forecast(wynik, h=20)
plot(wynik2)
Na podstawie: https://a-little-book-of-r-for-time-series.readthedocs.io/en/latest/src/timeseries.html