Punktschätzungen bei unbekanntem \sigma
Contents
Punktschätzungen bei unbekanntem \(\sigma\)¶
Welche Wahrscheinlichkeitsverteilung wird für die Berechnungen von Punktschätzungen bei unbekannter Standardabweichnung der Grundgesamtheit und kleiner Stichprobengrösse (\(n\lt 30\)) verwendet?
Wir simulieren eine Grundgesamtheit an Daten indem wir \(100\) Zufallszahlen zwischen \(-100\) und \(100\) generieren. Berechnen Sie Mittelwert und Standardabweichung für diese Zufallsdaten.
Nehmen Sie eine Stichprobe vom Umfang \(n=10\). Berechnen Sie Mittelwert und Konfidenzintervall (\(\alpha = 0,05\)) für die Stichprobe unter der Verwendung einer geeigneten Wahrscheinlichkeitsverteilung und überprüfen Sie ob der Mittelwert der Grundgesamtheit innerhalb des Konfidenzintervalls liegt.
# Frage 2 ...
# Frage 3 ...
Lösungen¶
Im Fall unbekannter Standardabweichung der Grundgesamtheit \(\sigma\) kann die Standardabweichung der Stichprobe, \(s\), als Schätzer verwendet werden. \(s\) ist gegeben durch \(s =\sqrt{\sum_i \frac{x_i - \bar x}{n-1}}\) und ihre Verteilung wird durch die \(t\)-Verteilung beschrieben.
([Fahrmeir et al., 2016] s.360)
import numpy as np
# Erzeuge Random seed
np.random.seed(1)
data = []
# Generiere Zufallszahlen
np.random.seed(42)
data = [np.random.randint(-100, 100) for x in range(100)]
# Berechne Mittelwert und Standardabweichung
data_mean = np.mean(data)
print(f"Mittelwert: {data_mean}")
data_std = np.std(data)
print(f"Standardabweichung: {data_std}")
Mittelwert: -0.83
Standardabweichung: 59.96016260818511
import random
from scipy.stats import t
# Nehme Stichprobe
n = 10
np.random.seed(42)
sample = random.sample(data, n)
# Berechne Mittelwert und Standardabweichung der Stichprobe
sample_mean = np.mean(sample)
print(f"Mittelwert der Stichprobe: {sample_mean}")
sample_std = np.std(sample)
print(f"Standardabweichung der Stichprobe: {sample_mean}")
alpha = 0.05
lower = data_mean - t.ppf(1 - alpha / 2, df=n - 1) * (sample_std / np.sqrt(n))
upper = data_mean + t.ppf(1 - alpha / 2, df=n - 1) * (sample_std / np.sqrt(n))
print(
f"Lower: {round(lower,3)} <= Sample mean: {sample_mean} <= Upper: {round(upper,3)}"
)
assert lower <= data_mean and data_mean <= upper
Mittelwert der Stichprobe: -12.0
Standardabweichung der Stichprobe: -12.0
Lower: -45.684 <= Sample mean: -12.0 <= Upper: 44.024