[PYTHON] Gaußsche Anpassung

Normalverteilung und deren Anpassung

In der linearen Regression, die bereits mehrmals vorkam, wurde die theoretische Formel der Linie, die zur Verteilung der Daten passt, nach der Methode der minimalen Quadrate erhalten. In vielen der verschiedenen bisher aufgetretenen Analysen wird eine Normalverteilung angenommen, beispielsweise in der linearen Regression (http://qiita.com/ynakayama/items/e41f592ad7fe02f23c1c).

Die Methode der kleinsten Quadrate, die als unverzichtbare Methode zur Anpassung bezeichnet werden kann, ermöglicht es, verschiedene Informationen aus den in der theoretischen Formel enthaltenen Konstanten zu erhalten, indem die aufgetragenen Daten an die theoretische Formel angepasst werden. Beispielsweise wird es in verschiedenen Situationen verwendet, z. B. wenn Sie die Steigung einer geraden Linie ermitteln möchten, die zu jedem Punkt passt, oder wenn Sie die Statistik einer Verteilung ermitteln möchten, die eine Normalverteilung annimmt.

** Normalverteilung **, auch als ** Gaußsche Verteilung ** bekannt, ist eine Wahrscheinlichkeitsverteilung für kontinuierliche Variablen, die die Verteilung von Daten darstellt, in denen sich Peaks nahe dem Mittelwert ansammeln. Ich habe es auch in Frühere Artikel erklärt. Das Ermitteln der Funktion der Näherungskurve (Anpassungskurve) für die Normalverteilung wird als Gaußsche Anpassung bezeichnet. Wie üblich kann die Gaußsche Anpassung leicht erreicht werden, indem die leistungsstarken mathematischen Funktionen von SciPy vollständig genutzt werden.

Erhalten Sie eine Probe, die einer Normalverteilung nahe kommt

Suchen Sie zunächst eine Stichprobe, die nahe an der Normalverteilung liegt. Generieren Sie 500 Daten mit einem Durchschnitt von 100 wie folgt:

from scipy.stats import norm
import numpy as np
import matplotlib.pyplot as plt
import pylab as plb

#Erhalten Sie eine Probe, die einer Normalverteilung nahe kommt
#Der Durchschnitt liegt bei 100, die Standardabweichung bei 1 und die Anzahl der Proben bei 500.
sample = norm.rvs(loc=100,scale=1,size=500)

print (sample) # =>
#[ 101.02975418   99.95689958  100.8338816    99.32725219  101.50090014
#   99.29039034  101.64895275  100.45222206  100.22525394   98.8036744
#  100.73576941   99.32705948  100.52278215  102.38383015   98.28409264
#   99.22632512  100.84625978   99.69653993  100.9957202    97.97846995
#   99.49731157  100.89595798  101.3705089   101.15367469  100.26415751
#   99.14143516  100.21385338   99.69883406   99.68494407  100.70380005
#  100.73544699  100.3434308    99.50291518   99.61483734  100.92201666
#  100.98639356  100.36362462   98.39298021   98.39137284  101.54821395
#  100.2748115   100.78672853   99.79335862   98.8123562   100.57942641
#  100.03497218   99.98368219  100.45979578   99.32342998   98.08908529
#  ...

Anpassung und Visualisierung

Die Anpassung erfordert nur eine Methode.

param = norm.fit(sample)

print (param)
# => (99.92158820017579, 1.0339291481971331)

Nachdem Sie die Parameter haben, können Sie sie zeichnen.

x = np.linspace(95,105,100)
pdf_fitted = norm.pdf(x,loc=param[0], scale=param[1])
pdf = norm.pdf(x)
plt.figure
plt.title('Normal distribution')
plt.plot(x, pdf_fitted, 'r-', x,pdf, 'b-')
plt.hist(sample, normed=1, alpha=.3)
plt.show()
plt.savefig("image.png ")

image.png

Es ging gut.

Es ist keine Zeit, Beispiele für die Analyse technischer Probleme mit der Methode der kleinsten Quadrate aufzulisten. Es ist auch wichtig, ein gutes Verständnis der Wahrscheinlichkeitsverteilungen und -tests zu haben, da der Datenanalyseprozess ruiniert wird, wenn die Annahmen in einem Modell schwanken, das eine Normalverteilung annimmt.

Recommended Posts

Gaußsche Anpassung
Bayes passend
Gaußscher Prozess