import-Befehl¶

In [ ]:
import pandas as pd                   # Daten einlesen und verarbeiten
import matplotlib.pyplot as plt       # klassische Plots (Scatter, Histogramm)
import seaborn as sns                 # erweiterte Plots (regplot, kde)
import numpy as np                    # mathematische Berechnungen (z. B. R², linspace)
from scipy.stats import pearsonr, gaussian_kde  # Pearson-Korrelation, Dichte
import plotly.express as px           # interaktive Plots (z. B. mit Trendlinie)


# Excel-Datei laden
pearson = pd.read_excel("pearson.xlsx")

# Vorschau anzeigen
pearson.head()
Out[ ]:
Teilnehmer IQ Projekterfolg
0 1 82 42
1 2 83 43
2 3 85 45
3 4 86 46
4 5 90 50

Hypothese¶

H1: Es gibt einen Zusammenhang zwischen IQ und Projekterfolg.

H0: Es gibt keinen Zusammenhang zwischen IQ und Projekterfolg.

Voraussetzungen¶

Die Variablen sind mindestens intervallskaliert -> Ja, beide Varibalen sind metrisch.
Die Variablen sind normalverteilt (n>30)-> siehe Histogramm
Der untersuchte Zusammenhang zwischen den Variablen muss linear sein -> siehe Streudiagramm

Normalverteilung¶

Es ist zu überprüfen, ob die Daten normalverteilt sind.

In [4]:
# Histogramme für Normalverteilung
pearson["IQ"].hist(bins=10, color="skyblue", edgecolor="black")
plt.title("Histogramm IQ")
plt.xlabel("IQ")
plt.ylabel("Häufigkeit")
plt.show()
No description has been provided for this image

Die Variable IQ ist anscheinend normalverteilt. Sie zeigt eine bauchige Mitte und geht an den Rändern gegen null. Auch die Stichprobengröße mit n>30 spricht dafuer. Die Variable IQ ist intervallskaliert, da es sich um eine metrische Größe mit gleichmäßigen Abständen handelt.

In [ ]:
# Daten aus einer Spalte extrahieren
data = pearson["Projekterfolg"]

# Histogramm (dichtebasiert)
plt.hist(data, bins=10, color="salmon", edgecolor="black", density=True)

# Dichtekurve berechnen
kde = gaussian_kde(data)
x_vals = np.linspace(data.min(), data.max(), 200)
plt.plot(x_vals, kde(x_vals), color="darkred", linewidth=2)

plt.title("Histogramm mit Dichtekurve: Projekterfolg")
plt.xlabel("Projekterfolg")
plt.ylabel("Dichte")
plt.show()
No description has been provided for this image

Die Variable Projekterfolg ist anscheinend normalverteilt. Sie zeigt eine bauchige Mitte und geht an den Rändern gegen null. Auch die Stichprobengröße mit n>30 spricht dafuer. Die Variable Projekterfolg ist intervallskaliert, da es sich um eine metrische Größe mit gleichmaessigen Abständen handelt.

Grafische Veranschaulichung des Zusammenhangs (Streudiagramm)¶

Um visuell zu prüfen, ob ein linearer Zusammenhang vorliegen könnte, empfiehlt es sich vorab ein Streudiagramm erstellen.

Es gibt viele Wege, die nach Rom führen. Hier sind drei:

1. Variante¶

In [16]:
#import matplotlib.pyplot as plt

plt.scatter(pearson["IQ"], pearson["Projekterfolg"], color="blue", alpha=0.6)
plt.title("Streudiagramm mit Matplotlib")
plt.xlabel("IQ")
plt.ylabel("Projekterfolg")
plt.grid(True)
plt.show()
No description has been provided for this image

2. Variante¶

In [18]:
#import seaborn as sns

sns.regplot(data=pearson, x="IQ", y="Projekterfolg", ci=None, scatter_kws={"color": "green"}, line_kws={"color": "red"})
plt.title("Streudiagramm mit Seaborn (inkl. Regressionslinie)")
plt.xlabel("IQ")
plt.ylabel("Projekterfolg")
plt.show()
No description has been provided for this image

3. Variante¶

In [31]:
import plotly.express as px

fig = px.scatter(pearson, x="IQ", y="Projekterfolg",
                 title="Streudiagramm mit Plotly (interaktiv)",
                 labels={"IQ": "IQ", "Projekterfolg": "Projekterfolg"},
                 trendline="ols")  # fügt Regressionslinie hinzu
fig.show()

Das Streudiagramm in Abbildung zeigt eine tendenziell positive lineare Beziehung zwischen den beiden Variablen. Das heisst, die beiden Variablen korrelieren vermutlich. Da die Korrelationsanalyse einen ungerichteten Zusammenhang untersucht, lässt er sich auf zwei Weisen ausformulieren: Je höher der IQ, desto höher ist der Projekterfolg, oder je höher der Projekterfolg, desto höher ist der IQ.

