als an NBA Coach? Wie lange dauert ein typischer Coach? Und spielt ihr Teaching -Hintergrund eine Rolle bei der Vorhersage des Erfolgs?
Diese Analyse wurde von mehreren wichtigen Theorien inspiriert. Erstens gab es unter ungezwungenen NBA -Followers eine häufige Kritik, dass Groups die Einstellung von Kandidaten mit früheren NBA -Cheftrainern vorziehen.
Folglich zielt diese Analyse darauf ab, zwei verwandte Fragen zu beantworten. Erstens stimmt es, dass die NBA-Groups Kandidaten häufig mit früheren Erfahrung in der Cheftrainer wieder beseitigen? Und zweitens, gibt es Beweise dafür, dass diese Kandidaten im Vergleich zu anderen Kandidaten unterdurchschnittlich sind?
Die zweite Theorie ist, dass interne Kandidaten (obwohl selten eingestellt) oft erfolgreicher sind als externe Kandidaten. Diese Theorie wurde aus einem Paar Anekdoten abgeleitet. Zwei der erfolgreichsten Coach der NBA -Geschichte, Gregg Popovich aus San Antonio und Erik Spoelstra aus Miami, waren beide interne Mitarbeiter. Es sind jedoch strenge quantitative Nachweise erforderlich, um zu testen, ob diese Beziehung eine größere Stichprobe hält.
Diese Analyse zielt darauf ab, diese Fragen zu untersuchen und den Code bereitzustellen, um die Analyse in zu reproduzieren Python.
Die Daten
Der Code (in einem Jupyter -Pocket book enthalten) und der Datensatz für dieses Projekt sind Hier auf GitHub erhältlich. Die Analyse wurde unter Verwendung von Python in Google Colaboratory durchgeführt.
Eine Voraussetzung für diese Analyse bestand darin, einen Weg zu bestimmen, den Teaching -Erfolg quantitativ zu messen. Ich habe mich für eine einfache Idee entschieden: Der Erfolg eines Trainers wird am besten an der Länge ihrer Amtszeit in diesem Job gemessen. Die Tenure repräsentiert am besten die unterschiedlichen Erwartungen, die einem Coach aufgestellt werden könnten. Von einem von einem konkurrierenden Group eingestellten Coach würde erwartet, dass er Spiele gewinnen und tiefe Playoff -Runs generiert. Ein Coach, der für ein Wiederaufbauteam eingestellt wurde, könnte an der Entwicklung jüngerer Spieler und ihrer Fähigkeit, eine starke Kultur aufzubauen, beurteilt werden. Wenn ein Coach die Erwartungen erfüllt (was auch immer das sein magazine), wird das Group sie in der Nähe halten.
Da es keinen Datensatz mit allen erforderlichen Daten gab, habe ich die Daten selbst von Wikipedia gesammelt. Ich habe jede Teaching-Veränderung außerhalb der Saison von 1990 bis 2021 verzeichnet. Da die primäre Ergebnisvariable die Amtszeit ist, wurden die Teaching-Änderungen in der Saison ausgeschlossen, da diese Coach häufig ein „Zwischen“ -Tag hatten.
Zusätzlich wurden die folgenden Variablen gesammelt:
Variable | Definition |
Group | Das NBA -Group, für das der Coach eingestellt wurde |
Jahr | Das Jahr, in dem der Coach eingestellt wurde |
Coach | Der Identify des Trainers |
Intern? | Ein Indikator, wenn der Coach intern struggle oder nicht – sie haben unmittelbar vor der Einstellung als Cheftrainer in gewisser Weise für die Organisation gearbeitet |
Typ | Der Hintergrund des Trainers. Die Kategorien sind frühere HC (Vorherige NBA -Cheftrainererfahrung), frühere ACs (frühere NBA -Teaching -Erfahrung, aber ohne Cheftrainererfahrung), Faculty (Cheftrainer eines Faculty -Groups), Spieler (ein ehemaliger NBA -Spieler ohne Teaching -Erfahrung), Administration (jemand mit Entrance -Workplace -Erfahrung ohne Trainererfahrung). |
Jahre | Die Anzahl der Jahre, in denen ein Coach in der Rolle beschäftigt struggle. Für Coach, die in der Mitte der Saison abgefeuert wurden, wurde der Wert mit 0,5 gezählt. |
Erstens wird der Datensatz von seinem Standort in Google Drive importiert. Ich konvertiere auch ‚intern?‘ in eine Dummy -Variable und ersetzen Sie „Ja“ durch 1 und „Nein“ durch 0.
from google.colab import drive
drive.mount('/content material/drive')
import pandas as pd
pd.set_option('show.max_columns', None)
#Deliver within the dataset
coach = pd.read_csv('/content material/drive/MyDrive/Python_Files/Coaches.csv', on_bad_lines = 'skip').iloc(:,0:6)
coach('Inner') = coach('Inner?').map(dict(Sure=1, No=0))
coach
Dies druckt eine Vorschau darauf, wie der Datensatz aussieht:

