Die multiple Regression¶

Pakete importieren¶

In [3]:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import statsmodels.api as sm
from statsmodels.stats.outliers_influence import variance_inflation_factor
from statsmodels.stats.stattools import durbin_watson
plt.style.use('default')

Daten einlesen¶

In [4]:
# Daten laden
df = pd.read_excel('M.xlsx')
df.head()
Out[4]:
Besucherzahlen Mitgliedsbeitrag Werbeausgaben Fanartikelverkauf
0 2007 113.0 1500 1250
1 2597 111.0 2000 1200
2 1810 108.0 800 1100
3 2585 112.5 2000 1090
4 2079 111.0 1850 1090

1) Hypothese¶

Nullhypothese (H₀): Alle Regressionskoeffizienten sind gleich null: [ H_0: \beta_1 = \beta_2 = \beta_3 = 0 ] Die unabhängigen Variablen haben gemeinsam keinen Einfluss auf die Besucherzahl. Alternativhypothese (H₁): Mindestens ein Regressionskoeffizient ist ungleich null: [ H_1: \text{Mindestens ein } \beta_j \neq 0 ] Mindestens eine der unabhängigen Variablen beeinflusst die Besucherzahl.

2) Grundlegende Konzepte: Was ist multiple Regression?¶

Die multiple Regression ist ein statistisches Verfahren, mit dem untersucht wird, wie mehrere unabhängige Variablen gemeinsam die Ausprägung einer abhängigen Variablen vorhersagen oder erklären können. Während die einfache lineare Regression nur einen Einflussfaktor betrachtet, analysiert die multiple Regression den Einfluss mehrerer Faktoren gleichzeitig. So kann man zum Beispiel erforschen, wie Mitgliedsbeitrag, Werbeausgaben und Produktqualität zusammen die Verkaufszahlen beeinflussen. Dabei zeigt das Verfahren nicht nur, wie stark jede einzelne Variable die abhängige Variable beeinflusst, sondern auch, wie gut das Gesamtmodell die tatsächlichen Werte vorhersagt. Die multiple Regression wird häufig in Sozialwissenschaften, Wirtschaft und Medizin genutzt, um komplexe Zusammenhänge zwischen verschiedenen Einflussgrößen und einem Ergebnis zu analysieren und fundierte Entscheidungen auf Basis der ermittelten Zusammenhänge zu treffen.

3) Prüfen der Voraussetzungen¶

  • Die abhängige Variable ist intervallskaliert, die unabhängigen Variablen sind intervallskaliert oder als Dummy-Variablen codiert.
  • Unabhängige Variablen (UV):
    • Mitgliedsbeitrag (€)
    • Werbeausgaben (€)
    • Fanartikelverkauf
  • Abhängige Variable (AV):
    • Besucher (Anzahl)
  • Linearität des Zusammenhangs:
    Es wird ein linearer Zusammenhang zwischen der abhängigen und den unabhängigen Variablen modelliert
    (siehe Scatterplot und Pearson-Korrelation)
  • Homoskedastizität:
    Für jeden Wert der unabhängigen Variablen hat der Fehlerwert dieselbe Varianz
    (siehe Homoskedastizität)
  • Unabhängigkeit des Fehlerwerts:
    Die Fehlerwerte hängen nicht voneinander ab
    (siehe Scatterplot und Pearson-Korrelation)
  • Normalverteilung des Fehlerwerts:
    Die Fehlerwerte sind näherungsweise normalverteilt
    (siehe Histogramm)
  • Keine Multikollinearität:
    Die unabhängigen Variablen korrelieren nicht zu stark miteinander
    (siehe Multikollinearität)

4) Boxplot¶

In [ ]:
fig, axes = plt.subplots(1,4, figsize=(12,4))
sns.boxplot(y=df['Fanartikelverkauf'], ax=axes[0]).set_title('Boxplot Fanartikelverkauf')
sns.boxplot(y=df['Besucherzahlen'], ax=axes[1]).set_title('Boxplot Besucher')
sns.boxplot(y=df['Werbeausgaben'], ax=axes[2]).set_title('Boxplot Werbeausgaben')
sns.boxplot(y=df['Mitgliedsbeitrag'], ax=axes[3]).set_title('Boxplot Mitgliedsbeitrag')
plt.tight_layout()
plt.show()
No description has been provided for this image

Keine Ausreißer zu erkennen.

