Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Herausforderung: Resampling-Ansatz zum Vergleich der Mittelwerte der Datensätze | Testing of Statistical Hypotheses
Fortgeschrittene Wahrscheinlichkeitstheorie

book
Herausforderung: Resampling-Ansatz zum Vergleich der Mittelwerte der Datensätze

Wir können auch den Resampling-Ansatz verwenden, um die Hypothese mit nicht-Gauss'schen Datensätzen zu testen. Resampling ist eine Technik, um aus einem verfügbaren Datensatz zusätzliche Stichproben zu generieren, von denen jede als repräsentativ für die zugrunde liegende Population angesehen wird.

Ansatzbeschreibung

Lassen Sie uns die einfachste Resampling-Methode beschreiben, um die Haupthypothese zu überprüfen, dass zwei Datensätze X und Y gleiche Mittelwerte haben:

  • Konkatenieren Sie beide Arrays ( X und Y ) zu einem großen Array;

  • Mischen Sie dieses gesamte Array, sodass Beobachtungen aus jeder Gruppe zufällig in diesem Array verteilt sind, anstatt an der Trennstelle getrennt zu sein;

  • Teilen Sie das Array willkürlich an der Trennstelle ( X_length ), weisen Sie Beobachtungen unterhalb des Index len(X_length) Gruppe A zu und den Rest Gruppe B;

  • Subtrahieren Sie den Mittelwert dieser neuen Gruppe A vom Mittelwert der neuen Gruppe B. Dies würde uns eine Permutationsteststatistik geben;

  • Wiederholen Sie diese Schritte N Mal, um die Verteilung der Haupthypothese zu simulieren;

  • Berechnen Sie Teststatistiken auf den ursprünglichen Sets X und Y ;

  • Bestimmen Sie kritische Werte der Haupthypothesenverteilung;

  • Überprüfen Sie, ob die auf den ursprünglichen Sets berechnete Teststatistik in einen kritischen Bereich der Haupthypothesenverteilung fällt. Wenn dies der Fall ist, lehnen Sie die Haupthypothese ab.

Lassen Sie uns diesen Ansatz im Code anwenden:

Aufgabe

Swipe to start coding

Ihre Aufgabe ist es, den oben beschriebenen Resampling-Algorithmus zu implementieren und die entsprechende Hypothese auf zwei Datensätzen zu überprüfen:

  1. Verwenden Sie die Methode np.concatenate(), um die Arrays X und Y zu verbinden.
  2. Verwenden Sie die Methode .shuffle() des Moduls np.random, um die Daten im zusammengeführten Array zu mischen.
  3. Verwenden Sie die Methode np.quantile(), um den linken kritischen Wert zu berechnen.
  4. Verwenden Sie die erstellte Funktion resampling_test(), um die Hypothese auf generierten Daten zu überprüfen.

Lösung

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import chi2, expon

def resampling_test(X, Y, N, alpha):
# Concatenate both arrays into one big array
data = np.concatenate((X, Y))
X_length = len(X)

# Calculate the observed test statistic on initial sets X and Y
obs_stat = np.mean(X) - np.mean(Y)

# Create an array to store permutation test statistics
perm_stats = np.zeros(N)

# Perform N permutations
for i in range(N):
# Shuffle the entire array
np.random.shuffle(data)
# Split the shuffled array into two groups
perm_X = data[:X_length]
perm_Y = data[X_length:]
# Calculate the test statistic for this permutation
perm_stat = np.mean(perm_X) - np.mean(perm_Y)
perm_stats[i] = perm_stat

# Calculate the two-tailed critical values of the main hypothesis distribution
crit_l = np.quantile(perm_stats, alpha / 2)
crit_r = np.quantile(perm_stats, 1 - alpha / 2)

# Plot the distribution of permutation test statistics and critical areas
plt.hist(perm_stats, bins=30)
plt.axvline(x=crit_l, color='r', linestyle='--', label='Critical values')
plt.axvline(x=crit_r, color='r', linestyle='--')
plt.axvline(x=obs_stat, color='g', linestyle='-', label='Observed statistic')

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 4. Kapitel 5
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import chi2, expon

def resampling_test(X, Y, N, alpha):
# Concatenate both arrays into one big array
data = np.___((X, Y))
X_length = len(X)

# Calculate the observed test statistic on initial sets X and Y
obs_stat = np.mean(X) - np.mean(Y)

# Create an array to store permutation test statistics
perm_stats = np.zeros(N)

# Perform N permutations
for i in range(N):
# Shuffle the entire array
np.random.___(data)
# Split the shuffled array into two groups
perm_X = data[:X_length]
perm_Y = data[X_length:]
# Calculate the test statistic for this permutation
perm_stat = np.mean(perm_X) - np.mean(perm_Y)
perm_stats[i] = perm_stat

# Calculate the two-tailed critical values of the main hypothesis distribution
crit_l = np.___(perm_stats, alpha / 2)
crit_r = np.quantile(perm_stats, 1 - alpha / 2)

# Plot the distribution of permutation test statistics and critical areas
plt.hist(perm_stats, bins=30)
plt.axvline(x=crit_l, color='r', linestyle='--', label='Critical values')
plt.axvline(x=crit_r, color='r', linestyle='--')
plt.axvline(x=obs_stat, color='g', linestyle='-', label='Observed statistic')

Fragen Sie AI

expand
ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

some-alt