Insgesamt enthält der Datensatz in dieser Zeit 221 Teaching -Mitarbeiter.
Beschreibende Statistik
Erstens grundlegende Zusammenfassung Statistiken werden berechnet und visualisiert, um die Hintergründe von NBA -Cheftrainern zu bestimmen.
#Create chart of teaching background
import matplotlib.pyplot as plt
#Depend variety of coaches per class
counts = coach('Kind').value_counts()
#Create chart
plt.bar(counts.index, counts.values, shade = 'blue', edgecolor = 'black')
plt.title('The place Do NBA Coaches Come From?')
plt.figtext(0.76, -0.1, "Made by Brayden Gerrard", ha="middle")
plt.xticks(rotation = 45)
plt.ylabel('Variety of Coaches')
plt.gca().spines('prime').set_visible(False)
plt.gca().spines('proper').set_visible(False)
for i, worth in enumerate(counts.values):
plt.textual content(i, worth + 1, str(spherical((worth/sum(counts.values))*100,1)) + '%' + ' (' + str(worth) + ')', ha='middle', fontsize=9)
plt.savefig('coachtype.png', bbox_inches = 'tight')
print(str(spherical(((coach('Inner') == 1).sum()/len(coach))*100,1)) + " p.c of coaches are inner.")

Mehr als die Hälfte der Trainereinstellungen struggle zuvor als NBA -Cheftrainer tätig, und quick 90% hatten eine Artwork NBA -Teaching -Erfahrung. Dies beantwortet die erste Frage: NBA -Groups zeigen eine starke Präferenz für erfahrene Cheftrainer. Wenn Sie einmal als NBA -Coach eingestellt werden, ist Ihre Wahrscheinlichkeit, wieder eingestellt zu werden, viel höher. Darüber hinaus sind 13,6% der Mitarbeiter intern und bestätigen, dass Groups nicht häufig aus ihren eigenen Reihen einstellen.
Zweitens werde ich die typische Amtszeit eines NBA -Cheftrainers untersuchen. Dies kann unter Verwendung eines Histogramms sichtbar gemacht werden.
#Create histogram
plt.hist(coach('Years'), bins =12, edgecolor = 'black', shade = 'blue')
plt.title('Distribution of Teaching Tenure')
plt.figtext(0.76, 0, "Made by Brayden Gerrard", ha="middle")
plt.annotate('Erik Spoelstra (MIA)', xy=(16.4, 2), xytext=(14 + 1, 15),
arrowprops=dict(facecolor='black', shrink=0.1), fontsize=9, shade='black')
plt.gca().spines('prime').set_visible(False)
plt.gca().spines('proper').set_visible(False)
plt.savefig('tenurehist.png', bbox_inches = 'tight')
plt.present()
coach.sort_values('Years', ascending = False)
#Calculate some stats with the information
import numpy as np
print(str(np.median(coach('Years'))) + " years is the median teaching tenure size.")
print(str(spherical(((coach('Years') <= 5).sum()/len(coach))*100,1)) + " p.c of coaches final 5 years or much less.")
print(str(spherical((coach('Years') <= 1).sum()/len(coach)*100,1)) + " p.c of coaches final a 12 months or much less.")