5) Deskriptive Statistik¶

In [6]:
df.describe().T
Out[6]:
count mean std min 25% 50% 75% max
Besucherzahlen 36.0 1877.888889 350.520982 1172.0 1638.25 1829.0 2033.500 2604.0
Mitgliedsbeitrag 36.0 110.384722 1.609650 107.0 109.00 110.0 111.625 113.0
Werbeausgaben 36.0 1274.444444 481.500301 460.0 837.50 1300.0 1620.000 2000.0
Fanartikelverkauf 36.0 905.277778 159.472095 600.0 787.50 895.0 1037.500 1250.0

Die Tabelle gibt einen Überblick über die deskriptiven Statistiken von fünf Variablen aus dem Datensatz. Für die abhängige Variable Besucher lag der Mittelwert bei M = 1877.89, mit einer Standardabweichung von SD = 350.52 (n = 36). Die Besucherzahlen variierten dabei zwischen 1172 und 2604. Der Mitgliedsbeitrag (Mitgliedsbeitrag) zeigte einen Mittelwert von M = 110.38 (SD = 1.61, n = 36), mit Werten von 107 bis 113. Für das Werbebudget (Werbeausgaben) wurde ein Mittelwert von M = 1274.44 (SD = 481.50, n = 36) bei einer Spannweite von 460 bis 2000 beobachtet. Die Variable Fanartikelverkauf hatte einen Mittelwert von M = 905.28 (SD = 159.47, n = 36), mit Werten zwischen 600 und 1250. Die ID-Variable dient lediglich der Identifikation der einzelnen Fälle und ist für die inhaltliche Analyse nicht relevant.

6) Scatterplot und Pearson¶

Ein lineares Modell geht davon aus, dass der Zusammenhang zwischen der abhängigen Variable und jeder unabhängigen Variable linear ist – und zwar unter der Kontrolle aller weiteren unabhängigen Variablen. Bei multipler Regression bedeutet das: Die Beziehung zwischen einer unabhängigen Variable und der Zielgröße sollte auch dann linear sein, wenn man die Effekte der anderen Einflussgrößen berücksichtigt. Diese Bedingung lässt sich jedoch nicht allein mit einem einfachen Streudiagramm zwischen abhängiger und einer unabhängigen Variable prüfen. Im Gegensatz zur einfachen Regression können weitere Einflussfaktoren das Verhältnis verfälschen, sodass die tatsächliche Beziehung komplexer ist. Ein einfaches Streudiagramm bietet daher nur einen groben ersten Anhaltspunkt, ob eine lineare Beziehung vorliegen könnte, und wird häufig als erster, orientierender Schritt genutzt. Für eine genaue Überprüfung sind weiterführende grafische Methoden erforderlich.

In [7]:
sns.pairplot(df[['Mitgliedsbeitrag','Fanartikelverkauf','Werbeausgaben','Besucherzahlen']], diag_kind='kde')
Out[7]:
<seaborn.axisgrid.PairGrid at 0x13af53740>
No description has been provided for this image
In [8]:
corr = df[['Mitgliedsbeitrag','Fanartikelverkauf','Werbeausgaben','Besucherzahlen']].corr()
sns.heatmap(corr, annot=True, cmap='coolwarm', vmin=-1, vmax=1)
Out[8]:
<Axes: >
No description has been provided for this image

Die Streudiagramm-Matrix liefert einen ersten Eindruck davon, wie die abhängige Variable mit den einzelnen unabhängigen Variablen zusammenhängt. Dabei wird sichtbar, dass zwischen den unabhängigen Variablen und der Zielgröße zumindest auf den ersten Blick jeweils eine lineare Beziehung denkbar ist: Die Besucherzahl nimmt mit höheren Fanartikelverkäufen und einem größeren Werbebudget offenbar zu. Der Zusammenhang mit dem TicketMitgliedsbeitrag erscheint dagegen weniger ausgeprägt. Um die Annahme der Linearität genauer zu überprüfen, empfiehlt es sich, für jede unabhängige Variable ein spezielles Streudiagramm zu erstellen, das sogenannte Component-plus-residual-Plot. Damit lässt sich erkennen, ob die Beziehung tatsächlich linear ist oder ob möglicherweise eine andere Form des Zusammenhangs vorliegt. Alternativ können auch partielle Regressionsdiagramme verwendet werden, die für jede Variable die Beziehung zum Rest des Modells darstellen.

