Mathematische Grundlage
Für $n$ Daten $x_1$, $x_2$, …, $x_n$ schreibt man den Mittelwert als $\bar{x}$, wobei \[ \bar{x} = \frac{1}{n}\sum_{i = 1}^n x_i \; . \]
Die Varianz $\sigma^2$ wird wie folgt berechnet. \[ \begin{align*} \sigma^2 & = \frac{1}{n} \sum_{i=1}^n \left(x_i - \bar{x} \right)^2 \\ & = \frac{1}{n} \sum_{i=1}^n x_i^2 - \left(\frac{1}{n} \sum_{i=1}^n x_i\right)^2 \\ & = \overline{x^2} - \bar{x}^2 \end{align*} \]
Die Funktion zur Ermittlung des Mittelwerts
Dies wird ungefähr folgendermaßen aussehen:
Beispielprogramm 1
def average(array):
ave = 0 # Vergessen Sie nicht die Initialisierung
for data in array:
ave += data
# Das Folgende kann auch als return ave / len(array)
# zusammengeschrieben werden
ave /= len(array)
return ave
Beispielprogramm 2
Sie können auch wie folgt schreiben.
def average(array):
ave = 0
for i in range(len(array)):
ave += array[i]
# Das Folgende kann auch als return ave / len(array)
# zusammengeschrieben werden
ave /= len(array)
return ave
Anmerkungen
-
Vergessen Sie nicht, die Variablen zu initialisieren.
-
Sie können die Anzahl der Elemente in einem Array mit
len()
ermitteln. -
Die letzten beiden Zeilen können auch zusammen als
return ave / len(array)
geschrieben werden. In diesem Fall istave
jedoch nicht das, was es wirklich bedeutet. (tatsächlich enthält das endgültigeave
den Mittelwert multipliziert mitn
). Es ist also besser, den Variablennamen vonave
in z. B.n_ave
zu ändern (was $n$ mal den Mittelwert bedeutet).
Für das Beispielprogramm 2 sind außerdem folgende Punkte zu beachten:
-
Beachten Sie, dass die Array-Indizes bei 0 beginnen.
-
Achten Sie genau auf die Schleifenbedingung in for-Schleife.
Funktion zur Ermittlung der Varianz
Je nachdem, welche Formel Sie verwenden, variiert dies geringfügig, aber im Allgemeinen sieht es etwa so aus.
def variance(array):
var = 0
ave = average(array)
for data in array:
var += (data - ave) * (data - ave)
var /= len(array)
return var
Anmerkungen
-
Der Quadrat kann geschrieben werden als
(arr[i] - ave) ** 2
.
Überprüfung der Zahlen
Um den Mittelwert und die Varianz anhand der in der Aufgabe angegebenen Daten darzustellen, kann man zum Beispiel wie folgt schreiben.
data = [71, 80, 89]
print(average(data), variance(data))
In diesem Fall sollten die Werte als
80.0 54.0
angezeigt werden.