Vielen Dank, dass Sie sich die Zeit genommen haben, den Artikel zu lesen! !!
Lassen Sie mich zunächst vorstellen! Ich bin ein Mitglied der Gesellschaft, das in meiner Freizeit gerne Python lernt
ist.
Weit davon entfernt, zu programmieren, war ich verrückt nach PC, also habe ich ab dem 1. September letzten Monats angefangen, Python zu lernen.
Es ist ungefähr zwei Monate her, seit ich angefangen habe, mit Progate, PyQ und Aidemy zu programmieren.
Nachdem ich alles über den Datenanalysekurs von Aidemy erfahren hatte, wollte ich ihn ausgeben und beschloss, diesen Artikel zu schreiben.
Obwohl ich nicht viel Zeit für das Programmieren lernen kann, z. B. während der Arbeit oder während des Schulbesuchs,
Ich bin ein Programmieranfänger, der Ming lernen möchte. Wie ich oben über mich selbst geschrieben habe, bin ich auch ein Programm
Ich bin ein Anfänger. Verwenden Sie es daher als Beispiel dafür, wie viel Sie in etwa 2 Monaten tun können.
Ich bin glücklich.
Python3 MacBookAir Jupyter Notebook
Erstellen Sie ein SARIMA-Modell (eine Art Zeitreihenmodell), das das japanische BIP vorhersagt, und zeigen Sie die tatsächlichen und vorhergesagten Werte in einem Diagramm an.
import csv
import numpy as np
import pandas as pd
from scipy import stats
import matplotlib.pyplot as plt
import statsmodels.api as sm
from datetime import datetime
from statsmodels.tsa.statespace.sarimax import SARIMAX
import itertools
Reales BIP von E-Stat (Regierungsstatistik)
__1. Daten vorverarbeiten __ Da das Ziel geklärt ist, werden wir die Rohdaten zurückrechnen und verarbeiten.
#①
df = pd.read_csv('gaku-jg2022 (1).csv',encoding="shift-jis")
df = df.drop(range(0,6)) #Löschen Sie unnötige Zeilen
df = df.drop([110,111,112])
df = df.drop(df.columns[range(2, 30)], axis=1) #Löschen Sie nicht benötigte Spalten
df = df.reset_index(drop=True) #Zeilen neu nummerieren
df = df.rename(columns={'Wesentliche Originalserie': 'Date'}) #Geben Sie der Spalte einen neuen Titel
df = df.rename(columns={'Unnamed: 1': 'RealGDP'})
#②
#Verarbeiten Sie die Daten in der Spalte Zeit
j = 1994
k = 0
for i in range(len(df["Date"])):
df.loc[i,"Date"] = j
k += 1
if k%4 == 0:
j += 1
df["Date"] #Nur Datum extrahieren
index = pd.date_range("1994","2020",freq = "Q")#Daten vierteljährlich trennen
df.index = index
del df["Date"]
#③
#Prozess Reales BIP
i = 0
for x in df["RealGDP"]:
x = x.replace(',', '')
df.iloc[i,0] = float(x)
i += 1
In (1) sind die Spalten, für die die erfassten Rohdaten nicht erforderlich sind (z. B. die Spalte mit den privaten Endverbrauchsausgaben), die Zeilen mit nicht numerischen Werten wie Variablennamen und Leerzeichen sowie die Daten für das Geschäftsjahr 2020 ungerade und werden daher abgeschnitten. In (2) wird der vorhandene Wert für die Indizierung der Zeitinformationen geändert (was aus der Zeile des Variablenindex erfolgt). (3) Da der Datentyp des BIP-Spaltenwerts eine Zeichenfolge ist und "," enthält, konvertieren Sie ihn zur Diagrammanzeige in einen Gleitkommatyp.
__2. Grafikanzeige __ Wenn Sie die in 1 verarbeiteten Daten als Diagramm mit dem folgenden Code anzeigen,
#Stellen Sie die Daten als Liniendiagramm dar
#Legen Sie den Titel des Diagramms fest
plt.title("quarterly-RealGDP_in_Japan")
#Benennung der x-Achse und der y-Achse des Diagramms
plt.xlabel("date")
plt.ylabel("GDP")
#Datenplot
plt.plot(df)
plt.show()
Die horizontale Achse ist die Zeit und die vertikale Achse ist der Graph des BIP-Wertes. Es schwingt kurzfristig auf und ab und steigt langfristig tendenziell an.
Ich werde. Ausnahmsweise ist zu erkennen, dass der BIP-Wert um 2008 aufgrund des Lehman-Schocks deutlich gesunken ist. Ich bin Minuten
Wenn es analysiert wird, kann es nur insoweit interpretiert werden, aber welches Muster liest die Maschine aus diesen Daten und was ist es?
Wirst du eine solche Vorhersage machen? Ich freue mich darauf!
__3. Parameter bestimmen __ Das SARIMA-Modell erfordert 7 Variablen, eine wird visuell in der Grafik bestimmt und die anderen 6 werden von einer Funktion ausgegeben.
Ich werde.
Einer ist ein Parameter namens Periode s. Wie viele Einheiten von Mustern auf den Daten können in der Periode s wiederholt gesehen werden
Es wird eingegeben, wenn es einige Zeit gedauert hat. Unter Berücksichtigung der Perioden s in der oben gezeigten Grafik wird die vertikale Bewegung wiederholt.
Hat sich in vier Jahren viermal auf und ab bewegt, so dass einmal im Jahr ein periodisches Muster auftritt (eine Einheit). Daher beträgt der Zyklus s ein Jahr
In der Zwischenzeit, da es sich bei den Daten, mit denen wir uns zu diesem Zeitpunkt befassen, um vierteljährliche Daten handelt, entsprechen 4 Daten 1 Jahr, sodass wir sehen können, dass s = 4 ist. Als nächstes werden die restlichen 6 von der folgenden Funktion ausgegeben.
#Bestimmen Sie die Parameter des SARIMA-Modells
def selectparameter(DATA,s):
p = d = q = range(0, 2)
pdq = list(itertools.product(p, d, q))
seasonal_pdq = [(x[0], x[1], x[2], 12) for x in list(itertools.product(p, d, q))]
parameters = []
BICs = np.array([])
for param in pdq:
for param_seasonal in seasonal_pdq:
try:
mod = sm.tsa.statespace.SARIMAX(DATA,
order=param,
seasonal_order=param_seasonal)
results = mod.fit()
parameters.append([param, param_seasonal, results.bic])
BICs = np.append(BICs,results.bic)
except:
continue
return print(parameters[np.argmin(BICs)])
#Verarbeiten Sie den Wert von RealGDP
i = 0
for x in df["RealGDP"]:
x = x.replace(',', '')
df.iloc[i,0] = x
i += 1
selectparameter(df["RealGDP"].values.astype(float), 4)
[(0, 1, 0), (1, 1, 0, 12), 1641.6840970980422] CPU times: user 19.1 s, sys: 8.17 s, total: 27.3 s Wall time: 14.2 s
Setzen Sie die Parameter aus dem Ausgabeergebnis auf (0, 1, 0), (1, 1, 0, 12).
__4 Modellanpassung und Vorhersage __
#Modell fit
SARIMA_df = sm.tsa.statespace.SARIMAX(df.astype("float64"),order=(0, 1, 0),seasonal_order=(1, 1, 0, 12)).fit()#Bitte schreibe deine Antwort hier
#Pred durch Vorhersagedaten ersetzen
pred = SARIMA_df.predict("2015-03-31", "2022-12-31")
#Visualisierung von Prädaten und ursprünglichen Zeitreihendaten
plt.plot(df)
plt.plot(pred, color="r")
plt.show()
Prognostizieren Sie das BIP vom 31. März 2015 bis zum 31. Dezember 2022 und stellen Sie den tatsächlichen Wert in Blau und den prognostizierten Wert in Rot dar
Machen. Die Grafik sieht folgendermaßen aus:
Da sich Blau und Rot ziemlich stark überlappen, kann gesagt werden, dass es gut vorhergesagt werden kann.
Da jedoch die Auswirkungen des neuen Koronavirus auf die Wirtschaft nicht berücksichtigt werden, unterscheiden sich die vorhergesagten Werte danach erheblich von den tatsächlichen Werten.
Sie können es erwarten. Ich möchte auf zukünftige tatsächliche Messwerte warten.
Obwohl ich kein striktes Verständnis hatte, konnte ich vor zwei Monaten nicht einmal blind anfassen, also ließ ich die Maschine lernen
Ich bin ein wenig beeindruckt, Vorhersagen treffen zu können.
Ich habe noch Aidemys Kurs in meinen zukünftigen Plänen, also werde ich in einem anderen Kurs studieren und andere Ergebnisse als Datenanalyse ausgeben.
Ich werde hierher zurückkommen, um es zu tun.
Vielen Dank für das Lesen bis zum Ende! !!
e-stat Kurs zur Analyse von Aidemiedaten Prognose des Bevölkerungswandels in Japan durch maschinelles Lernen [Big-Data-Analysemethode und "SARIMA-Modell" zur Vorhersage der Zukunft](https://deepage.net/bigdata/2016/10/22/bigdata-analytics.html#sarima%E3%83%A2%E3%83] % 87% E3% 83% AB)
Recommended Posts