Deskriptive Statistik¶

Für die deskriptive Statistik empfiehlt es sich das Package "psych" zu verwenden.

In [23]:
pearson[["IQ", "Projekterfolg"]].agg(["count", "mean", "std", "min", "median", "max", "var"])
Out[23]:
IQ Projekterfolg
count 104.000000 104.000000
mean 102.471154 62.384615
std 11.388085 11.519766
min 71.000000 31.000000
median 103.000000 63.000000
max 125.000000 85.000000
var 129.688480 132.705004

Abbildung können die Mittelwerte und Standardabweichungen der Variablen IQ und Projekterfolg abgelesen werden. Im Mittel liegt die IQ der Jugendlichen bei 102.47 (SD = 11.39,n=104)). Der Projekterfolg gemessen in Prozent liegt durchschnittlich bei 62.38% (SD = 11.52, n=104) in der Einzelarbeit.

Ergebnisse der Korrelationsanalyse¶

In [27]:
# Pearson-Korrelation berechnen
r, p = pearsonr(pearson["IQ"], pearson["Projekterfolg"])

# Formatierter Text
print(f"Es besteht ein signifikanter linearer Zusammenhang zwischen IQ und Projekterfolg (r = {r:.3f}, p = {p:.4f}).")
Es besteht ein signifikanter linearer Zusammenhang zwischen IQ und Projekterfolg (r = 0.988, p = 0.0000).

Der R-Output in Abbildung gibt den Korrelationskoeffizienten sowie den p-Wert (Signifikanz) und die Stichprobengrösse n wieder. Es wird ersichtlich, dass ein Zusammenhang vorliegt zwischen IQ und Projekterfolg (r = .9875, p < 2.2e-16, n = 104). Da r einen positiven Wert aufweist, kann von einem positiven linearen und signifikanter Zusammenhang zwischen IQ und Projekterfolg ausgegangen werden. Das bedeutet: Je höher der IQ, detso besser war das Projektergebnis.

Hinweis: "p-value < 2.2e-16": Diese Zahle hat umgrechnet 16 Nullen 0.000000000000000022. Aus der deskriptive Statistik kannst die Anzahl der Datensatze entnehmen.

Berechnung des Bestimmtheitsmasses¶

Aus der Korrelation lässt sich durch Quadrieren das Bestimmtheitsmass berechnen:

$Bestimmtheitsmaß = r^2 *100 = {0.9875508}^2*100$

In [ ]:
# Bestimmtheitsmaß berechnen
r_squared = (r ** 2) * 100
print(f"Das Bestimmtheitsmaß liegt bei {r_squared:.2f} %.")
Das Bestimmtheitsmaß liegt bei 97.53 %.

Wird dieser Wert mit 100 multipliziert, so ergibt sich ein Prozentwert. Dieser gibt an, welcher Anteil der Varianz in beiden Variablen durch gemeinsame Varianzanteile determiniert wird. Für das vorliegende Beispiel beträgt der Anteil der gemeinsamen Varianz 97.52%.

Berechnung der Effektstärke¶

Um die Bedeutsamkeit eines Ergebnisses zu beurteilen, werden Effektstärken berechnet. Im Beispiel ist die Korrelation der beiden Variablen signifikant, doch es stellt sich die Frage, ob der Zusammenhang gross genug ist, um ihn als bedeutend einzustufen. Der Korrelationskoeffizient r von Bravais-Pearson stellt selbst ein Mass für die Effektstärke dar.

Um zu bestimmen, wie gross der gefundene Zusammenhang ist, kann man sich an der Einteilung von Cohen (1992) orientieren:

\begin{align} \text{Schwacher Effekt: } 0.10 &< ||r|| < 0.30 \\ \text{Schwacher bis mittlerer Effekt: } 0.30 &= ||r|| \\ \text{Mittlerer Effekt: } 0.30 &< ||r|| < 0.50 \\ \text{Mittlerer bis starker Effekt: }0.50 &= ||r|| \\ \text{Starker Effekt: } 0.50 &< ||r|| \end{align}

In [30]:
print(f" r  ist {r:.3f}")
 r  ist 0.988

Damit entspricht ein Korrelationskoeffizient(r) von .9875 einem starken Effekt.

Aussage¶

Der IQ und der Projekterfolg korrelieren signifikant (r = .9875, p <2.2e-16, n = 104). Je höher der IQ eines Jugendlichen, desto besser ist das Projektergebnis. 97.52%. der Streuung der gemeinsamen Varianz kann durch IQ und Projekterfolg erklärt werden. Dabei handelt es sich nach Cohen (1992) um einen starken Effekt. H0 kann verworfen werden.