In [9]:
X = df[['Mitgliedsbeitrag','Werbeausgaben','Fanartikelverkauf']]
X = sm.add_constant(X)
y = df['Besucherzahlen']
model = sm.OLS(y, X).fit()
fig = sm.graphics.plot_ccpr(model, 'Fanartikelverkauf')
No description has been provided for this image

Das partielle Regressionsdiagramm für Fanartikelverkauf zeigt auf der Y-Achse das Residuum, das entsteht, wenn die Variable Besucher auf alle unabhängigen Variablen außer Fanartikelverkauf regressiert wird. Auf der X-Achse ist das Residuum dargestellt, das übrig bleibt, wenn Fanartikelverkauf auf alle anderen unabhängigen Variablen regressiert wird. Das bedeutet: Es wird jeweils der Teil betrachtet, der durch die anderen unabhängigen Variablen nicht erklärt werden kann. Diese beiden Residuen werden gegeneinander aufgetragen. Zeigen die partiellen Regressionsdiagramme für alle unabhängigen Variablen eine lineare Beziehung, kann davon ausgegangen werden, dass die Linearitätsvoraussetzung erfüllt ist. In Abbildung 4 ist dies für Fanartikelverkauf der Fall. Auch bei den anderen unabhängigen Variablen zeigt sich diese Linearität, was aus Gründen der Übersichtlichkeit hier jedoch nicht weiter dargestellt wird.

7) Homoskedastizität¶

Homoskedastizität bedeutet, dass die Fehler für jeden Wert der unabhängigen Variablen eine konstante Varianz aufweisen. Das wird meist anhand eines Streudiagramms überprüft, in dem die Residuen gegen die vorhergesagten Werte aufgetragen werden. Die Voraussetzung ist erfüllt, wenn sich die Fehlerwerte über den gesamten Wertebereich der Vorhersagen zufällig und ohne erkennbares Muster verteilen und ihre Streuung in etwa gleich bleibt. Falls die Streuung der Fehler nicht konstant ist, spricht man von Heteroskedastizität. In solchen Fällen erkennt man häufig ein bestimmtes Muster im Streudiagramm, beispielsweise eine trichterförmige oder trompetenartige Ausprägung.

In [10]:
zpred = (model.fittedvalues - model.fittedvalues.mean())/model.fittedvalues.std()
sres = model.get_influence().resid_studentized_internal
plt.scatter(zpred, sres, color='darkblue')
plt.axhline(0, color='black')
plt.xlabel('Standardisierter geschätzter Wert')
plt.ylabel('Standardisiertes Residuum')
plt.title('Streudiagramm der Residuen')
plt.show()
No description has been provided for this image

Neben der visuellen Beurteilung gibt es auch verschiedene statistische Tests, mit denen Homoskedastizität geprüft werden kann, zum Beispiel den Breusch-Pagan-Test, den Cook-Weisberg-Test oder den White-Test. Wird bei diesen Tests die Nullhypothese nicht verworfen, spricht das für Homoskedastizität. Das Ergebnis gilt als unproblematisch, wenn der p-Wert größer als 0,05 ist. Wird dieser Wert nicht unterschritten, kann davon ausgegangen werden, dass die Annahme der Homoskedastizität erfüllt ist.

8) Unabhängigkeit des Fehlerwerts¶

Für die multiple Regression ist es wichtig, dass die Fehler verschiedener Beobachtungen unabhängig voneinander sind. Das bedeutet, dass die Fehlerwerte nicht miteinander in Verbindung stehen dürfen und keine systematischen Muster aufweisen, wie zum Beispiel zeitliche oder räumliche Abfolgen. Werden Abhängigkeiten festgestellt, kann dies beispielsweise an mehrfachen Messungen innerhalb derselben Gruppe oder an wiederkehrenden Zeitpunkten liegen. Treten solche Abhängigkeiten auf, kann die Annahme der Unabhängigkeit verletzt sein, was sich meist durch auffällige Muster in den Residuen äußert. Bei unabhängigen Fehlern sind dagegen keine Regelmäßigkeiten erkennbar. Ist dies der Fall, kann davon ausgegangen werden, dass die Voraussetzung erfüllt ist. Neben der visuellen Beurteilung gibt es auch statistische Tests zur Überprüfung der Unabhängigkeit der Fehler, wie etwa den Durbin-Watson-Test. Ein Wert nahe 2 deutet darauf hin, dass keine Autokorrelation vorliegt, während Werte nahe 0 oder 4 auf eine starke Abhängigkeit der Fehlerwerte hindeuten.