Mit der Amtszeit als Erfolgsindikator zeigen die Daten deutlich, dass die große Mehrheit der Coach nicht erfolglos ist. Die mittlere Amtszeit beträgt nur 2,5 Jahreszeiten. 18,1% der Coach dauern eine einzelne Saison oder weniger, und kaum 10% der Coach halten mehr als 5 Spielzeiten.
Dies kann auch als Diagramm zur Überlebensanalyse angesehen werden, um den Abfall zu verschiedenen Zeitpunkten zu sehen:
#Survival evaluation
import matplotlib.ticker as mtick
lst = np.arange(0,18,0.5)
surv = pd.DataFrame(lst, columns = ('Interval'))
surv('Quantity') = np.nan
for i in vary(0,len(surv)):
surv.iloc(i,1) = (coach('Years') >= surv.iloc(i,0)).sum()/len(coach)
plt.step(surv('Interval'),surv('Quantity'))
plt.title('NBA Coach Survival Charge')
plt.xlabel('Teaching Tenure (Years)')
plt.figtext(0.76, -0.05, "Made by Brayden Gerrard", ha="middle")
plt.gca().yaxis.set_major_formatter(mtick.PercentFormatter(1))
plt.gca().spines('prime').set_visible(False)
plt.gca().spines('proper').set_visible(False)
plt.savefig('coachsurvival.png', bbox_inches = 'tight')
plt.present

Zuletzt kann ein Field -Diagramm erstellt werden, um festzustellen, ob es offensichtliche Unterschiede in der Amtszeit auf der Grundlage des Teaching -Typs gibt. Boxplots zeigen auch Ausreißer für jede Gruppe an.
#Create a boxplot
import seaborn as sns
sns.boxplot(knowledge=coach, x='Kind', y='Years')
plt.title('Teaching Tenure by Coach Kind')
plt.gca().spines('prime').set_visible(False)
plt.gca().spines('proper').set_visible(False)
plt.xlabel('')
plt.xticks(rotation = 30, ha = 'proper')
plt.figtext(0.76, -0.1, "Made by Brayden Gerrard", ha="middle")
plt.savefig('coachtypeboxplot.png', bbox_inches = 'tight')
plt.present

Es gibt einige Unterschiede zwischen den Gruppen. Abgesehen von Managementeinstellungen (mit einer Stichprobe von nur sechs) haben frühere Cheftrainer die längste durchschnittliche Amtszeit mit 3,3 Jahren. Da jedoch viele Gruppen kleine Stichprobengrößen haben, müssen wir fortschrittlichere Techniken verwenden, um zu testen, ob die Unterschiede statistisch signifikant sind.
Statistische Analyse
Um zu testen, ob entweder Typ oder interne statistisch signifikante Unterschiede zwischen den Gruppenmitteln aufweist, können wir ANOVA verwenden:
#ANOVA
import statsmodels.api as sm
from statsmodels.system.api import ols
am = ols('Years ~ C(Kind) + C(Inner)', knowledge=coach).match()
anova_table = sm.stats.anova_lm(am, typ=2)
print(anova_table)

