{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Bike Speed versus Grade\n", "\n", "Like most people, I bike slower when I'm going up a steep hill than on a flat road. But how much slower?\n", "To answer that, I downloaded data on my past rides \n", "from [Strava](https://www.strava.com/athletes/575579) and manipulated the `data` to create two lists: \n", "\n", "- `X`: the *grade* of each ride, in feet of ascent per mile. \n", "- `Y`: the *speed* of each (corresponding) ride, in miles per hour.\n", "\n", "I omit rides shorter than 30 miles, because on some short rides I was sprinting at an unsustainable speed, and on others I was slowed by city traffic. Here is the code to collect and plot the X:Y data:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nLiKSQv8frjJL86AyaU0AAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import csv\n", "\n", "def hours(sec): return float(sec) / 60 / 60\n", "def feet(meters): return float(meters) * 100 / 2.54 / 12\n", "def miles(meters): return feet(meters) / 5280\n", "\n", "# Read data file with three fields: distance (m), climb (m), elapsed time (sec)\n", "X, Y = [], []\n", "for (dist, climb, time) in csv.reader(open('dist-climb-time.csv')):\n", " if miles(dist) > 30:\n", " X.append(feet(climb) / miles(dist))\n", " Y.append(miles(dist) / hours(time))\n", "\n", "plt.plot(X, Y, 'o');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As expected, the speeds get slower as the grade gets steeper. The data has a lot of variance, and I can say that it \n", "looks more like a curve than a straight line, so I'll fit a cubic (degree two) polynomial to the data,\n", "and make the plot prettier:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAzgAAAIcCAYAAAA6xgsWAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XtgU1W6NvAnTe2FClpa2lLaBhQKXgbGcdTx8zoKM+KI\nRxG0hUodaFGwIlULKJQClTsKQgHl4ghSQfGgM+qo53gbUUaPjgg4jlBEE1oKpRcupk1D03x/lISm\n2Ul30p19y/P7S9Mka+29krDfvdb7LsOJEyecICIiIiIi0oEIpTtAREREREQkFQY4RERERESkGwxw\niIiIiIhINxjgEBERERGRbjDAISIiIiIi3WCAQ0REREREusEAh4iIiIiIdEPxAGfXrl3Izs7GpZde\nivj4eGzdutXj71arFUVFRbjsssvQu3dvXHXVVVizZo1CvSUiIiIiIjWLVLoDVqsVl112GbKzszFp\n0iSvvz/11FP49NNPsW7dOmRkZGDXrl2YMmUKEhMTce+99yrQYyIiIiIiUivFZ3CGDRuGWbNm4c47\n74TBYPD6+1dffYX77rsP1113HdLT03Hffffht7/9Lb7++msFektERERERGqmeIDTmd/97nd47733\nUFVVBQD48ssv8d1332HYsGEK94yIiIiIiNRG8SVqnVm8eDGmTp2Kyy+/HJGRkTAYDFiyZAkDHCIi\nIiIi8qL6AOf555/HV199hVdffRVpaWnYtWsXZs2ahYyMDNxyyy1Kd4+IiIiIiFRE1QGOzWZDaWkp\nNm/ejD/84Q8AgEsvvRR79+7FqlWrGOAQEREREZEHVefgnDlzBmfOnEFEhGc3jUYjWltbFeoVERER\nERGpleIBjtVqxb59+7B37160traisrIS+/btQ2VlJbp3747rrrsOc+bMwWeffQaz2Yzy8nJs27YN\nI0aMULrrsNlsumtLzmOqqKiQrS09jpXcbelxvDhWXafXcyhXWxwrbbXF8dJGOwDHSmttSU3xAGf3\n7t248cYbcfPNN8Nms2HhwoW46aabsHDhQgDAX/7yF/zmN7/Bgw8+iGuvvRYrV67ErFmzkJeXp3DP\niYiIiIhIbRTPwbn++uvR0NDg8++9evVCWVmZjD0iIiIiIiKtUnwGh4iIiIiISCoMcIiIiIiISDcY\n4BARERERkW4wwCEiIiIiIt1ggENERERERLrBAIeIiIiIiHSDAQ4REREREekGAxwiIiIiItINBjhE\n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\ns+rVq5fsdhpkylJpuTp//rx27dqlMWPGaOPGjVq+fLkOHTqknj17Ov1DArlyn2v9bBX74IMPtGPH\nDjVs2LDEazeTL1O0qD344INq3ry5ZsyY4TgWExOjRx99VMnJyR5cGS6Xl5en4OBgvf322+rYsaMk\nKSoqSk899ZQSEhIkSQUFBQoPD9ekSZMUGxvryeVWSqdPn1b79u31yiuvKC0tTbfddpumTp0qiVwZ\nyYsvvqht27Y5PR/sSuTLOHr16qV69erp1VdfdRwbOnSocnJytGLFCknkywgaN26sjIwM9enTx3Hs\nWnk5c+aMwsLCNHfuXPXo0UOSdPjwYTVv3lzvvfeeHnjgAY9ci9m5ytWV9uzZo1atWmnr1q1q1qwZ\nufKgq+Xr4MGD6ty5s1avXq0ePXpo8ODBGjFihCTddL4q/A7Ov//9b3333Xdq37690/EOHTroq6++\n8syi4NLZs2dVVFSkOnXqSJIOHDigY8eOOX2T+vr6qnXr1uTOQ0aNGqVu3brp/vvvdzpOrozlo48+\nUkxMjOLi4hQeHq42bdpo4cKFjtfJl7Hce++92rRpk+ORBz/++KM2bdrk+Ice8mVM15OXnTt36uLF\ni07nNGrUSJGRkeTOw86cOSOLxeL4neO7774jVwZis9kUHx+vxMREhYeHl3j9ZvPlU6ar9YCTJ0/K\nZrPJarU6Ha9fv76++OILD60KrowdO1bR0dG65557JEnZ2dmyWCxObTXSpdwdPXrUE0us1JYuXaoD\nBw5o8eLFJV4jV8ZSnKdhw4YpISHB0ZphsVg0aNAg8mUwo0aN0rlz59SyZUt5e3vLZrPpmWee0cCB\nAyXx82VU15OX48ePy9vbW3Xr1i1xTnZ2ttvWCmf//ve/9dxzz6lz585q0KCBpEv5JFfGMXnyZAUE\nBGjAgAEuX7/ZfFX4AgcVw7PPPqvt27frk08+kcVi8fRycIWffvpJKSkp+vTTT+XlVeE3dk2vqKhI\nMTExjhbc5s2ba9++fVq0aJEGDRrk4dXhSu+9955WrFihJUuWKDIyUrt27VJSUpJCQkLUr18/Ty8P\nMJXinYGzZ8/qnXfe8fRy4MKmTZu0fPlybd68udxiVPjfZOrVqydvb+8S1dzx48dL7OrAM8aNG6f3\n339fa9euVXBwsOO41WqV3W7X8ePHnc4nd+63fft2nTp1Si1btlRAQIACAgK0ZcsWLVq0SPXr11fd\nunXJlYEEBgYqIiLC6VhERIRjYhA/W8YyYcIEjRw5Uo8++qiaNWumxx9/XMOHD3fcN0q+jOl68mK1\nWmWz2XTq1KmrngP3sdlsiouL0+7du7VmzRpHe5pEroxky5YtOnbsmCIiIhy/c/zyyy+aMGGCY8DR\nzearwhc4VapUUYsWLfT55587Hd+wYYNatWrlmUXBISkpyVHchIaGOr12yy23KDAwUBs2bHAcKygo\n0LZt28idm3Xp0kVbt27V5s2bHf/dddddeuyxx7R582aFhYWRKwNp1aqV436OYnv37lWTJk0k8bNl\nNOfPny+xM+rl5eWY7kS+jOl68tKiRQv5+Pg4nXP48GHHDe5wn4sXL2rAgAHavXu31q1bp4CAAKfX\nyZVxxMfHa8uWLU6/czRo0EDDhw/XBx98IOnm82WKFrXhw4dryJAhuuuuu9SqVSstXrxYx44du2pf\nH9xj9OjRevfdd7Vs2TLVrl3bscvm5+cnPz8/SZcmCU2fPl1hYWEKDQ3VtGnTVLNmTcfEDLhH7dq1\nVbt2badjNWrUUJ06dRQZGSmJXBnJsGHD1LFjR7300kvq3r27MjMztWDBAr3wwguOc8iXcXTq1Ekz\nZ85UcHCwoqKilJmZqVdffVVPPPGE4xzy5Rl5eXnav3+/7Ha7ioqKdOjQIe3atUv+/v5q3LjxNfNS\nu3ZtPfnkk5owYYICAgJUp04dPffcc2revLnatWvn4aszl9Jy1aBBA/Xv31+ZmZlavny57Ha743eO\n2rVry9fXl1y52bV+turVq+d0vo+Pj6xWq+Mfw282X6YYEy1JS5Ys0csvv6xjx46pWbNmmjJlChW5\nh/n7+7u83yYpKUlJSUmOP6enp+v1119Xbm6uYmJiNG3aNEVFRblzqXCha9euatasmWNMtESujGT9\n+vWaOHGi9u3bp8aNG2vw4MGKj493Ood8GUNeXp5SU1O1bt06nThxQoGBgerRo4fGjBmjqlWrOs4j\nX+63efNmde3atcTfVX369NGcOXMkXTsvxTe0r1y5UgUFBWrXrp2mTZvm8rke+P1Ky1VSUpKio6Nd\n/s4xZ84cx3hicuU+1/Ozdbno6GjFx8c7xkRLN5cv0xQ4AAAAAFDh78EBAAAAgGIUOAAAAABMgwIH\nAAAAgGlQ4AAAAAAwDQocAAAAAKZBgQMAAADANChwAAAAAJgGBQ4A4Ko2b94sf39/bdmypUzf9/z5\n84qMjNRbb73ldPyf//ynOnfurMaNG6tu3br6/vvvyzSup0yZMkX+/v5Ox/77v/9bXbt2/V3v16FD\nB73wwgtlsDIAMB8KHAAwoJMnT+rFF1/UfffdpyZNmigoKEgtWrTQkCFDtGnTJreuxdXTwW/W3Llz\nVaVKFfXu3dtxzG63a+DAgcrOzlZqaqrmz5+vJk2alHns/Px8paWlXbNou+2225SRkVEmMS0Wi7y8\nvEoc+70SEhK0cOFCHT9+/GaXBgCmQ4EDAAazc+dOtWrVSnPnzlV0dLReeOEFTZs2TT179tT333+v\nRx55RP/4xz88vczf7eLFi5o3b56efPJJ+fj4OI4fOXJE+/fv11NPPaXY2Fj17NlTf/jDH8o8fn5+\nvtLT07V58+arnpOZmamjR4+qU6dOZRJzzJgxOnLkSJm8lyR16dJFtWrV0sKFC8vsPQHALHyufQoA\nwF1Onz6tvn37ysfHR5s3b1ZoaKjT6+PHj9e6devk5+dX6vucP39eNWrUKM+l/m4ff/yxTp48qUcf\nfdTpeHZ2tiSpVq1a5Rrfbrdf85zPPvtMQUFBat68eZnE9PLyUtWqVcvkvaRLuz8PP/ywli9frmef\nfbbM3hcAzIAdHAAwkCVLlujo0aNKS0srUdwU69Kli1q1auX4c/H9Hbt379bgwYPVtGlTtW7dWpL0\nyy+/aPTo0WrZsqUaNmyokJAQ9erVS//6179KvO+vv/6qJ554Qo0aNVJ4eLieffZZFRYWuiwIduzY\noZ49eyo4OFgNGjRQ586dr7t17qOPPlJQUJAiIyMdx4YNG6YHHnhAFotFw4YNk7+/v9P9Kfv27dOA\nAQN06623KigoSG3bttUHH3xQ4r3PnDmjZ599VnfccYesVqtatGihjIwMFRUVSZIOHjyosLAwWSwW\npaWlyd/fX/7+/ho+fLjT+6xfv14PPfSQ48/NmzdXz549tXnzZj3wwANq0KCBWrdurY0bN0qS1q1b\np/vuu09BQUFq166dvvvuO6f3c3UPztXMnz9frVu3VlBQkMLDw/XXv/5Vp06dKnHeAw88oMOHD5eI\nBQCVHTs4AGAgn376qapXr64uXbpc99cU38sRFxenkJAQJScnq7CwUNKlQmTbtm165JFH1LhxYx09\nelSvv/66unTpoi+//FJWq1WSVFBQoIcffli//vqrhgwZosDAQP3973/Xxo0bS9wrsnnzZj322GO6\n8847lZSUpCpVquidd95R9+7dtXr1at13332lrnf79u1q0aKF07G4uDjdeuutSk1N1cCBA3Xvvfc6\n1rZnzx517NhRQUFBGjVqlPz8/LRu3ToNGDBACxYsUM+ePR3X0KVLFx06dEhxcXEKDg7Wt99+q7S0\nNB06dEgvv/yyAgICNGPGDCUkJKhr166OIqpp06aOtZw6dUrffvutRo0a5fQZ//zzz4qPj1dsbKx6\n9+6tWbNmqW/fvpoxY4YmTpyo+Ph4WSwWTZs2TQMHDtSOHTscn53FYrmue24SEhK0bNkyPfHEE3rq\nqad06NAhzZ8/Xzt27NCGDRucdoFatGghu92uL7/8ssTnCQCVGQUOABjInj17FBYWJm9vb6fj586d\ncxQtklStWrUSbWqRkZF6/fXXnY516tRJjzzyiNOxXr16qWXLlnrzzTf1zDPPSJJee+017d+/X6+9\n9prj/AEDBqhNmzYl1vj000+rdevWWrVqleNYXFyc2rRpo5SUFH3yySdXvT6bzaaff/5ZHTt2dDr+\nxz/+UT4+PkpNTdWf/vQnR9EiSWPHjlXDhg31+eefO37B/8tf/qLu3btr4sSJjnPnzJmjffv2aePG\njY7dr/79+ys4OFipqakaOXKkQkND9fDDDyshIUG33367U5xin332mapUqaL27ds7Hd+/f78+/vhj\ntWzZUpIUERGh7t27669//au2b9/uGIhQu3ZtJSQkaOPGjWrXrt1VP4srffXVV3r99dc1f/58Pf74\n447jDz74oDp16qQVK1aof//+juMNGjRQ1apVtWfPnuuOAQCVAS1qAGAgZ8+edXl/zd/+9jeFhoY6\n/hszZozT6xaLRQMHDizxddWqVXP87/z8fOXk5KhmzZoKCwtzam36n//5H1mtVqdiqFq1anryySed\n3m/Xrl3au3evevTooVOnTjn+O336tNq3b69vvvlGBQUFV72+nJwc2e121alT59ofhqTc3Fx98cUX\nevTRR3Xu3DmnmB06dNCvv/6qffv2SZJWr16tVq1ayd/f3+m8du3ayW63lzpU4HLr169X69atS9zD\nFBYW5ihuJCkmJkaS1KZNG6dpbzExMbLb7crKyrqueMXef/991apVSx06dHBaf1hYmKxWq8sWwDp1\n6ujkyZM3FAcAzI4dHAAwkJo1a+rcuXMljicmJjr+9f7y0cqXu7zNqtiFCxeUmpqqv//97zp69Kjj\nuMViUb169Rx//uWXX1x+fVhYmNOfi4uJESNGuFyDxWLRqVOn1LBhQ5evF7ueG/2lS7smdrtdaWlp\nmjJlist4x48fV2hoqPbt26cffvjB5b1Lxeddi81m0z/+8Q+NGzeuxGuNGzd2+nPt2rUlqcS1Fh/P\nzc29ZrzL7d+/X2fPnlV4eHiJ1662frvdXi5jvAGgIqPAAQADiYyM1Pfffy+bzebUphYVFaWoqChJ\nKtG+Vqx69eoljiUmJurtt9/WU089pXvuuUd/+MMfZLFYNG7cOMeN9zei+GtefPFF3XnnnS7PCQgI\nuOrX161bVxaL5bp/+S+ON2zYMKeb/i/XrFkzx7lt27bV008/7bKAuuWWW64Z78svv9SZM2f05z//\nucRrV/vcr3b8eou4YkVFRapXr56WLFni8mtd7XqdPn3aqVAFAFDgAIChdOrUSV9//bU++OADde/e\n/abf74MPPlCfPn2UmprqdDw3N9fpF+MmTZrohx9+KPH1P/30k9Ofi3d5/Pz8buj+kmJeXl4KDQ29\n7vat4qLEx8fnmvGaNm2qc+fOqW3btqWeV9qOx/r16xUaGupyN6u8NW3aVJ9//rn++Mc/XteI7yNH\njqiwsFARERFuWB0AVBzcgwMABjJw4EAFBgZq/Pjx2rt3702/n7e3d4mdmpUrV5Z46ORDDz2k7Oxs\np9HL+fn5evPNN53Oa9GihW699VbNmTPHZSvd9dwP0rJly+sebRwQEKA2bdpo6dKlLh+UeXm8bt26\naceOHVq/fn2J8y4f0lC80+VqF+mzzz5zuXvjDt26dZPNZtPUqVNLvFZUVFRivd99950sFovTfUEA\nAHZwAMBQ6tSpo2XLlqlXr15q06aNunfvrpiYGFWpUkWHDx/W2rVrdf78eaeb2kvTuXNnvfPOO6pZ\ns6Zuu+027dq1S6tWrSqxQxEbG6uFCxdqyJAh2rlzpxo0aKB3333XaUiBdGn345VXXlHPnj3VqlUr\n9e3bV40aNdKRI0e0ZcsWSdKaNWtKXdN//dd/6e2339aePXucnoVzNdOnT1enTp103333KTY2Vk2b\nNtXx48f1zTff6P/+7//07bffSpJGjhypTz75RH379lXv3r3VokUL5efn61//+pfWrl2rLVu2qEmT\nJvL19VWzZs20atUqhYaGqm7dugoJCZHVatXu3buVlpZ2XZ9tWWvdurUGDRqkWbNm6fvvv1eHDh1U\nrVo17du3T2vWrNH48ePVp08fx/n/+7//q4YNG+quu+7yyHoBwKgocADAYO6++259+eWXmjNnjj75\n5BOtWbNGNptNQUFBatmypdLT012Ob3YlPT1dVatW1erVq7Vs2TLdddddWrVqlZKTk51atapXr641\na9ZozJgxWrRokapXr67HH39cDz74oHr06OH0nq1bt9b69euVkZGhJUuW6OzZs7Jarbr77rudxhhf\nTceOHRUQEKD3339fY8eOdXrNVftYWFiYNmzYoPT0dL3zzjs6efKkAgICdMcdd+i5555znOfr66sP\nP/xQ06dP1+rVq/Xuu++qZs2aCg0NVWJiogIDAx3nzp49W0lJSUpOTtaFCxfUp08f3X333apVq5bj\nIalXrsvV2m7k+NXOu1xGRoZatGih1157TampqfL29lbjxo3Vo0cPp9Y7u92utWvXlphyBwCQLLm5\nuTd2FyQAADdpxowZWrx4sTIzM696k7679erVS9WqVdMbb7zh6aVc05o1azR06FDt3LnT8UBUAMAl\n3IMDAHC7IUOG6OLFi1q+fLmnl+Jw//33X3X8tdHMnDlTgwcPprgBABfYwQEAAABgGuzgAAAAADAN\nChwAAAAApkGBAwAAAMA0KHAAAAAAmAYFDgAAAADToMABAAAAYBoUOAAAAABMgwIHAAAAgGn8P3ea\nzHDl3n7pAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "def poly(X, Y, n):\n", " \"Best-fit degree-n polynomial for X, Y data.\"\n", " C = np.polyfit(X, Y, n)[::-1] # Array of coefficients, reversed\n", " return lambda x: sum(C[i] * x ** i for i in range(n + 1)) \n", "\n", "F = poly(X, Y, 2) # defines y = F(x); x in ft/mile, y in mph\n", "\n", "def show(X, Y, F=F): \n", " plt.rcParams[\"figure.figsize\"] = (12, 8)\n", " plt.style.use('fivethirtyeight')\n", " plt.plot(X, Y, 'o')\n", " X1 = list(range(int(max(X))))\n", " plt.plot(X1, [F(x) for x in X1], 'o')\n", " plt.ylabel('Speed (mph)')\n", " plt.xlabel('Grade (feet/mile)')\n", " plt.minorticks_on()\n", " plt.grid(True, which='major')\n", " plt.grid(True, which='minor', alpha=0.2)\n", " \n", "show(X, Y) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "So, I average about 14 mph when the road is fairly flat, with a lot of variability from 12 to 16 mph, depending more on my level of effort than on the grade of the road. But from 60 ft/mile and up, speed falls off quickly at 1 mph for every 20 ft/mile, and by 140 ft/mile, I'm down around 8 mph. Note that 140 ft/mile is only 2.7% grade, but if you figure a typical route is 1/3 up, 1/3 down, and 1/3 flatish, then that's 8% grade on the up part.\n", "\n", "I can use the polynomial `F` to estimate the duration of a route:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def duration(dist, climb, F=F):\n", " \"Given a distance in miles and total climb in feet, return estimated time in minutes.\"\n", " return dist / F(climb / dist) * 60" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For example, to get to Pescadero from La Honda, I could take the flatter [coast route](https://www.google.com/maps/dir/La+Honda,+California/Pescadero,+California/@37.2905834,-122.3896683,12z/data=!4m19!4m18!1m10!1m1!1s0x808faed4dc6265bd:0x51a109d3306a7219!2m2!1d-122.274227!2d37.3190255!3m4!1m2!1d-122.4039496!2d37.3116594!3s0x808f062b7d7585e7:0x942480c22f110b74!1m5!1m1!1s0x808f00b4b613c4c1:0x43c609077878b77!2m2!1d-122.3830152!2d37.2551636!3e1), or the shorter [creek route](https://www.google.com/maps/dir/La+Honda,+California/Pescadero,+California/@37.2905834,-122.3896683,12z/data=!4m19!4m18!1m10!1m1!1s0x808faed4dc6265bd:0x51a109d3306a7219!2m2!1d-122.274227!2d37.3190255!3m4!1m2!1d-122.3658887!2d37.2538867!3s0x808f00acf265bd43:0xb7e2a0c9ee355c3a!1m5!1m1!1s0x808f00b4b613c4c1:0x43c609077878b77!2m2!1d-122.3830152!2d37.2551636!3e1):" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "6.7314081227852185" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "coast = duration(15.7, 344)\n", "creek = duration(13.5, 735)\n", "\n", "coast - creek" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This says the coast route takes 6.7 minutes longer. Good to know, but other factors are probably more important in making the choice." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "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.5.3" } }, "nbformat": 4, "nbformat_minor": 2 }