9) Normalverteilung des Fehlerwerts¶

Eine weitere Voraussetzung ist, dass die Fehlerwerte annähernd normalverteilt sind. Dies lässt sich oft gut anhand eines Histogramms der standardisierten Residuen beurteilen. Im Idealfall zeigt das Histogramm eine glockenförmige Verteilung. Weichen die Fehler stark von der Normalverteilung ab, zum Beispiel indem sie zweigipflig (bimodal) verteilt sind, kann dies problematisch für die Interpretation der Regressionsanalyse sein. Kleinere Abweichungen werden häufig als unkritisch betrachtet.

In [11]:
plt.hist(sres, bins=10, color='lightblue')
plt.title('Verteilung der Fehlerresiduen')
plt.xlim(-3,3)
plt.ylim(0,12)
plt.show()
No description has been provided for this image

10) Keine Multikollinearität¶

Für die multiple Regression ist es wesentlich, dass die unabhängigen Variablen nicht in einem starken linearen Zusammenhang zueinander stehen. Das bedeutet, keine unabhängige Variable darf sich durch eine Linearkombination der anderen vollständig erklären lassen. In der Praxis sind kleine Korrelationen normal, doch eine zu große Multikollinearität führt dazu, dass die Schätzung der Regressionskoeffizienten unsicher wird. Dann kann es passieren, dass eigentlich wichtige Einflussgrößen statistisch unauffällig erscheinen. Zur Überprüfung von Multikollinearität werden zwei Kennzahlen genutzt: Toleranzwert und Varianzinflationsfaktor (VIF). Beide Größen geben Auskunft darüber, wie sehr eine unabhängige Variable von den übrigen abhängt. Sie stehen in einem Kehrwertverhältnis zueinander. Toleranzwert: $$ T_j = 1 - R_j^2 $$ Hierbei ist ( R_j^2 ) das Bestimmtheitsmaß, das angibt, wie gut sich die Variable ( x_j ) durch die anderen unabhängigen Variablen erklären lässt. Varianzinflationsfaktor (VIF): $$ \text{VIF}_j = \frac{1}{T_j} $$

Faustregel zur Beurteilung:¶

  • Toleranzwert: sollte nicht kleiner als 0,10 sein
  • VIF: sollte nicht größer als 10 sein
In [14]:
vif_df = pd.DataFrame()
vif_df['Variable'] = X.columns
vif_df['VIF'] = [np.nan] + [variance_inflation_factor(X.values, i) for i in range(1, X.shape[1])]
vif_df['Toleranz'] = 1 / vif_df['VIF']
# Zeile mit NaN in 'VIF' entfernen
vif_df = vif_df.dropna(subset=["VIF"])

vif_df = vif_df.round(3)
vif_df
Out[14]:
Variable VIF Toleranz
1 Mitgliedsbeitrag 1.011 0.990
2 Werbeausgaben 1.021 0.979
3 Fanartikelverkauf 1.017 0.983

Werden diese Grenzwerte nicht eingehalten, liegt eine problematische Multikollinearität vor. In diesem Fall sollte das Regressionsmodell überarbeitet werden – zum Beispiel, indem betroffene Prädiktoren entfernt oder umgewandelt werden. Perfekte Multikollinearität, also eine vollständig lineare Beziehung, wird automatisch erkannt. Bei moderater Multikollinearität ist eine eigenständige Kontrolle und Anpassung notwendig. Sind alle Voraussetzungen akzeptabel erfüllt, kann das Modell weiter interpretiert werden.

11) Signifikanz des Regressionsmodells¶

Um zu bestimmen, ob das Regressionsmodell insgesamt statistisch bedeutsam ist, wird ein F-Test verwendet. Dieser Test prüft, ob die unabhängigen Variablen gemeinsam dazu beitragen, die abhängige Variable besser vorherzusagen, als es der Zufall könnte. Anders gesagt, bewertet der F-Test, ob das gesamte Modell einen signifikanten Erklärungswert für die abhängige Variable besitzt. $$Besucherzahlen=\beta_0+\beta_1\cdot Mitgliedsbeitrag+\beta_2\cdot Werbeausgaben+\beta_3\cdot Verkauf+\epsilon_i$$ Wenn das Ergebnis des F-Tests signifikant ausfällt (typischerweise p < 0,05), zeigt das, dass das Modell insgesamt einen relevanten Beitrag zur Vorhersage leistet. In diesem Fall kann die Analyse weitergeführt werden, beispielsweise indem die einzelnen Einflussgrößen betrachtet werden. Ist das Modell insgesamt nicht signifikant, wäre eine weitere Analyse nicht sinnvoll.