Die Ergebnisse zeigen hohe P-Werte und niedrige F-Stats-wobei keine Hinweise auf statistisch signifikante Mittelunterschiede angegeben werden. Die anfängliche Schlussfolgerung ist daher, dass es keine Beweise gibt, die NBA-Groups untersuchen, die internen Kandidaten unterwerten oder frühere Erfahrung in der Headcoaching als ursprünglich angesehen bewerten.
Es gibt jedoch eine mögliche Verzerrung beim Vergleich der Gruppenmittelwerte. NBA -Coach sind für Verträge unterzeichnet, die in der Regel zwischen drei und fünf Jahren dauern. Die Groups müssen den Relaxation des Vertrags in der Regel auszahlen, auch wenn Coach für schlechte Leistung frühzeitig abgewiesen werden. Ein zwei Jahre dauerhafter Coach ist möglicherweise nicht schlechter als einer, der drei oder vier Jahre dauert – der Unterschied könnte einfach auf die Länge und die Bedingungen des anfänglichen Vertrags zurückzuführen sein, was wiederum von der Wünschbarkeit des Trainers auf dem Arbeitsmarkt beeinflusst wird. Da Coach mit früheren Erfahrungen stark begehrt sind, können sie diese Hebelwirkung nutzen, um längere Verträge und/oder höhere Gehälter auszuhandeln, die beide Groups daran hindern könnten, ihre Beschäftigung zu früh zu kündigen.
Um diese Möglichkeit zu berücksichtigen, kann das Ergebnis eher als binär als kontinuierlich behandelt werden. Wenn ein Coach mehr als 5 Spielzeiten dauerte, ist es sehr wahrscheinlich, dass er mindestens seine anfängliche Vertragszeit abgeschlossen hat, und das Group entschied sich, sie zu erweitern oder neu zu unterzeichnen. Diese Coach werden als Erfolge behandelt, wobei diejenigen eine Amtszeit von fünf Jahren oder weniger als erfolglos eingestuft haben. Um diese Analyse durchzuführen, müssen alle Teaching -Mitarbeiter von 2020 und 2021 ausgeschlossen werden, da sie noch nicht in der Lage waren, 5 Jahreszeiten in den Schatten zu nehmen.
Bei einer binären abhängigen Variablen kann eine logistische Regression verwendet werden, um zu testen, ob eine der Variablen den Teaching -Erfolg vorhersagt. Intern und Typ werden beide in Dummy -Variablen konvertiert. Da frühere Cheftrainer die häufigsten Teaching -Mitarbeiter repräsentieren, habe ich diese als „Referenz“ -Kategorie festgelegt, an der die anderen gemessen werden. Darüber hinaus enthält der Datensatz nur einen ausländischen Coach (David Blatt), sodass diese Beobachtung aus der Analyse abgebrochen wird.
#Logistic regression
coach3 = coach(coach('12 months')<2020)
coach3.loc(:, 'Success') = np.the place(coach3('Years') > 5, 1, 0)
coach_type_dummies = pd.get_dummies(coach3('Kind'), prefix = 'Kind').astype(int)
coach_type_dummies.drop(columns=('Type_Previous HC'), inplace=True)
coach3 = pd.concat((coach3, coach_type_dummies), axis = 1)
#Drop international class / David Blatt since n = 1
coach3 = coach3.drop(columns=('Type_Foreign'))
coach3 = coach3.loc(coach3('Coach') != "David Blatt")
print(coach3('Success').value_counts())
x = coach3(('Inner','Type_Management','Type_Player','Type_Previous AC', 'Type_College'))
x = sm.add_constant(x)
y = coach3('Success')
logm = sm.Logit(y,x)
logm.r = logm.match(maxiter=1000)
print(logm.r.abstract())
#Convert coefficients to odds ratio
print(str(np.exp(-1.4715)) + "is the percentages ratio for inner.") #Inner coefficient
print(np.exp(1.0025)) #Administration
print(np.exp(-39.6956)) #Participant
print(np.exp(-0.3626)) #Earlier AC
print(np.exp(-0.6901)) #Faculty

In Übereinstimmung mit den ANOVA -Ergebnissen ist keine der Variablen unter einer konventionellen Schwelle statistisch signifikant. Eine genauere Untersuchung der Koeffizienten erzählt jedoch eine interessante Geschichte.
Die Beta-Koeffizienten repräsentieren die Änderung der logarithmischen Ausgaben des Ergebnisses. Da dies nicht intuitiv zu interpretieren ist, können die Koeffizienten wie folgt in ein Quotenverhältnis umgewandelt werden:

