{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## NBA Home Court Advantage\n", "\n", "### Part 3: Do Teams Have Different Amounts of Home Court Advantage?\n", "\n", "This notebook looks at whether particular NBA teams have demonstrated significantly different amounts of home court advantage over time. This is challenging, since team quality varies significantly over time.\n", "\n", "The punchline? There is only very weak statistical evidence that teams have persistent and measurable differences in home court advantage relative to the league average.\n", "\n", "As with the [previous](http://nbviewer.jupyter.org/github/practicallypredictable/posts/blob/master/notebooks/nba_home_court-part1.ipynb) [notebooks](http://nbviewer.jupyter.org/github/practicallypredictable/posts/blob/master/notebooks/nba_home_court-part2.ipynb) in this series on NBA home court advantage, we will look at 24,797 match ups from the 1996-97 through 2016-17 regular seasons.\n", "\n", "Let's look at the data." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "pd.options.display.max_rows = 999\n", "pd.options.display.max_columns = 999\n", "pd.options.display.float_format = '{:.3f}'.format" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "from scipy import stats" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "import matplotlib as mpl\n", "import matplotlib.pyplot as plt\n", "from matplotlib.colors import rgb2hex\n", "import seaborn as sns\n", "sns.set()\n", "sns.set_context('notebook')\n", "plt.style.use('ggplot')" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "from pathlib import Path" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's load the data. See the previous notebooks for more information on how to obtain the data." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "PROJECT_DIR = Path.cwd().parent / 'basketball' / 'nba'\n", "DATA_DIR = PROJECT_DIR / 'data' / 'prepared'\n", "DATA_DIR.mkdir(exist_ok=True, parents=True)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "def load_nba_historical_matchups(input_dir):\n", " \"\"\"Load pickle file of NBA matchups prepared for analytics.\"\"\"\n", " PKLFILENAME = 'stats_nba_com-matchups-1996_97-2016_17.pkl'\n", " pklfile = input_dir.joinpath(PKLFILENAME)\n", " return pd.read_pickle(pklfile)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(26787, 41)" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "matchups = load_nba_historical_matchups(DATA_DIR)\n", "matchups.shape" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "21" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "seasons = sorted(list(matchups['season'].unique()))\n", "len(seasons)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "def prepare_regular_season(matchups):\n", " df = matchups.copy()\n", " df = df[df['season_type'] == 'regular']\n", " return df" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(24797, 41)" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "reg = prepare_regular_season(matchups)\n", "reg.shape" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "30" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "teams = sorted(list(reg['team_curr_h'].unique()))\n", "len(teams)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "def load_win_loss_information():\n", " csvfile = DATA_DIR.joinpath('stats_nba_com-team_records-1996_97-2016_17.csv')\n", " df = pd.read_csv(csvfile)\n", " return df" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "RangeIndex: 622 entries, 0 to 621\n", "Data columns (total 14 columns):\n", "season 622 non-null object\n", "team 622 non-null object\n", "games 622 non-null int64\n", "wins 622 non-null int64\n", "losses 622 non-null int64\n", "win_percentage 622 non-null float64\n", "home_games 622 non-null int64\n", "home_wins 622 non-null int64\n", "home_losses 622 non-null int64\n", "home_win_percentage 622 non-null float64\n", "away_games 622 non-null int64\n", "away_wins 622 non-null int64\n", "away_losses 622 non-null int64\n", "away_win_percentage 622 non-null float64\n", "dtypes: float64(3), int64(9), object(2)\n", "memory usage: 68.1+ KB\n" ] } ], "source": [ "wl = load_win_loss_information()\n", "wl.info()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Home Versus Away Win Percentage\n", "\n", "Now that we have the data, we will do a simple analysis. We want to simply take the difference between home win percentage and away win percentage, grouped by season and team.\n", "\n", "This is a simple way to think about isolating the impact of home court advantage. Weak teams should have relatively weak home and away records, and strong teams should have relatively strong home and away records. Taking the difference between the home and away win percentage should average out the differences between teams and focus on the impact of the home court.\n", "\n", "The [NBA schedule](https://www.nbastuffer.com/analytics101/how-the-nba-schedule-is-made/) isn't perfectly balanced, in the sense that the average quality of home opponents may differ randomly from the quality of road opponents. But, there's no reason I'm aware of to think that there is a systematic bias in how the home versus away games are scheduled from season to season. We will analyze the schedule and home versus away records by conference and division in a future post, to see if that has any impact on a team's home court advantage.\n", "\n", "Although teams can vary significantly intra-season due to trades and injuries, the regular season is a reasonable time unit for analyzing team performance." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
home_win_percentageaway_win_percentagehome_away_diff
count622.000622.000622.000
mean0.5980.4020.197
std0.1700.1590.107
min0.1210.040-0.121
25%0.4880.2930.122
50%0.6100.4150.195
75%0.7320.5120.268
max0.9760.8290.585
\n", "
" ], "text/plain": [ " home_win_percentage away_win_percentage home_away_diff\n", "count 622.000 622.000 622.000\n", "mean 0.598 0.402 0.197\n", "std 0.170 0.159 0.107\n", "min 0.121 0.040 -0.121\n", "25% 0.488 0.293 0.122\n", "50% 0.610 0.415 0.195\n", "75% 0.732 0.512 0.268\n", "max 0.976 0.829 0.585" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "hca = wl[['season', 'team', 'home_win_percentage', 'away_win_percentage']].copy()\n", "hca['home_away_diff'] = hca['home_win_percentage'] - hca['away_win_percentage']\n", "hca.describe()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There are 622 distinct team/season pairs. Let's group these data by team and aggregate the statistics over the 21 complete seasons.\n", "\n", "These are the 5 teams with the highest observed average home court advantage, measured by home versus away win percentage differential." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countmeanstdmin25%50%75%max
team
DEN21.0000.2580.1380.0240.1710.2930.3660.463
UTA21.0000.2450.1250.0730.1710.2440.2930.488
IND21.0000.2390.1010.0730.1460.2200.3410.390
ATL21.0000.2310.1100.0400.1460.2440.3170.415
CLE21.0000.2270.0830.0300.1950.2440.2680.390
\n", "
" ], "text/plain": [ " count mean std min 25% 50% 75% max\n", "team \n", "DEN 21.000 0.258 0.138 0.024 0.171 0.293 0.366 0.463\n", "UTA 21.000 0.245 0.125 0.073 0.171 0.244 0.293 0.488\n", "IND 21.000 0.239 0.101 0.073 0.146 0.220 0.341 0.390\n", "ATL 21.000 0.231 0.110 0.040 0.146 0.244 0.317 0.415\n", "CLE 21.000 0.227 0.083 0.030 0.195 0.244 0.268 0.390" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "hca.groupby('team')['home_away_diff'].describe().sort_values('mean', ascending=False).head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And these 5 teams have the lowest observed average home court advantage." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
countmeanstdmin25%50%75%max
team
MIA21.0000.1720.121-0.0730.0730.1950.2440.390
HOU21.0000.1720.112-0.0980.0980.1710.2800.317
BOS21.0000.1640.114-0.0490.0980.1710.2200.415
TOR21.0000.1600.0730.0490.0980.1460.2000.317
PHI21.0000.1320.095-0.0730.0490.1460.1950.293
\n", "
" ], "text/plain": [ " count mean std min 25% 50% 75% max\n", "team \n", "MIA 21.000 0.172 0.121 -0.073 0.073 0.195 0.244 0.390\n", "HOU 21.000 0.172 0.112 -0.098 0.098 0.171 0.280 0.317\n", "BOS 21.000 0.164 0.114 -0.049 0.098 0.171 0.220 0.415\n", "TOR 21.000 0.160 0.073 0.049 0.098 0.146 0.200 0.317\n", "PHI 21.000 0.132 0.095 -0.073 0.049 0.146 0.195 0.293" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "hca.groupby('team')['home_away_diff'].describe().sort_values('mean', ascending=False).tail()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There are some familiar names in these lists. Denver and Utah often show up in [articles about home court advantage](http://www.espn.com/nba/insider/story/_/id/9014283/nba-analyzing-real-home-court-advantage-utah-jazz-denver-nuggets). Some [people attribute the supposed extra home court advantage to the altitude and the time zone](https://www.cbssports.com/nba/news/nba-trying-to-weaken-nuggets-home-court-advantage/) of Denver and Salt Lake City. There's even [an article studying the potential effect of altitude on free throw shooting percentage](https://harvardsportsanalysis.wordpress.com/2011/05/18/does-altitude-affect-free-throw-percentage/). And, lastly, here's [an article that attempts to rank all 30 NBA teams by home court advantage](https://www.foxsports.com/nba/gallery/ranking-every-nba-teams-home-court-advantage-112816), without any data to support the rankings.\n", "\n", "In the words of the great American statistician [W. Edwards Deming](https://en.wikipedia.org/wiki/W._Edwards_Deming), \"In God we trust; all others must bring data.\"\n", "\n", "Needless to say, I'm skeptical.\n", "\n", "### Survey Says...\n", "\n", "Here's a [box plot](https://en.wikipedia.org/wiki/Box_plot) of the home versus away win percentages for all 30 NBA teams. The dashed horizontal line shows the overall median home versus away win percentage differential of roughly 20%." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "image/png": "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i1/8IgBPP/00Z511Vo+4Abbeemve+MY3AnDGGWfw3HPP9Yj7LVdfzRZbbAHA1VdfTc65R9zLLbcce+xR1sz999/PFVdc0SMegI985CO8+tWvZubMmfy6l7h32WUXVl55ZQB+//vf89hjj/WIfY011uD9738/ADfddBM333xzj7iXOPFE9t9/fwAeffRRLrjggh5xA+y44468rvr5pJNOYtasWT1i2nDDDdl0000B+OO/n+afDeJeZ5112HLLLQG46667uOaaa3rEDfDxj3+cZZddlueee44zzjijR9wjJ09mq622Yu211wbgzDPPZMSIET3iXnfdddm8+vnaa6/lzjvv7BHT6NGj+djHyhclPzjjJa5oEPfyyy/PNttsw4orrsicOXP41a9+1TDud73rXWywQXks5sILL+SRRx7pEfdqq63GDjvsAMAtt9xCSqlH3AD7Vf//5z//4bzzzusxHmD77bdn9dVXB+Dkk0/mpZde6hH3Gmuswbhx4wCYMmUK9913X4+4V1hhBT784Q8DcM8993DVVVf1iBtgzz335FWvehXPP/88P/zhDxvGvflzL1Crc/zd737HU0891WOaN73pTYwfPx6AqVOncvvtty8wfvnll+fFF19k7733BuDhhx/mkksuaXjc3HXXXVlppZWABY/j9dNusskmvOMd7wDgnHPO6TE/gNc98hS1/rb+juXAy8fy7nE/88wzbLfddqy55ppAOZZPbxB3b8fy+rjHjh3L7rvvDsDdd9/NmWee2SOeuf/4N3s+9xzLLbfcgI7ljz/+eI+411prLbbddlugHMtvbhB3X8fy+th33nnnHsfy7nFvctNNbLxxOcs2eyy//vrre8QNsM8++7DUUkvx9NNPc2Yvx83+juUAIYQex/LuBnIsXw6YOXMmv/nNbxrGvdlmm/HWt74VgPOnPcnjDeLu7Vhev7xHjhzZ41herzbtjjvu+HKe0dexvPblN5dffjkPPPBAj9hf+9rX8sEPfhCAu599gesaxA2Nj+Xd9+Pux/Jnn53fI16bdt111+V973sf0PexvJb7PPjgg/zhD3/oETfAbrvtVo7l8+bxq17ibnQs7x5392P5X//61x5xA0ycOBHo+1i+3QsvsWb1c/2xvD7ut73tbT2O5fWOOuqohm1Dc69nXJRvXjkX2DbGeB3lDTKfiDEeBtwLjALeBywd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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(figsize=(12,8))\n", "ax = hca.boxplot('home_away_diff', by='team', ax=ax)\n", "ax.set_title('Home vs. Away Win Percentages between 1996-97 and 2016-17 Seasons')\n", "ax.set_ylim(-0.1, 0.5)\n", "ax.set_ylabel('Home Win Percentage minus Away Win Percentage')\n", "ax.set_xlabel('Team')\n", "ax.axhline(hca['home_away_diff'].median(), linestyle='--', alpha=0.5, color='black')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.19512200000000002" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "hca['home_away_diff'].median()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The main thing to notice about this plot is the significant variability in the data. Denver's away win percentage has varied between 2% less than its home win percentage to as much as 46% less. Of course, a large win percentage differential could occur because a team has an awful road record or because it has an outstanding home record. Similarly, a small win percentage differential could occur because a team is outstanding on the road or is relatively weak at home.\n", "\n", "The rectangles on the plot display the [interquartile range](https://en.wikipedia.org/wiki/Interquartile_range) for each team. The interquartial range is the difference between the 75% quantile and the 25% quantile. Approximately half of the observations for each team occur in each of the relevant rectangles.\n", "\n", "The grey lines within each rectangle represent the [median](https://en.wikipedia.org/wiki/Median) for each team. Approximately half of the win percentage differentials are above this line, and half are below this line.\n", "\n", "(For the purists, the reason I say \"approximately\" in the preceding sentences is due to the fact that some fine-tuning may be required to break ties, depending upon the number of data points. See the links above for details on the calculation of median and interquartile range if you're interested.)\n", "\n", "All of the interquartile ranges intersect the line representing the overall median. If a team had a significantly different home court advantage (or disdvantage), you would expect to see that more clearly in the plot.\n", "\n", "This plot doesn't attempt to separate out the reasons why the home versus away win percentage varies so much. That will have to wait for another day. But, if the question being asked is does a team have a consistent and measurably different home court advantage, this plot certainly doesn't support a yes answer to that question.\n", "\n", "### Analysis of Variance\n", "\n", "There are more formal statistical tests of whether several groups have the same mean. An example of this is [one-way analysis of variance](https://en.wikipedia.org/wiki/One-way_analysis_of_variance), or ANOVA. The details don't matter much, but to illustrate the method in Python, here is a one-way ANOVA testing whether all the teams have the same mean home versus away win percentage differential.\n", "\n", "In Python, it's easy to use the `scipy` statistics package to perform this test." ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [], "source": [ "data = [hca.loc[hca['team'] == team, 'home_away_diff'] for team in teams]" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.090958554085467463" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f_val, p_val = stats.f_oneway(*data)\n", "p_val" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In one-way ANOVA, the [null hypothesis](http://www.statisticshowto.com/probability-and-statistics/null-hypothesis/) is that all the means are the same. For the NBA data, the resulting [_p-value_](http://www.dummies.com/education/math/statistics/what-a-p-value-tells-you-about-statistical-data/) of 9.1% is only very weak evidence against the null hypothesis that all the home court advantages are the same.\n", "\n", "The statistical test tells the same story as the plot. The data are too noisy to support a strong conclusion.\n", "\n", "### Quantifying Differences in Home Court Advantage\n", "\n", "Even though we've seen that the data don't really support the argument that different teams have consistently different amounts of home court advantage, let's take the analysis just a little bit further.\n", "\n", "Suppose for a moment that teams really did have different home court advantages. How would you use that information?\n", "\n", "Under the NBA schedule, every team plays the same number of home and away games every season. So, with a little bit of algebra, you can show that the overall win percentage is the average of the home win percentage and the away win percentage.\n", "\n", "Also, remember that the way we are estimating home court advantage here is home win percentage minus away win percentage. The average team has roughly a 20% gap between home and away win percentages. But, as we've seen in prior posts, the gap between the home win percentage and the overall win percentage is around 10%. That is, half of 20%.\n", "\n", "So, if a particular team had a significantly better home court advantage than the league average, the predicted impact on the overall season win percentage would only be half of the difference between that teams's home court advantage, and the league average home court advantage.\n", "\n", "Let's estimate the predicted impact on overall win percentage, assuming that each team really did have different home court advantages.\n", "\n", "We'll estimate the home court advantage using the [_interquartile mean_](https://en.wikipedia.org/wiki/Interquartile_mean), which is the just the average of the 25% and 75% quartiles. It's not the same as the median. You can visualize the interquartile mean as being the centers of the rectangles in the box plot above.\n", "\n", "Here are the 5 best and 5 worst NBA team home court advantages, estimated by the historical interquartile mean over the past 21 completed NBA seasons." ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "def iq_mean(x):\n", " return (x.quantile(0.75) + x.quantile(0.25))/2" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "team\n", "DEN 0.268\n", "IND 0.244\n", "ATL 0.232\n", "CLE 0.232\n", "UTA 0.232\n", "Name: home_away_diff, dtype: float64" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y = hca.groupby('team')['home_away_diff'].agg(iq_mean).sort_values(ascending=False)\n", "y.head()" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "team\n", "MIA 0.159\n", "MIN 0.159\n", "TOR 0.149\n", "DAL 0.146\n", "PHI 0.122\n", "Name: home_away_diff, dtype: float64" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y.tail()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, we can just subtract out the league interquartile mean and divide by 2, to look at the impact on each team's estimated overall win percentage." ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.19417887500000003" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "m = sum(y)/len(y)\n", "m" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "team\n", "DEN 0.037\n", "IND 0.025\n", "ATL 0.019\n", "CLE 0.019\n", "UTA 0.019\n", "SAC 0.019\n", "POR 0.013\n", "BKN 0.013\n", "CHA 0.007\n", "WAS 0.007\n", "NOP 0.007\n", "NYK 0.000\n", "SAS 0.000\n", "LAC 0.000\n", "MEM 0.000\n", "ORL 0.000\n", "HOU -0.003\n", "MIL -0.006\n", "GSW -0.006\n", "DET -0.006\n", "PHX -0.006\n", "LAL -0.006\n", "CHI -0.006\n", "OKC -0.012\n", "BOS -0.018\n", "MIA -0.018\n", "MIN -0.018\n", "TOR -0.023\n", "DAL -0.024\n", "PHI -0.036\n", "Name: home_away_diff, dtype: float64" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "home_edge = (y - m)/2\n", "home_edge" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Notice that by this measure, Indiana, Atlanta and Cleveland rank better than Utah, despite the claim that Salt Lake City's altitude helps the Jazz. The Jazz just don't stand out as much using the interquartile mean. This suggests some historical [outliers](https://en.wikipedia.org/wiki/Outlier) may be influencing the common perception that the Jazz enjoy a special degree of home court advantage.\n", "\n", "What's also interesting is the teams at the bottom. People usually don't think of OKC, Boston or Toronto as suffering from significantly below-average home court advantage.\n", "\n", "If Denver really did have such a large relative home court advantage compared to the league average, it would be expected to pick up roughly an extra 3 games per season on average. It's hard to detect that effect in the noisy year-to-year variation of the team's record.\n", "\n", "The general take-away is: treat claims of persistent home court advantage in the sports media with skepticism." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python [conda env:sports_py36]", "language": "python", "name": "conda-env-sports_py36-py" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.4" } }, "nbformat": 4, "nbformat_minor": 2 }