12) Signifikanz der Regressionskoeffizienten und die Regressionsgrade¶

Hier wird die Multiple Regression durchgeführt. Achten Sie auf die Rundung.

In [16]:
coef_df = model.summary2().tables[1]
coef_df = coef_df.rename(columns={'Coef.':'Regressionskoeffizient','Std.Err.':'Standardfehler','t':'t_Wert','P>|t|':'p_Wert'})
coef_df = coef_df[['Regressionskoeffizient','Standardfehler','t_Wert','p_Wert']]
coef_df = coef_df.reset_index().rename(columns={'index':'Variable'})
result_table = coef_df.merge(vif_df, on='Variable', how='left')

result_table = result_table.round(3)
result_table
Out[16]:
Variable Regressionskoeffizient Standardfehler t_Wert p_Wert VIF Toleranz
0 const 5091.213 1820.560 2.797 0.009 NaN NaN
1 Mitgliedsbeitrag -43.227 16.550 -2.612 0.014 1.011 0.990
2 Werbeausgaben 0.537 0.056 9.657 0.000 1.021 0.979
3 Fanartikelverkauf 0.965 0.168 5.759 0.000 1.017 0.983

Im nächsten Schritt wird untersucht, ob die einzelnen Einflussgrößen (Regressionskoeffizienten) tatsächlich einen bedeutsamen Zusammenhang mit der Zielgröße haben. Dafür wird zu jedem einzelnen Koeffizienten ein t-Test durchgeführt. Das Ergebnis zeigt, ob die jeweilige Variable einen messbaren Einfluss auf die Besucherzahl ausübt. Die Ergebnisse der t-Tests zeigen, dass die Regressionskoeffizienten für Mitgliedsbeitrag (t = -2,612, p = 0,014), Werbeausgaben (t = 9,657, p < 0,001), Fanartikelverkauf (t = 5,759, p < 0,001) sowie für die Konstante (Y-Achsenabschnitt; t = 2,797, p = 0,009) jeweils statistisch signifikant sind. Ein signifikanter Y-Achsenabschnitt bedeutet, dass die Regressionsgerade den Ursprung nicht schneidet. Die signifikanten Koeffizienten der unabhängigen Variablen zeigen, dass diese Faktoren einen relevanten Einfluss auf die Besucherzahl haben. Daraus ergibt sich folgende Regressionsgleichung:

Besucherzahlen = 5091,21 – 43,23 · Mitgliedsbeitrag + 0,54 · Werbeausgaben + 0,97 · Fanartikelverkauf

Die Gleichung macht deutlich, dass der Mitgliedsbeitrag einen negativen Effekt hat: Erhöht sich der Mitgliedsbeitrag um eine Einheit (z. B. in Euro), sinkt die Besucherzahl im Mittel um 43,23 Personen, sofern die anderen Variablen konstant bleiben. Die positiven Koeffizienten für Werbeausgaben und Fanartikelverkauf bedeuten, dass mit jeder zusätzlichen Einheit im Werbebudget oder Fanartikelverkauf steigt die Besucherzahl jeweils um 0,54 bzw. 0,97 Personen steigt, wenn alle anderen Einflussgrößen gleich bleiben.

13) Modellgüte¶

Das Bestimmtheitsmaß R² ist eine Kennzahl, die beschreibt, wie gut eine Regressionsanalyse die beobachteten Daten wiedergibt. Es zeigt an, welcher Anteil der Gesamtschwankung der abhängigen Variable durch die gewählten Einflussgrößen erklärt werden kann. Ein R²-Wert von 0 bedeutet, dass das Modell keine Vorhersagekraft besitzt; ein Wert von 1 steht für eine perfekte Erklärung der Daten. Werte näher an 1 deuten also darauf hin, dass das Modell sehr gut geeignet ist, die beobachteten Zusammenhänge abzubilden. Bei der multiplen Regression ist zu beachten, dass R² allein oft zu optimistisch ausfällt, weil es bei jeder zusätzlichen unabhängigen Variable automatisch steigt – selbst wenn diese keinen wirklichen Mehrwert bietet. Aus diesem Grund wird häufig das angepasste (korrigierte) R² berichtet. Dieses korrigiert den Wert nach unten, falls unnötig viele Einflussgrößen berücksichtigt werden, und ist dadurch ein zuverlässigeres Maß für die Modellgüte.