Internes hat eine Quotenverhältnis von 0,23 und zeigt an, dass interne Kandidaten um 77% seltener im Vergleich zu externen Kandidaten erfolgreich sind. Das Administration hat eine Quotenquote von 2,725, was darauf hinweist, dass diese Kandidaten 172,5% höherer Wahrscheinlichkeit erfolgreich sind. Die Quotenverhältnisse für Spieler sind effektiv Null, 0,696 für frühere Co -Coach und 0,5 für Faculty -Coach. Da drei von vier Teaching -Dummy -Variablen unter einem ein Quotenverhältnis haben, weist dies darauf hin, dass nur Administration -Mitarbeiter eher erfolgreich sind als frühere Cheftrainer.
Aus praktischer Sicht sind dies große Effektgrößen. Warum sind die Variablen statistisch unbedeutend?
Die Ursache ist eine begrenzte Stichprobengröße erfolgreicher Coach. Von 202 Trainern, die in der Stichprobe verbleiben, waren nur 23 (11,4%) erfolgreich. Unabhängig vom Hintergrund des Trainers sind die Chancen niedrig, dass sie mehr als ein paar Spielzeiten halten. Wenn wir uns die eine Kategorie ansehen, die frühere Cheftrainer (Administration -Mitarbeiter) speziell übertreffen kann:
# Filter to administration
handle = coach3(coach3('Type_Management') == 1)
print(handle('Success').value_counts())
print(handle)
Der gefilterte Datensatz enthält nur 6 Mitarbeiter – von denen nur einer (Steve Kerr mit Goldener Zustand) als Erfolg eingestuft wird. Mit anderen Worten, der gesamte Effekt wurde durch eine einzige erfolgreiche Beobachtung angetrieben. Daher würde es eine erheblich größere Stichprobengröße dauern, um sicher zu sein, wenn Unterschiede bestehen.
Mit einem p-Wert von 0,202 kommt die interne Variable der statistischen Signifikanz am nächsten (obwohl sie immer noch ein typisches Alpha von 0,05 intestine ist). Bemerkenswerterweise ist die Richtung des Effekts jedoch tatsächlich das Gegenteil von dem, was angenommen wurde – die innernen Einstellungen sind weniger wahrscheinlich erfolgreich als externe Einstellungen. Von 26 internen Einstellungen erfüllte nur eine (Erik Spoelstra von Miami) die Erfolgskriterien.
Abschluss
Zusammenfassend konnte diese Analyse mehrere wichtige Schlussfolgerungen ziehen:
- Unabhängig vom Hintergrund ist es in der Regel ein kurzlebiger Job, NBA-Coach zu sein. Es ist selten, dass ein Coach mehr als ein paar Spielzeiten hält.
- Die gemeinsame Weisheit, die die NBA -Groups lieber frühere Cheftrainer einstellen, gilt. Mehr als die Hälfte der Mitarbeiter verfügte bereits über NBA -Cheftrainererfahrung.
- Wenn Groups keinen erfahrenen Cheftrainer einstellen, werden sie wahrscheinlich einen NBA -Co -Coach einstellen. Einstellungen außerhalb dieser beiden Kategorien sind besonders ungewöhnlich.
- Obwohl sie häufig eingestellt werden, gibt es keine Beweise dafür, dass NBA -Groups frühere Cheftrainer zu priorisieren. Im Gegenteil, frühere Cheftrainer bleiben im Durchschnitt länger und überdauern häufiger ihre anfängliche Vertragszeit – obwohl keine dieser Unterschiede statistisch signifikant sind.
- Trotz hochkarätiger Anekdoten gibt es keine Hinweise darauf, dass interne Einstellungen erfolgreicher sind als externe Einstellungen.
Hinweis: Alle Bilder wurden vom Autor erstellt, sofern nicht anders gutgeschrieben.