2023 Certification Cup Little America Competition Eine Frage Ideencode Sonnenfleckenvorhersage

a: Sonnenfleckenvorhersage

Hintergrundeinführung:

Sonnenflecken sind vorübergehende Flecken auf der Photosphäre der Sonne, die dunkler sind als die Umgebung.
Dabei handelt es sich um Bereiche mit reduzierter Oberflächentemperatur, die durch die Konzentration des magnetischen Flusses verursacht wird.
Sonnenflecken erscheinen normalerweise paarweise und haben entgegengesetzte magnetische Polaritäten.
Die Anzahl der Sonnenflecken ändert sich mit dem etwa 11-jährigen Sonnenaktivitätszyklus.
Sonnenflecken stehen im Zusammenhang mit anderen Sonnenaktivitäten und fallen mit den sich ändernden Zyklen des Sonnenmagnetfelds zusammen.
Die Vorhersage der Sonnenfleckenaktivität ist wichtig für das Verständnis von Aspekten der Sonnenaktivität, des Weltraumwetters, der ionosphärischen Bedingungen, der Ausbreitung von Kurzwellenfunk und der Satellitenkommunikation.

Vorhersageaufgaben:

Prognostizieren Sie die Start- und Endzeiten des aktuellen und nächsten Sonnenzyklus.
Sagen Sie den Startzeitpunkt und die Dauer des Sonnenmaximums des nächsten Sonnenzyklus voraus.
Sagen Sie die Anzahl und Fläche der Sonnenflecken während des aktuellen und nächsten Sonnenzyklus voraus und beschreiben Sie die Zuverlässigkeit des Modells.
Um diese Aufgaben zu erfüllen, müssen wir mathematische Modellierungsmethoden verwenden, um die Sonnenfleckenaktivität zu analysieren und vorherzusagen. Dazu können Methoden wie Zeitreihenanalyse, Spektralanalyse, neuronale Netze und detaillierte Analysen historischer Beobachtungsdaten gehören. Zu den öffentlich verfügbaren Daten gehören historische Sonnenfleckenzahlen, Flächen und andere potenziell relevante Indikatoren.

Anzahl der Quellen:
https://www.sidc.be/SILSO/datafiles

Die Datentabelle enthält Sonnenfleckenbeobachtungsdaten ab 1818. Die spezifischen Felder lauten wie folgt:
Jahr, Monat, Tag: Beobachtungsdatum.
Datum in Bruch: Dezimale Darstellung des Datums, praktisch für die Zeitreihenanalyse.
Sonnenfleckenzahl: Die Anzahl der Sonnenflecken.
Standardabweichung: Standardabweichung, die die Unsicherheit bei der Messung der Sonnenfleckenzahlen darstellen kann.
Beobachtungen: Anzahl der Beobachtungen oder Anzahl der Beobachtungsorte.
Endgültig/Vorläufig: Der Status der Daten, der angeben kann, ob die Daten endgültig oder vorläufig sind.
Als nächstes können wir diese Daten verwenden, um die Sonnenfleckenaktivität vorherzusagen. Zuerst müssen wir die Daten verarbeiten, einschließlich der Bereinigung (z. B. Behandlung fehlender Werte), der Konvertierung von Datumsformaten und möglicherweise der Erstellung zusätzlicher Funktionen wie zeitbasierter Statistiken. Anschließend können wir Methoden der Zeitreihenanalyse oder Modelle des maschinellen Lernens anwenden, um Vorhersagen zu treffen.
Aufgrund der periodischen Natur der Sonnenfleckenaktivität kann die Zeitreihenanalyse (wie das ARIMA-Modell) eine geeignete Methode sein. Wir können auch den Einsatz von Modellen des maschinellen Lernens wie Random Forests oder neuronalen Netzen untersuchen, insbesondere wenn es um Nichtlinearitäten und komplexe zeitliche Abhängigkeiten geht.

Visualisierung und Datenvorverarbeitung zuerst
Dieses Diagramm zeigt die Veränderung der Anzahl der Sonnenflecken im Zeitverlauf ab 1818. Aus der Abbildung ist ersichtlich, dass die Anzahl der Sonnenflecken deutliche periodische Schwankungen aufweist, was mit den periodischen Eigenschaften der Sonnenaktivität übereinstimmt. Darüber hinaus repräsentieren Spitzen und Tiefen der Sonnenfleckenzahlen Spitzen und Tiefen der Sonnenaktivität

Beim Versuch, die Daten aufzuschlüsseln, um ihre saisonale Komponente zu beobachten, bin ich auf ein Problem gestoßen: In den Daten fehlten Werte. Vor der Zeitreihenanalyse müssen diese fehlenden Werte behoben werden.
Eine gängige Methode zum Umgang mit fehlenden Werten ist die Interpolation. Da es sich jedoch um eine Zeitreihe von Sonnenfleckenzahlen handelt, müssen wir bei der Auswahl einer geeigneten Interpolationsmethode vorsichtig sein, um dies sicherzustellen Wir führen keine irreführenden Daten ein. Für Sonnenfleckenzahlen kann die lineare Interpolation eine sinnvolle Wahl sein, da sie die Daten vor und nach dem fehlenden Punkt reibungslos verbinden kann.
Ich werde die Daten verarbeiten und die Analyse und Vorhersagen erneut versuchen.

