import-Befehle¶
import pandas as pd
import matplotlib.pyplot as plt
from scipy.stats import binomtest
Daten einlesen¶
#import pandas as pd
Binomialtest = pd.read_excel("Binomialtest.xlsx")
Datenüberblick¶
Binomialtest.head()
ID | Banner | |
---|---|---|
0 | 1 | 1 |
1 | 2 | 1 |
2 | 3 | 1 |
3 | 4 | 1 |
4 | 5 | 1 |
Als Faktor codiert & Zusammenfassung¶
# In Python wird 'as.factor' nicht benötigt
# Statt summary(): describe()
print(Binomialtest.describe(include='all'))
ID Banner count 1606.000000 1606.000000 mean 803.500000 0.704857 std 463.756581 0.456249 min 1.000000 0.000000 25% 402.250000 0.000000 50% 803.500000 1.000000 75% 1204.750000 1.000000 max 1606.000000 1.000000
Struktur des Datensatzes¶
Binomialtest.info()
<class 'pandas.core.frame.DataFrame'> RangeIndex: 1606 entries, 0 to 1605 Data columns (total 2 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 ID 1606 non-null int64 1 Banner 1606 non-null int64 dtypes: int64(2) memory usage: 25.2 KB
Hinweis: Wie der Funktion "info" zu entnehmen ist, wird der Banner als int codiert.
Voraussetzungen des Binomialtests¶
Die Variable ist dichotom (zwei Ausprägungen). → "Banner" ist dichotom. rot vs. blau
Grundlegende Konzepte¶
Der Binomialtest testet, ob die Verteilung der Häufigkeiten einer binären Variable einer erwarteten Verteilung entspricht.
Zu beachten ist, dass die Variable nur dichotome (= binäre) Ausprägungen haben darf.
Zum Beispiel können die Variablen folgend aussehen: 0 und 1, "Mann" und "Frau", "klein" und "groß", "trifft zu" und "trifft nicht zu" und so weiter.
Die Fragestellung des Binomialtests wird verkürzt auf:
"Unterscheidet sich die beobachtete Wahrscheinlichkeit des Auftretens von der theoretisch erwarteten Auftretenswahrscheinlichkeit?"
Deskriptive Statistiken¶
print(Binomialtest.describe(include='all'))
ID Banner count 1606.000000 1606.000000 mean 803.500000 0.704857 std 463.756581 0.456249 min 1.000000 0.000000 25% 402.250000 0.000000 50% 803.500000 1.000000 75% 1204.750000 1.000000 max 1606.000000 1.000000
Hätten gleich viele Probanden den blauen sowie den roten Banner geklickt, so läge der Mittelwert bei 0.5 ((0+1)/2=0.5).
Allerdings zeigt sich jedoch, dass der Mittelwert bei 0.7 liegt und damit tendenziell Richtung Ausprägungskategorie “Rot” geht.
counts = Binomialtest["Banner"].value_counts().sort_index()
# Wenn 0 = Blau und 1 = Rot:
print(f"Blau (0): {counts.get(0, 0)} Klicks")
print(f"Rot (1): {counts.get(1, 0)} Klicks")
Blau (0): 474 Klicks Rot (1): 1132 Klicks
Insgesamt haben 1132 Personen den roten Banner geklickt, während nur 474 Personen den blauen Banner geklickt haben.
Hypothese¶
H1: Der rote Banner wird wahrscheinlicher besser geklickt.
H0: Der rote Banner wird wahrscheinlicher schlechter oder gleich gut geklickt.
Kreisdiagramm¶
#import matplotlib.pyplot as plt
mytable = Binomialtest['Banner'].value_counts()
plt.pie(mytable,
labels=["Blau", "Rot"],
colors=["deepskyblue", "tomato"],
autopct="%1.1f%%")
plt.title("Kreisdiagramm zur Bannerveteilung")
plt.show()
Wie dem Kreisdiagramm zu entnehmen ist, wird der rote Banner besser/ häufiger geklickt als der Blaue.
Ergebnisse des Binomialtests¶
from scipy.stats import binomtest
laenge = len(Binomialtest)
print(f"Anzahl der Datensätze: {laenge}")
# 1132 Rot, 1606 gesamt
ergebnis = binomtest(1132, n=laenge, p=0.5, alternative="greater")
print(ergebnis)
Anzahl der Datensätze: 1606 BinomTestResult(k=1132, n=1606, alternative='greater', statistic=0.7048567870485679, pvalue=1.877760613085354e-62)
1606 Banner werden geklickt, von denen 1132 rote waren und 474 blaue.
Wie das Ergebnis der Summary zeigt, haben 1132 der 1606 Probanden sich für den roten Banner entschieden.
Die beobachtete prozentuale Häufigkeit für den roten Banner liegt also bei 1132/1606, bzw. 70.49 % (0.70485%) .
Dieser Wert ist höher als der erwartete Wert von 0.5.
Die statistische Signifikanz dieses Unterschieds ist unter “p-value” zu finden.
Der Wert p < 0.05 bedeutet, dass sich die beobachtete Häufigkeit und der erwartete Anteil signifikant unterscheiden (Binomialtest, einseitig, p <0.05, n = 1606).
Eine Aussage¶
Die Probanden klicken signifikant besser die roten Banner gegenüber den blauen Bannern (Binomialtest, einseitig, p < 0.05, n = 1606).
Die Wahrscheinlichkeit, das der rote Banner geklickt wird, liegt bei 70.49 %.
H0 kann verworfen werden.