In [17]:
R = np.sqrt(model.rsquared)
R2 = model.rsquared
adjR2 = model.rsquared_adj
SE = np.sqrt(model.scale)
dw_val = durbin_watson(model.resid)
pd.DataFrame({'R':[round(R,3)],'R_Quadrat':[round(R2,3)],'Korrigiertes_R_Quadrat':[round(adjR2,3)],'Standardfehler_des_Schätzers':[round(SE,3)],'Durbin_Watson_Statistik':[round(dw_val,3)]})
Out[17]:
R R_Quadrat Korrigiertes_R_Quadrat Standardfehler_des_Schätzers Durbin_Watson_Statistik
0 0.904 0.817 0.8 156.776 2.684

Ein korrigiertes R² von 0,80 besagt zum Beispiel, dass 80 % der Streuung in den Daten durch die gewählten unabhängigen Variablen erklärt werden können.

14) Berechnung der Effektstärke¶

Um zu beurteilen, wie bedeutsam das Ergebnis einer Regression ist, berechnet man oft eine Effektstärke. Auch wenn ein hoher Anteil der Streuung in der Zielgröße erklärt wird, stellt sich die Frage, wie groß dieser Effekt im Vergleich zu typischen Standards einzuschätzen ist. Es existieren verschiedene Maße für die Effektstärke. Zu den gebräuchlichsten zählt das nach Cohen benannte Maß ( f^2 ), das insbesondere für Regressionsanalysen geeignet ist. Damit lässt sich abschätzen, ob der gefundene Zusammenhang schwach, mittel oder stark ist. Die Effektstärke ( f^2 ) kann aus dem Bestimmtheitsmaß ( R^2 ) berechnet werden: $$ f^2 = \frac{R^2}{1 - R^2} $$ wobei:

  • ( f^2 ) die Effektstärke nach Cohen ist
  • ( R^2 ) das Bestimmtheitsmaß der Regression ist Beispiel:
    Angenommen, ( R^2 = 0,80 ), ergibt sich: $$ f^2 = \frac{0,80}{1 - 0,80} = \frac{0,80}{0,20} = 4,0 $$ Zur Einordnung schlägt Cohen (1992) folgende Schwellenwerte vor: [ \begin{align} \text{Schwacher Effekt:} \quad & 0.10 < ||f|| < 0.25 \\ \text{Schwacher bis mittlerer Effekt:} \quad & 0.25 = ||f|| \\ \text{Mittlerer Effekt:} \quad & 0.25 < ||f|| < 0.40 \\ \text{Mittlerer bis starker Effekt:} \quad & 0.40 = ||f|| \\ \text{Starker Effekt:} \quad & 0.40 < ||f|| \end{align} ]
In [18]:
f2 = adjR2/(1 - adjR2)
print(f'Die Effektstärke liegt bei: {f2:.2f}')
Die Effektstärke liegt bei: 4.00

Ein Wert von ( f^2 = 4,0 ) steht damit für einen sehr starken Effekt.

15) Eine Aussage¶

Eine multiple Regressionsanalyse ergab, dass sowohl die Zahl der verkauften Fanartikel, der Mitgliedsbeitrag als auch die Werbeausgaben einen Einfluss auf die Besucherzahl bei Vereinsveranstaltungen haben, F(3,32) = 47,65, p < .001, n = 36. Erhöht sich der Mitgliedsbeitrag um einen Euro, sinkt die Besucherzahl im Durchschnitt um 43,23 Personen. Werden die Werbeausgaben um einen Euro gesteigert, steigt die Besucherzahl um etwa 0,54 Personen. Jeder zusätzlich verkaufte Fanartikel führt durchschnittlich zu 0,97 weiteren Besuchern. Insgesamt erklären diese drei Faktoren 80 % der Streuung in den Besucherzahlen – ein Wert, der gemäß Cohen (1992) auf einen starken Effekt hinweist.