Einführung
Traits, die sich über Tage oder Monate wiederholen, nennt man Saisonalität. Zeitfolgen. Saisonale Veränderungen, Feste und kulturelle Ereignisse führen oft zu diesen Abweichungen. Das Verständnis dieser Muster ist wichtig, da sie die Unternehmensergebnisse und die Entscheidungsfindung stark beeinflussen. Durch die Analyse dieser Traits können Unternehmen das ganze Jahr über erfolgreicher planen, prognostizieren und sich an vorhersehbare Veränderungen anpassen.
Überblick
- Erfahren Sie, wie Sie Saisonalität in Zeitreihendaten erkennen.
- Entdecken Sie verschiedene Techniken zur Saisonalitätsanalyse.
- Erlangen Sie ein Verständnis für die Visualisierung von Saisonalitätsmustern.
- Entdecken Sie die Bedeutung der Saisonalität bei der Zeitreihenprognose.
- Erfahren Sie mehr über Ansätze zur Saisonalitätsanalyse.
Saisonalität in Zeitreihendaten erkennen
Analysten verwenden eine Reihe von Techniken, um Saisonalität in Zeitreihendaten zu erkennen. Dazu gehören statistische Analyse Techniken wie die Analyse der Autokorrelationsfunktion (ACF), Diagramme saisonaler Unterreihen und Visualisierungen zur effektiven Erkennung von Mustern.
Arten von Techniken
Analysten verwenden viele Methoden, wenn sie die Saisonalität in Zeitreihendaten analysieren. Diese Ansätze helfen dabei, die Daten in Saison-, Pattern- und Restkomponenten zu unterteilen. Dazu gehören Zerlegungstechniken, Autokorrelationsanalyse und saisonale Zeitreihenzerlegung (STL).
Einige Methoden zur Bestimmung der Saisonalität umfassen die Überprüfung auf saisonale Schwankungen, die Identifizierung periodischer Muster in den Daten und die Feststellung, ob wiederkehrende Zyklen vorhanden sind. Diese Methoden können den Grad und die Bedeutung der Saisonalität in den Zeitreihendaten quantifizieren.
Visualisierung von Saisonalitätsmustern
Visualisierungen sind für das Verständnis saisonaler Muster in Zeitreihendaten unerlässlich. Analysten können die Daten effektiver darstellen und verstehen, indem sie saisonale Unterreihen, Zerlegungsdiagramme und Zeitreihendiagramme mit hervorgehobenen saisonalen Mustern darstellen.
Bedeutung der Saisonalität bei der Zeitreihenprognose
Saisonalität ist für die Vorhersage von Traits im Zeitverlauf von Bedeutung, da sie viele Unternehmen betrifft, wie zum Beispiel Bankwesen, GesundheitspflegeUnd Einzelhandel. Darüber hinaus wird die Genauigkeit dieser Vorhersagen erheblich verbessert.
- Auswirkungen der Saisonalität auf die Prognosegenauigkeit: Das Ignorieren der Saisonalität kann zu Abweichungen in den Datenmustern führen und so die Prognose erschweren. Ungenaue Schätzungen können sich dann auf die Ressourcenzuweisung und Geschäftsentscheidungen auswirken.
- Saisonalität zu Prognosemodellen hinzufügen: Es besser machen Vorhersagensollten Sie die Muster der Jahreszeiten in Ihre Modelle einbeziehen. Methoden wie saisonale exponentielle Glättung, saisonale ARIMAund der Prophet
Saisonalität vs. Trendanalyse
Die Trendanalyse konzentriert sich auf langfristige Richtungsänderungen in Daten, während die Saisonalität wiederkehrende Muster über festgelegte Zeiträume beschreibt. Die Unterscheidung zwischen beiden ist für eine präzise Prognose unerlässlich, da Saisonalität und Traits in unterschiedlichen Zeitreihen unterschiedlich interagieren können. Datensätze.
Ansätze zur Saisonalitätsanalyse
Die Saisonalitätsanalyse umfasst verschiedene Techniken zum Verstehen und Extrahieren saisonaler Muster aus Zeitreihendaten. Lassen Sie uns anhand eines Beispieldatensatzes einige dieser Ansätze untersuchen.
Lassen Sie uns zunächst einen Beispieldatensatz für eine Zeitreihe laden. Wir veranschaulichen dies anhand simulierter monatlicher Verkaufsdaten.
import pandas as pd
# Pattern dataset: Simulated month-to-month gross sales information
import pandas as pd
date_range = pd.date_range(begin="2020-01-01", intervals=36, freq='M')
sales_data = pd.Collection((100, 120, 130, 110, 105, 125, 135, 145, 140, 130, 120, 110,
105, 125, 135, 145, 140, 130, 120, 110, 105, 125, 135, 145,
140, 130, 120, 110, 105, 125, 135, 145, 140, 130, 120, 110),
index=date_range, title="Gross sales")
Techniken zur Saisonalitätsanalyse
Sehen wir uns nun einige Techniken zur Saisonalitätsanalyse an:
Zeitreihenzerlegung:
Durch die Zeitreihenzerlegung werden die Daten in ihre Pattern-, Saison- und Restkomponenten unterteilt, was uns dabei hilft, die zugrunde liegenden Muster zu verstehen.
from statsmodels.tsa.seasonal import seasonal_decompose
import matplotlib.pyplot as plt
# Carry out time collection decomposition
outcome = seasonal_decompose(sales_data, mannequin="additive")
outcome.plot()
plt.present()
Analyse der Autokorrelationsfunktion (ACF)
Die ACF-Analyse misst die Korrelation zwischen einer Zeitreihe und ihren verzögerten Werten. Sie hilft dabei, saisonale Muster zu erkennen.
from statsmodels.graphics.tsaplots import plot_acf
# Plot autocorrelation operate
from statsmodels.graphics.tsaplots import plot_acf
plot_acf(sales_data, lags=12)
plt.present()
Handlung der saisonalen Unterserie
Die Zeitreihendaten werden in einem Saisonunterreihendiagramm entsprechend der Saisonperiode in Untergruppen aufgeteilt, wobei jede Untergruppe unabhängig dargestellt wird.
import seaborn as sns
# Plot seasonal subseries
import seaborn as sns
sns.boxplot(x=sales_data.index.month, y=sales_data.values)
plt.xlabel('Month')
plt.ylabel('Gross sales')
plt.title('Seasonal Subseries Plot')
plt.present()
Saisonale Zerlegung von Zeitreihen (STL)
Mithilfe einer lokal gewichteten Regression zerlegt die STL-Zerlegung die Zeitreihe in ihre Pattern-, Saison- und Residuenkomponenten.
# Carry out seasonal decomposition utilizing STL
result_stl = seasonal_decompose(sales_data, mannequin="stl")
result_stl.plot()
plt.present()
Saisonalitätsmodellierung und -prognose
Wir verwenden spezielle Modelle, die Änderungen im Laufe der Zeit und sich wiederholende Muster verarbeiten, um saisonale Änderungen in Daten vorherzusagen. Zwei Modelle, die wir häufig verwenden, sind Seasonal ARIMA (SARIMA) und Seasonal Exponential Smoothing.
Saisonale ARIMA (SARIMA)-Modelle
AutoRegressive Built-in Shifting Common, kurz ARIMA, ist eine beliebte Methode zur Vorhersage von Zeitreihendaten. Dabei wird eine als Differenzierung bekannte Technik verwendet, um mit sich verändernden Mustern umzugehen. ARIMA kombiniert zwei Modelle: Shifting Common (das historische Prognosefehler nutzt) und AutoRegressive (das zukünftige Werte auf Grundlage früherer Werte vorhersagt). Es enthält drei Einstellungen: d (Grad der Differenzierung), q (Verzögerungen des gleitenden Durchschnittsmodells) und p (Verzögerungen des autoregressiven Modells).
SARIMA erweitert ARIMA um saisonale Komponenten und ist daher besonders effektiv für Daten mit saisonalen Mustern. Es enthält zusätzliche saisonale Terme P, D und Q, die jeweils die saisonale autoregressive Ordnung, den saisonalen Differenzierungsgrad und die saisonale gleitende Durchschnittsordnung darstellen, zusammen mit Mdie Anzahl der Perioden in jeder Saison.
Generieren und Anpassen eines SARIMA-Modells
Hier ist ein Python-Codeausschnitt, der die SARIMAX-Klasse aus der Statsmodels-Bibliothek verwendet, um ein SARIMA-Modell anzupassen:
import pandas as pd
import numpy as np
from statsmodels.tsa.statespace.sarimax import SARIMAX
# Generate month-to-month gross sales information
np.random.seed(0)
date_range = pd.date_range(begin="2020-01-01", intervals=120, freq='M')
sales_data = pd.Collection(np.random.randint(100, 200, dimension=len(date_range)), index=date_range, title="Gross sales")
# Match a SARIMA mannequin
model_sarima = SARIMAX(sales_data, order=(1, 1, 1), seasonal_order=(1, 1, 1, 12))
result_sarima = model_sarima.match()
print(result_sarima.abstract())
Saisonale exponentielle Glättung
Durch die Berücksichtigung sowohl des Traits als auch der Saisonalität stellt die saisonale exponentielle Glättung eine Verbesserung gegenüber der standardmäßigen exponentiellen Glättung dar, wenn die Daten einen saisonalen Pattern aufweisen und die Prognose davon profitiert.
So verwenden Sie das statsmodels-Paket in Python, um diese Methode zu erstellen:
from statsmodels.tsa.holtwinters import ExponentialSmoothing
# Match seasonal exponential smoothing mannequin
model_exp_smooth = ExponentialSmoothing(sales_data, seasonal_periods=12, development='add', seasonal="add")
result_exp_smooth = model_exp_smooth.match()
print(result_exp_smooth.abstract())
Saisonalität in Zeitreihendaten auswerten
Um saisonale Muster in Zeitreihendaten zu verstehen, werden verschiedene Messungen verwendet, darunter:
- Saisonalitätsindex
- Variationskoeffizient
- Wie viele der Änderungen sind saisonbedingt?
Diese Messungen helfen uns, vorhersehbare und konsistente saisonale Muster zu erkennen, was für die Erstellung genauer Vorhersagen wichtig ist.
Saisonalitätsmetriken und Bewertungskriterien
import numpy as np
import pandas as pd
# Instance information
np.random.seed(0)
date_range = pd.date_range(begin="2020-01-01", intervals=120, freq='M')
sales_data = pd.Collection(np.random.randint(100, 200, dimension=len(date_range)), index=date_range, title="Gross sales")
# Calculating errors
mean_sales = sales_data.imply()
seasonal_estimates = np.full_like(sales_data, mean_sales) # Placeholder for precise seasonal estimates
residuals = sales_data - seasonal_estimates
# Sum of Squared Errors for the seasonal part
sum_of_squared_errors_seasonal = np.sum(residuals**2)
# Whole errors may equally be outlined; right here utilizing the identical for example
sum_of_squared_errors_total = sum_of_squared_errors_seasonal # This needs to be based mostly on a special calculation
# Metrics calculation
max_value = sales_data.max()
min_value = sales_data.min()
standard_deviation = sales_data.std()
mean_value = sales_data.imply()
seasonality_index = (max_value - min_value) / (max_value + min_value)
coefficient_of_variation = standard_deviation / mean_value
percentage_variation_explained = (sum_of_squared_errors_seasonal / sum_of_squared_errors_total) * 100
# Setting thresholds
thresholds = {
'seasonality_index': 0.5,
'coefficient_of_variation': 0.1,
'percentage_variation_explained': 70
}
# Evaluating seasonality
outcomes = {
"Robust seasonality detected": seasonality_index > thresholds('seasonality_index'),
"Low variability, indicating vital seasonality": coefficient_of_variation < thresholds('coefficient_of_variation'),
"Seasonality explains a big portion of the variation within the information": percentage_variation_explained > thresholds('percentage_variation_explained')
}
Ergebnisse
Saisonalitätstests und Validierung
- Saisonalitätstests: Saisonalitätstests sind wichtig, um zu überprüfen, ob in Ihren Zeitreihendaten saisonale Traits vorhanden sind. Dies kann die Prognosequalität Ihres Modells erheblich beeinflussen. Statistische Assessments bestätigen die Stationarität der Reihe und etwaige Traits oder Saisonalität.
- Validierung der Prognosegenauigkeit: Es ist wichtig, die Genauigkeit Ihrer Saisonvorhersage zu bestätigen. Mithilfe verschiedener Maßnahmen müssen Sie Prognosewerte mit tatsächlichen Beobachtungen vergleichen, um die Leistung des Modells zu messen und Bereiche zu ermitteln, die möglicherweise verbessert werden müssen.
from statsmodels.tsa.stattools import adfuller, kpss
# Carry out ADF check
adf_result = adfuller(sales_data)
adf_statistic, adf_p_value = adf_result(0), adf_result(1)
print(f"ADF Statistic: {adf_statistic}, p-value: {adf_p_value}")
# Carry out KPSS check
kpss_result = kpss(sales_data, nlags="auto") # Robotically determines the variety of lags
kpss_statistic, kpss_p_value = kpss_result(0), kpss_result(1)
print(f"KPSS Statistic: {kpss_statistic}, p-value: {kpss_p_value}")
Validierung der Prognosegenauigkeit
Die Entwicklung des Modells selbst ist wichtiger als die Überprüfung der Genauigkeit Ihrer Saisonprognosen. Sie erfordert die Verwendung einer Vielzahl von Maßnahmen, um die vorhergesagten Werte mit den tatsächlichen Beobachtungen zu vergleichen. Dieses Verfahren hilft bei der Messung der Wirksamkeit des Modells und identifiziert alle Bereiche, die verbessert werden müssen.
- MAE: Der mittlere absolute Fehler (MAE) zeigt den durchschnittlichen Fehler zwischen unseren Vorhersagen und den tatsächlichen Ergebnissen.
- RMSE: Der quadratische Mittelwertfehler (RMSE) gibt die Größe des durchschnittlichen Prognosefehlers an.
- Prozentuale Prognosegenauigkeit: Diese Abbildung veranschaulicht die Genauigkeit, mit der unsere Annahmen mit den tatsächlichen Ereignissen übereinstimmten.
Code zur Prognosevalidierung:
import numpy as np
import pandas as pd
# Instance setup
np.random.seed(0)
date_range = pd.date_range(begin="2020-01-01", intervals=120, freq='M')
sales_data = pd.Collection(np.random.randint(100, 200, dimension=len(date_range)), index=date_range, title="Gross sales")
# Let's assume the final 12 information factors are our precise values
actual_values = sales_data(-12:)
# For simplicity, let’s assume forecasted values are barely diversified precise values
forecasted_values = actual_values * np.random.regular(1.0, 0.05, dimension=len(actual_values))
# Calculate forecast accuracy metrics
mae = mean_absolute_error(actual_values, forecasted_values)
rmse = mean_squared_error(actual_values, forecasted_values, squared=False)
forecast_accuracy_percentage = 100 * (1 - (np.abs(actual_values - forecasted_values) / actual_values)).imply()
# Show the outcomes
print(f"Imply Absolute Error (MAE): {mae}")
print(f"Root Imply Squared Error (RMSE): {rmse}")
print(f"Forecast Accuracy Share: {forecast_accuracy_percentage}%")
Praktische Anwendungen der Saisonalitätsanalyse in Zeitreihen
Die Saisonalitätsanalyse ist ein spezielles Instrument, das Geschäften und Unternehmen hilft, gute Entscheidungen zu treffen. Sie zeigt ihnen, wie die Umsätze im Jahresverlauf steigen und fallen. Auf diese Weise können Geschäfte planen, wann sie Schlussverkäufe durchführen oder wie viele Waren sie im Laden halten. Wenn ein Geschäft beispielsweise weiß, dass im Februar weniger Leute Dinge kaufen, kann es einen großen Ausverkauf veranstalten, um die übrig gebliebenen Waren zu verkaufen. Dies hilft ihnen, nichts zu verschwenden und weiterhin Geld zu verdienen. Unternehmen können auch von der Saisonalitätsanalyse profitieren, indem sie wissen, wie viel Inventar sie vorrätig halten müssen, um zu vermeiden, dass ihnen das Inventar ausgeht und Umsatzverluste entstehen. Im Finanzbereich nutzen Aktieninvestoren die Saisonalität, um vorherzusagen, ob die Aktienkurse steigen oder fallen werden, was ihnen ermöglicht, fundiertere Entscheidungen darüber zu treffen, was sie kaufen und verkaufen.
Abschluss
Das Verständnis der Saisonalität hilft Unternehmen und Investoren, das ganze Jahr über kluge Entscheidungen zu treffen. Wenn Geschäfte wissen, wann die Umsätze normalerweise steigen oder fallen, können sie ihre Verkäufe besser planen und ihre Lagerbestände klüger verwalten, wodurch sie Geld sparen und mehr verkaufen. Das Verständnis dieser Traits kann Investoren dabei helfen, fundiertere Entscheidungen über den Kauf oder Verkauf von Aktien zu treffen. Unternehmen und Investoren können enorm erfolgreich sein, wenn sie die Saisonalität in ihre Planungen und Prognosen einbeziehen.
Weitere Informationen zur Zeitreihenanalyse finden Sie unter Blackbelt Plus-Programm von Analytics Vidhya.
Häufig gestellte Fragen
A. Ein Beispiel für Saisonalität in Zeitreihen sind erhöhte Einzelhandelsumsätze während der Weihnachtszeit. Viele Geschäfte verzeichnen beispielsweise jedes Jahr im Dezember aufgrund der Weihnachtseinkäufe einen deutlichen Umsatzanstieg, dem im Januar ein Rückgang folgt. Dieses Muster wiederholt sich jedes Jahr und veranschaulicht einen saisonalen Effekt, der von der Jahreszeit beeinflusst wird und auf der Grundlage historischer Daten vorhergesagt und geplant werden kann.
A. Die drei Arten der Saisonalität sind additive Saisonalität, multiplikative Saisonalität und gemischte Saisonalität.
A. Saisonalität bezieht sich auf vorhersehbare und wiederkehrende Muster oder Schwankungen in einer Zeitreihe, die aufgrund saisonaler Faktoren in regelmäßigen Abständen auftreten. Verschiedene Faktoren wie Wetter, Feiertage oder kulturelle Ereignisse beeinflussen diese Muster. Sie treten über einen festen Zeitraum wie Tage, Wochen, Monate oder Quartale auf und beeinflussen das Verhalten oder Niveau der Daten zu bestimmten Zeitpunkten in jedem Zyklus.
A. Der Unterschied zwischen Zyklus und Saisonalität liegt in ihrer Natur und Regelmäßigkeit. Saisonalität ist ein konsistentes, vorhersehbares Muster, das sich in festen Abständen (z. B. monatlich oder jährlich) wiederholt und von externen Faktoren wie Wetter oder Feiertagen bestimmt wird. Im Gegensatz dazu bezieht sich der Zyklus auf Schwankungen, die in unregelmäßigen Abständen auftreten und häufig von wirtschaftlichen Bedingungen oder langfristigen Traits beeinflusst werden und keinen festen Zeitraum oder kein vorhersehbares Muster aufweisen.