[PYTHON] Finden des Beginns der Avenomics anhand der NT-Vergrößerung 2

Der Trend der NT-Vergrößerung hat sich geändert

Im vorherigen Artikel wurde anhand der Analyse der beiden Aktienindizes Topix / Nikkei225, insbesondere der Regressionsanalyse, die Darstellung von NT weitgehend auf zwei Trendlinien und in chronologischer Reihenfolge auf Trend-1 mit einem leichten Gradienten (Tend-1 ( Es wurde festgestellt, dass sich das NT-Verhältnis = 10,06) mit einer steilen Steigung zu Trend-2 (NT-Verhältnis = 12,81) änderte.

** Zahl. Nachdruck der obigen Abbildung (Topix vs. Nikkei225) ** Scatter_NT_02.png

Es wird angenommen, dass der steile Anstieg von Trend-2 mit der Wirtschaftspolitik von "Avenomics" zusammenhängt, aber die Regressionsanalyse hat zu Beginn nicht geklärt. Dieses Mal haben wir Trend-1 und Trend-2 mithilfe der Methode des maschinellen Lernens klassifiziert und versucht zu klären, wann Trend-2 gestartet wurde.

Trial.1 - K-Means Clustering Ich habe mich entschieden, scikit-learn als Python-Modul für maschinelles Lernen zu verwenden, aber es gibt verschiedene mögliche Ansätze für die Klassifizierung, aber zuerst habe ich versucht, die K-Means-Methode zu verwenden. Dies ist ein typisches Beispiel für Clustering ohne Label.

K-Means_not_good.png

Der Code lautet wie folgt.


from sklearn.cluster import KMeans
from sklearn.decomposition import PCA

mypair.dropna(inplace=True)
X = np.column_stack([mypair['topix'].values, mypair['n225'].values])

# K-means clustering process

myinit = np.array([[mypair.loc['20050104', 'topix'], mypair.loc['20050104', 'n225']], \
			[mypair.loc['20130104', 'topix'], mypair.loc['20130104', 'n225']]])

k_means = KMeans(init=myinit, n_clusters=2, n_init=10)
k_means.fit(X)           # ... compute k-means clustering

k_means_labels = k_means.labels_
k_means_cluster_centers = k_means.cluster_centers_
k_means_labels_unique = np.unique(k_means_labels)

colors = ['b', 'r']
n_clusters = 2

for k, col in zip(range(n_clusters), colors):
    my_members = k_means_labels == k
    cluster_center = k_means_cluster_centers[k]
    plt.plot(X[my_members, 0], X[my_members, 1], 'w', markerfacecolor=col, marker='.')
    plt.plot(cluster_center[0], cluster_center[1], 'o', markerfacecolor=col, markeredgecolor='k', markersize=6)

plt.title('K-Means')
plt.grid(True)

Immerhin war es nutzlos. Bei der K-Means-Methode scheint es so zu sein, dass die Methode darin besteht, den (abstrakten) Abstand zwischen den Daten zu messen und die Nähe zu Ihrem eigenen Mitglied zu erfassen, aber wie diesmal sind diejenigen mit einem großen Seitenverhältnis entlang der Linie verstreut Es scheint nicht für die Handhabung geeignet zu sein.

Trial.2 - Primary Component Anarysis (PCA) Als ich mir das K-Mittel-Diagramm ansah, fragte ich mich, ob es möglich wäre, eine Art Koordinatentransformation anzuwenden, um es zu einem "Klumpen" zu machen, und es dann auf Clustering anzuwenden, um die linear gestreuten Daten zu sammeln. Als ich jedoch die Dokumente überprüfte, stellte ich fest, dass die Hauptkomponentenanase (PCA) angewendet werden konnte, und entschied mich daher, die Klassifizierung nach PCA zu versuchen.

** Zahl. Plot ** nach PCA-Verarbeitung

PCA_scatter_01.png

Von hier aus haben wir beschlossen, in zwei Gruppen mit einer Grenzlinie bei Y = 0 zu klassifizieren.

# PCA process

pca = PCA(n_components=2)
X_xf = pca.fit(X).transform(X)

plt.scatter(X_xf[:,0], X_xf[:,1])
plt.grid(True)
border_line = np.array([[-6000,0], [6000, 0]])
plt.plot(border_line[:,0], border_line[:,1],'r-', lw=1.6)

col_v = np.zeros(len(X_xf), dtype=int)
for i in range(len(X_xf)):
	col_v[i] = int(X_xf[i,1] / abs(X_xf[i,1])) * (-1)

mypair['color'] = col_v
mypair['color'].plot(figsize=(8,2), grid=True, lw=1.6)    # color historical chart
plt.ylim([-1.2, 1.2])

# plot scatter w/ colors

plt.figure(figsize=(12,5))
plt.subplot(121)
plt.scatter(X_xf[:,0], X_xf[:,1], marker='o', c=col_v)
plt.grid(True)
plt.title('Topix vs. Nikkei225 (PCA processed)')

plt.subplot(122)
plt.scatter(X[:,0], X[:,1], marker='o', c=col_v)
plt.grid(True)
plt.title('Topix vs. Nikkei225 (raw values)')

Die Ergebnisse sind in der folgenden Abbildung dargestellt. (Entschuldigung, die "Farbe" ist schwer zu sehen.)

PCA_scatter_03.png

Die linke ist in dem von PCA konvertierten Koordinatensystem farbcodiert, und diese Farbe ist im ursprünglichen Koordinatensystem aufgetragen. Es kann bestätigt werden, dass Trends wie ursprünglich beabsichtigt gruppiert werden. Das Setzen von Y = 0 als Gruppengrenze scheint "gut" sinnvoll zu sein.

Zusammenfassung

Durch PCA konnten wir in eine blaue Grundstücksgruppe mit leichtem Gefälle und eine rote Grundstücksgruppe mit steilem Gefälle einteilen. Machen wir die Seriendaten dieser Farbe zu einem historischen Diagramm.

** Zahl. Trend- (Farb-) Übergang (y = -1: Trend-1, y = + 1: Trend-2) ** PCA_color-TL.png

Aus der obigen Grafik ** Trend-1 ** bis zum zweiten Halbjahr 2009 ergibt sich eine leichte Übergangszeit, und ab dem zweiten Quartal 2011 ist die NT-Quote groß ** Trend-2 ** Es ist zu sehen, dass es bis 2014 andauert. Wenn ** Trend-2 ** = "Abenomics" ist, kann davon ausgegangen werden, dass Abenomics im ersten Halbjahr 2011 gestartet wurde. (Das erste Halbjahr 2011 erinnert mich an das große Erdbeben in Ostjapan.)

Ich möchte die Anwendung anderer Methoden des maschinellen Lernens und die Überprüfung dieser PCA-Methode in Zukunft in Betracht ziehen. Wenn andere Wirtschaftsdaten (z. B. Importe fossiler Brennstoffe) verfügbar sind, möchte ich auch den Zusammenhang damit untersuchen.

Verweise

--Data Scientist Training Reader (Technische Überprüfung) http://gihyo.jp/book/2013/978-4-7741-5896-9 7741-5896-9)

Recommended Posts

Finden des Beginns der Avenomics anhand der NT-Vergrößerung 2
Finden des Beginns der Avenomics anhand der NT-Vergrößerung 1
Notizen vom Anfang von Python 1 lernen
Lassen Sie die Stückliste am Anfang der Zeichenfolge weg
Notizen vom Anfang von Python 2 lernen
Der Beginn von cif2cell
Lerne Nim mit Python (ab Anfang des Jahres).
Studie vom Anfang von Python Hour1: Hallo Welt
Studie aus Python Hour8: Verwenden von Paketen
DJango Hinweis: Von Anfang an (Vereinfachung und Aufteilung von URLConf)
Erster Python 3 ~ Der Beginn der Wiederholung ~
DJango Memo: Von Anfang an (Vorbereitung)
Leiten Sie den Quadrantenbereich der Standardnormalverteilung von Anfang an sorgfältig ab
DJango Memo: Von Anfang an (Modelleinstellung)
[Verständnis in 3 Minuten] Der Beginn von Linux
Ruf Hallo, Reiwa! Am Anfang von Reiwa!
DJango Hinweis: Von Anfang an (Formularverarbeitung)
DJango Memo: Von Anfang an (Erstellen einer Ansicht)
Ändern Sie den Dezimalpunkt der Protokollierung von, nach.
Die Geschichte, das optimale n in N Faust zu finden
Auszug nur vollständig aus dem Ergebnis von Trinity
DJango Memo: Von Anfang an (Fehlerbildschirmeinstellung)
Von der Einführung von Pyethapp bis zur Vertragsabwicklung
Übergang von Baseball aus Daten gesehen
Die Geschichte vom Umzug von Pipenv zur Poesie
Zusammenfassung von Anfang bis Kapitel 1 der Einführung in Entwurfsmuster, die in der Java-Sprache gelernt wurden
Die Geschichte des Starts eines Minecraft-Servers von Discord
Die Wand beim Ändern des Django-Dienstes von Python 2.7 auf Python 3-Serie
Wird ab der Einführung von Node.js in der WSL-Umgebung verwendet
Berechnen Sie das Volumen aus der zweidimensionalen Struktur einer Verbindung
[GoLang] Setzen Sie am Anfang des Kommentars ein Leerzeichen
[Python] Ruft den Gesetzestext aus der e-GOV-Gesetz-API ab
Öffnen Sie die Chrome-Version von LINE über die Befehlszeile [Linux].
Berechnung der minimal erforderlichen Stimmenzahl aus der Stimmenzahl
Kaggle-Wettbewerbsprozess unter dem Gesichtspunkt des Punkteübergangs
Tensorflows Denkweise lernte aus der Kartoffelherstellung
Holen Sie sich den Rückkehrcode eines Python-Skripts von bat
DJango Hinweis: Von Anfang an (mit einer generischen Ansicht)
DJango Hinweis: Von Anfang an (Erstellen einer Ansicht aus einer Vorlage)
Othello ~ Aus der dritten Zeile von "Implementation Deep Learning" (4) [Ende]
Visualisieren Sie die Anzahl der Beschwerden von Lebensversicherungsunternehmen
Finden Sie die "Mindestpunktzahl" aus der "Durchschnittspunktzahl der Prüflinge", der "Durchschnittspunktzahl der erfolgreichen Bewerber" und der "Vergrößerung" der Aufnahmeprüfung