5 ključnih tehnika koje morate znati za savladavanje analize vremenskih serija
Podaci o vremenskim serijama su svuda - cene akcija, vremenski podaci, web sajt saobraćaj i vaš dnevni broj koraka.
Uvod
Podaci o vremenskim serijama su svuda - cene akcija, vremenski podaci, web sajt saobraćaj i vaš dnevni broj koraka. Ipak, smisao ovih tačaka podataka tokom vremena i predviđanje budućih trendova može biti izazov. Ovladavanje analizom vremenskih serija je od ključnog značaja za naučnike podataka, poslovne analitičare i istraživače koji žele da naprave tačne prognoze i steknu značajne uvide.
U ovom postu ćemo istražiti pet osnovnih tehnika koje će vam pomoći da steknete solidno razumevanje analize vremenskih serija. Do kraja, znaćete kako da razbijete i analizirate svoje podatke kao profesionalac i izgradite bolje prediktivne modele koristeći Pithon.
Razumevanje osnova analize vremenskih serija
Šta je vremenska serija?
Vremenska serija je niz tačaka podataka prikupljenih ili zabeleženih u uzastopnim vremenskim tačkama. Za razliku od drugih tipova podataka, vremenske serije imaju prirodno vremensko uređenje koje treba uzeti u obzir tokom analize. Na primer, dnevne cene zatvaranja akcija su klasičan primer podataka vremenskih serija.
Zašto je analiza vremenskih serija važna?
Analiza vremenskih serija pomaže u otkrivanju skrivenih obrazaca i predviđanju budućih trendova. Aplikacije se kreću od:
- Predviđanje cena akcija ili finansijskih trendova.
- Predviđanje vremenskih obrazaca ili sezonskih pojava.
- Procena potražnje za proizvodima u e-trgovini ili maloprodaji.
Da bismo savladali analizu vremenskih serija, ispitajmo pet ključnih tehnika za efikasnu analizu podataka.
Tehnika 1: Dekompozicija vremenskih serija
Dekompozicija vremenskih serija se odnosi na razbijanje vremenskih serija na tri glavne komponente:
- Trend: Opšti pravac u kojem se podaci kreću tokom vremena.
- Sezonalnost: Ponavljanje kratkoročnih ciklusa u podacima (npr. Nedeljno ili mesečno).
- Rezidualni (buka): Preostala varijacija koja se ne može pripisati trendu ili sezonalnosti.
Aditiv vs. Multiplikativna dekompozicija
- aditiv: i (t) = trend (t) + sezonalnost (t) + ostatak (t)
- Multiplikativno: Y(t) = Trend(t) * Sezonalnost(t) * Rezidual(t)
Izbor zavisi od prirode vaših podataka. Koristite aditiv kada je sezonska varijacija konstantna tokom vremena; Koristite multiplikativ kada se varijacija menja proporcionalno trendu.
Primer u Pithon
Uvoz pande kao PD
Uvoz matplotlib.pyplot kao plt
Od statsmodels.tsa.sezonski uvoz seasonal_decompose
# Učitajte skup podataka vremenskih serija
data = pd.read_csv('sales_data.csv', index_col='Datum', parse_dates=Istina)
# Razgradi vremensku seriju
rezultat = seasonal_decompose(podaci ['Prodaja'], model = 'aditiv', period = KSNUMKS)
# Plot dekomponovane komponente
Rezultat.plot()
plt.show()
Tehnika 2: Izglađivanje i filtriranje
Izglađivanje pomaže da se ukloni buka iz vremenske serije, čineći trendove i druge komponente vidljivijim. Neke popularne metode uključuju:
- Jednostavna pokretni prosek (SMA): Prosečne podatke preko fiksnog prozora za izglađivanje kratkoročnih fluktuacija.
- Eksponencijalni pokretni prosek (EMA): Slično SMA, ali daje veću težinu nedavnim zapažanjima.
- Eksponencijalno izglađivanje (Holt-Vinters): Računi za trend i sezonalnost.
Primer u Pithonu: Jednostavan pokretni prosek
# Izračunajte pokretni prosek (prozor = 12 meseci)
data['SMA'] = data['Prodaja'].rolling(vindov=12).mean()
# Zemljište original vs. izglađena serija
data[['Prodaja', 'SMA']].plot()
plt.show()
Ovaj kod izračunava 12-mesečni prosjek za izglađivanje originalnih podataka o prodaji. Ovo vam može pomoći da lakše uočite dugoročne trendove.
Tehnika 3: Autoregresivni integrisani modeli pokretnog proseka (ARIMA)
ARIMA model je jedan od najčešće korišćenih modela za predviđanje vremenskih serija. Tri parametra ga definišu:
- AR (Autoregresivno): Odnos između posmatranja i njegovih prethodnih zapažanja.
- Ja (Integrisani): Razlikovanje podataka da bi bilo stacionarno.
- MA (Moving Average): Uključivanje zavisnosti između posmatranja i njegovih preostalih grešaka.
Ključ je u odabiru prave kombinacije parametara (p, d, k) za tačno predviđanje budućih tačaka u seriji.
Primer u Pithonu: Izgradnja ARIMA modela
od statsmodels.tsa.arima.model uvoz ARIMA
# Uklopite ARIMA model (p = 1, d = 1, k = 1 kao primer)
model = ARIMA (podaci ['Prodaja'], order = (1, 1, 1))
model_fit = model.fit()
# Rezime modela
print(model_fit.summary())
# Predviđanje narednih 12 perioda
prognoza = model_fit.forecast (koraci = 12)
štampa(prognoza)
Ovaj primer odgovara ARIMA modelu podacima o prodaji i predviđa narednih 12 perioda. Fino podešavanje parametara p, d i k je od ključnog značaja za bolje rezultate.
Tehnika 4: Stacionarnost i razlikovanje
Šta je Stacionarnost?
Stacionarna vremenska serija ima konstantnu sredinu, varijansu i autokovarijancu tokom vremena. Stacionarnost je ključna za mnoge modele vremenskih serija kao što je ARIMA.
Testiranje stacionarnosti
Dva standardna testa su:
- Augmented Dickei-Fuller (ADF) test: Testira da li je prisutan koren jedinice, što ukazuje na nestacionarnost.
- Kwiatkovski-Phillips-Schmidt-Shin (KPSS) Test: Testira nultu hipotezu stacionarnosti.
Razlikovanje za postizanje stacionarnosti
Diferencijacija pomaže stabilizaciji srednje vrednosti vremenske serije oduzimanjem prethodnog zapažanja od trenutnog.
Primer u Pithonu: Differencing i ADF test
from statsmodels.tsa.stattools import adfuller
# Perform first-order differencing
data['Differenced'] = data['Sales'].diff()
# ADF Test
result = adfuller(data['Differenced'].dropna())
print(f'ADF Statistic: {result[0]}')
print(f'p-value: {result[1]}')
# Plot the differenced series
data['Differenced'].plot()
plt.show()
Podaci o prodaji se razlikuju u ovom primeru, a ADF test se koristi za proveru stacionarnosti.
Tehnika 5: Sezonska razgradnja i sezonska ARIMA (SARIMA)
STL razlaganje
STL (Sezonska i trendovska dekompozicija koristeći Les) je moćan alat za razdvajanje sezonskih, trendovskih i rezidualnih komponenti.
SARIMA Model
Kada vaši podaci pokazuju jasnu sezonalnost, proširenje ARIMA - SARIMA - je prikladnije. Ima dodatne sezonske parametre za rukovanje ponavljajućim obrascima.
Primer u Pithonu: SARIMA model
from statsmodels.tsa.statespace.sarimax import SARIMAX
# Fit model SARIMA (sezonski red naveden kao (KSNUMKS, KSNUMKS, KSNUMKS))
model = SARIMAX(data['Prodaja'], order =(1, 1, 1), seasonal_order=(1, 1, 1, 12))
model_fit = model.fit()
# Rezime modela
print(model_fit.summary())
# Predviđanje narednih 12 perioda
prognoza = model_fit.forecast (koraci = KSNUMKS)
štampa(prognoza)
Ovaj primer odgovara SARIMA model podacima, navodeći sezonski obrazac od 12 meseci.
Praktični savet
Iterativno poboljšajte svoje modele i potvrdite prognoze sa novim podacima za optimalnu tačnost.
Alati i softver za analizu vremenskih serija
- Pithon biblioteke:
- Pande za manipulaciju podacima.
- statsmodels i Prophet za modeliranje.
- Scikit-Learn za aplikacije za mašinsko učenje.
- R paketi:
- prognoza i tseries.
- Ostali alati:
- Ekcel za jednostavnu analizu.
- Tableau za vizuelizaciju podataka.
Zakljuиak
Razumevanjem i primenom ovih pet tehnika - dekompozicija, izglađivanje, ARIMA modeliranje, stacionarnost i sezonska dekompozicija - bićete na dobrom putu da savladate analizu vremenskih serija.