Kursinhalt
Fortgeschrittene Wahrscheinlichkeitstheorie
Fortgeschrittene Wahrscheinlichkeitstheorie
Testen der Hypothese der Unabhängigkeit von Zwei Zufallsvariablen
In realen Aufgaben ist es oft notwendig, die Abhängigkeit zwischen verschiedenen Merkmalen zu analysieren. Zum Beispiel:
-
Geschlecht und Parteizugehörigkeit: Wir können testen, ob es eine Beziehung zwischen Geschlecht und Parteizugehörigkeit gibt;
-
Bildungsniveau und Arbeitszufriedenheit: Wir können testen, ob es eine Beziehung zwischen Bildungsniveau und Arbeitszufriedenheit gibt;
-
Alter und Wahlverhalten: Wir können testen, ob es eine Beziehung zwischen Alter und Wahlverhalten gibt;
-
Einkommensniveau und bevorzugtes Verkehrsmittel: Wir können testen, ob es eine Beziehung zwischen Einkommensniveau und bevorzugtem Verkehrsmittel gibt.
Aber wie können wir beweisen, dass die Variablen unabhängig sind, wenn wir es nicht mit der gesamten Population, sondern nur mit kleinen Stichproben der entsprechenden Variablen zu tun haben? Dafür können wir das Chi-Quadrat-Unabhängigkeitskriterium verwenden.
Hypothesenformulierung
Wir können dieses Kriterium verwenden, um die folgende Hypothese zu testen:
Haupthypothese: Die entsprechenden Zufallsvariablen sind voneinander unabhängig.
Alternative Hypothese: Es gibt einige Beziehungen zwischen den betrachteten Zufallsvariablen
Kontingenztabelle
Um den Chi-Quadrat-Unabhängigkeitstest zu verwenden, müssen wir einige Datenvorverarbeitungen durchführen - eine Kontingenztabelle erstellen. Eine Kontingenztabelle, auch als Kreuztabelle bekannt, ist eine Tabelle, die verwendet wird, um kategorische Daten von zwei oder mehr Variablen zusammenzufassen. Die Tabelle präsentiert die gemeinsame Verteilung der Variablen, einschließlich der Häufigkeit oder Anzahl jeder Kombination von Kategorien für die Variablen. Schauen wir uns das Beispiel an:
import pandas as pd # Example data data = {'Gender': ['M', 'F', 'M', 'F', 'M', 'F', 'M', 'F', 'F', 'M'], 'Smoker': ['No', 'No', 'No', 'No', 'Yes', 'No', 'No', 'Yes', 'Yes', 'Yes']} df = pd.DataFrame(data) # Create contingency table using pandas crosstab cont_table = pd.crosstab(df['Gender'], df['Smoker']) print(cont_table)
Die Kontingenzmatrix für kontinuierliche Zufallsvariablen wird etwas anders aufgebaut. Wir teilen unsere Werte zunächst in mehrere diskrete Teilmengen auf und erstellen erst dann die Kontingenzmatrix, zum Beispiel:
import pandas as pd # Create a sample dataset data = pd.DataFrame({'age': [22, 45, 32, 19, 28, 57, 39, 41, 36, 24], 'income': [50000, 60000, 70000, 80000, 90000, 100000, 110000, 120000, 130000, 140000]}) # Define the bins for age bins = [18, 25, 35, 45, 55, 65, 75] # Create a new column with the age bins data['age_group'] = pd.cut(data['age'], bins) # Create a new column with the income bins splitted on 3 equal parts data['income_group'] = pd.cut(data['income'], 3) # Create a contingency table contingency_table = pd.crosstab(data['age_group'], data['income_group']) print(contingency_table)
Chi-Quadrat-Unabhängigkeitskriterium in Python
Schließlich verwenden wir das Chi-Quadrat-Unabhängigkeitskriterium, um die Unabhängigkeit an einem realen Datensatz zu überprüfen.
import pandas as pd from scipy.stats import chi2_contingency data = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/Advanced+Probability+course+media/heart.csv') # Calculate correlation between target and other features for i in data.columns: print('Covariance between ', i, ' and target is:', data.corr()['target'].loc[i]) # If the correlation is not close to zero than features have some linear relationships # fbs and target have very small correlation so there are no linear dependencies between them # Let's check hypothesis that fbs and hear disease occurrence are independent # Choose significance level alpha = 0.05 # Contingency table for discrete target and fbs cont_table = pd.crosstab(data['fbs'], data['target']) # Provide chi2 independence test chi2_stat, p_val, dof, expected = chi2_contingency(cont_table, correction=True) if p_val < alpha: print('\n Fbs and heart disease occurrence are dependant') else: print('\n Fbs and heart disease occurrence are independant')
Danke für Ihr Feedback!