Wir führen nun eine Zeitreihenanalyse und Vorhersage der Sonnenfleckenzahlen unter Verwendung der verarbeiteten Daten durch (mit linearer Interpolation fehlender Werte). Aus der Grafik können Sie Folgendes ersehen:
Die blaue Linie stellt den beobachteten Trend dar (nach Interpolation).
Die rote Linie stellt den prognostizierten zukünftigen Trend dar.
Der rosa Bereich stellt das Konfidenzintervall der Vorhersage dar, also den Bereich möglicher Schwankungen des vorhergesagten Werts.
Dieses Prognosemodell basiert auf dem SARIMA-Modell (Seasonal Autoregressive Integrated Moving Average), das Zeitreihendaten mit saisonaler Periodizität verarbeiten kann. Die Modellparameter wurden basierend auf den Merkmalen eines Sonnenfleckenaktivitätszyklus von etwa 11 Jahren (132 Monaten) ausgewählt.

Funktionsumfang:
pandas als pd importieren
matplotlib.pyplot als plt importieren
aus Statistikmodellen. tsa.seasonal importseasonal_decompose
from statsmodels.tsa.statespace.sarimax import SARIMAX
from pandas.plotting import register_matplotlib_converters

Registrieren Sie den Matplotlib-Konverter

register_matplotlib_converters()

Daten lesen

file_path = 'path_to_your_file/SN_d_tot_V2.0.csv'
df = pd.read_csv(file_path, delimiter=';', header=Keine, Namen=[„Jahr“, „Monat“, „Tag“, „Datum in Bruchteilen“, „Sonnenfleckenzahl“, „Standardabweichung“, „Beobachtungen“, „Endgültig/vorläufig“])

Datenvorverarbeitung

df = df[df['Sunspot Number'] != -1] # Ungültige Daten filtern
df.index = pd.to_datetime(df[['Year', ' Month', 'Day']]) # Datum/Uhrzeit-Index erstellen
monatlich_data = df['Sunspot Number'].resample('M').mean() # Durchschnitt pro Monat berechnen
monatlich_data_interpolated = monatlich_data.interpolate(method='linear') # Lineare Interpolation behandelt fehlende Werte

Zeitreihenzerlegung

decomposition = saisonale_decompose(monthly_data_interpolated, model='additive', period=132) # Ungefähr 11-Jahres-Zyklus
trend_component = decomposition.trend.dropna() # Trendkomponente für Prognosen verwenden

Partitionierung von Trainings- und Testdatensätzen

train = trend_component.iloc[:-20]
test = trend_component.iloc[-20:]

Bauen und montieren Sie das SARIMA-Modell

Prognoseergebnis

2. Sagen Sie den Startzeitpunkt und die Dauer der solaren Maximalperiode des nächsten Sonnenaktivitätszyklus voraus.

Die Idee ist wie folgt:

Vorhersage mit dem SARIMA-Modell: Zunächst müssen wir zukünftige Sonnenfleckenzahlen mit demselben SARIMA-Modell aus dem vorherigen Schritt vorhersagen.

Maximalwerte finden: Dann müssen wir Maximalwertpunkte in den Vorhersageergebnissen finden, die die maximalen Perioden der Sonnenaktivität darstellen.

Bestimmung des Beginns und der Dauer des maximalen Zeitraums: Um den Startzeitpunkt und die Dauer des maximalen Zeitraums zu bestimmen, können wir davon ausgehen, dass jeder Sonnenzyklus etwa 11 Jahre (132 Monate) dauert und dass der maximale Zeitraum normalerweise in der Mitte liegt Zyklus. Daher können wir davon ausgehen, dass der Höchstzeitraum 66 Monate vor dem Höchstpunkt beginnt und 132 Monate dauert.

3. Sagen Sie die Anzahl und Fläche der Sonnenflecken im aktuellen und nächsten Sonnenaktivitätszyklus voraus und erläutern Sie die Zuverlässigkeit des Modells.

Um die Anzahl und Fläche der Sonnenflecken während des aktuellen und nächsten Sonnenzyklus vorherzusagen und die Zuverlässigkeit des Modells zu bewerten, werden wir weiterhin das SARIMA-Modell verwenden.
Die Zuverlässigkeit des Prognosemodells wird durch die Berechnung von Vorhersageintervallen und die Bewertung der Modellanpassung bestimmt.
Zukünftig werden Ersatzmodelle hinzugefügt, um die Vorhersagegenauigkeit zu verbessern

Supongo que te gusta

Origin blog.csdn.net/yeqianqian_/article/details/134729281
Recomendado
Clasificación