Skip to content

Instantly share code, notes, and snippets.

@smason
Last active April 30, 2021 19:20
Show Gist options
  • Save smason/2fc714b3a5c81b931f14c540575c6983 to your computer and use it in GitHub Desktop.
Save smason/2fc714b3a5c81b931f14c540575c6983 to your computer and use it in GitHub Desktop.
cooling water
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# background\n",
"\n",
"I wanted to explain fitting data, and thought a nice example would be cooling water. I heated water in a small pan with a digital thermometer in it. When the water boiled I started measuring the temperature, I started with every °C change, but got distracted and measurements tailed off…"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"from scipy import optimize\n",
"\n",
"import pandas as pd\n",
"\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"\n",
"sns.set(style='ticks')\n",
"plt.rcParams[\"figure.figsize\"] = (6, 4)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# load data\n",
"\n",
"load the data into a data-frame; pull out time in minutes from the start, and show the last few rows to make sure it's all loaded"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>datetime</th>\n",
" <th>value</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>46</th>\n",
" <td>2021-04-30 17:40:07.131095</td>\n",
" <td>36.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>47</th>\n",
" <td>2021-04-30 17:42:06.586292</td>\n",
" <td>35.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>48</th>\n",
" <td>2021-04-30 17:43:22.915849</td>\n",
" <td>34.4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>49</th>\n",
" <td>2021-04-30 17:46:58.308528</td>\n",
" <td>32.8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50</th>\n",
" <td>2021-04-30 18:03:05.450975</td>\n",
" <td>27.9</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" datetime value\n",
"46 2021-04-30 17:40:07.131095 36.0\n",
"47 2021-04-30 17:42:06.586292 35.0\n",
"48 2021-04-30 17:43:22.915849 34.4\n",
"49 2021-04-30 17:46:58.308528 32.8\n",
"50 2021-04-30 18:03:05.450975 27.9"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = pd.read_csv('temp.csv', parse_dates=[0])\n",
"\n",
"time = df['datetime'].values\n",
"vals = df['value'].values\n",
"\n",
"mins = (time - time[0]) / np.timedelta64(1, 'm')\n",
"\n",
"df.tail()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# find and fit function\n",
"\n",
"the next thing I did was to try and figure out what function to fit it with\n",
"\n",
"I was using this to explain something of the form $\\exp(-t \\tau)$ but wasn't sure what other terms were in there. I ended up with:\n",
"\n",
" * `b` for a \"baseline\" equlibrium temperature, i.e. room temperature\n",
" * the boiling point; actually slightly above presumably because the metal pan was a bit hotter\n",
" * $\\tau$, the cooling rate\n",
" * some exponent; not sure what the physical interpretation of it is but maybe the difference in cooling between metal/water?\n",
" \n",
"this gets a reasonable fit using a single significant digit"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXsAAAD7CAYAAACL+TRnAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Z1A+gAAAACXBIWXMAAAsTAAALEwEAmpwYAAAqkUlEQVR4nO3de3Sc9X3n8ffzPHOTRhrrYkkjS5Zt2VjIxtjYDiYJlMSmmLMRBnb3xD12WLol4XRpEkgPLW7a4CbkZujpCacmJ23TnpBdNiS7aQg4bYCaZJPQYGyMCb5gG+GLbqO7NLrO7Xn2j5FGEpKvsjzSzOd1jo5nnnlm9HuQ+DyPvr/LYziO4yAiIhnNTHcDRERk5insRUSygMJeRCQLKOxFRLKAwl5EJAvMyrCPx+M0NjYSj8fT3RQRkYwwK8M+FAqxadMmQqFQupsiIpIRZmXYi4jIlaWwFxHJAgp7EZEsoLAXEckCCnsRkSygsBcRyQIKexGRLOBKdwOuJDsWYfj0YQyXG9/i6zAMnctERCDDwj4aOsVwy3sAWPlFeOZXprlFIiKzQ0Zd+jrxaOpxYqA3jS0REZldMirsDY8v9diJDqexJSIis0tGhb05LuztmMJeRGRURoW94R4X9tGhNLZERGR2yaiwH39l78QiaWyJiMjsklFhP75mb6tmLyKSkllhb7kxTAsAJxHHScTS3CIRkdkhs8LeMDDc3tRzXd2LiCRlVNjDB+r2CnsRESDDw95WJ62ICJCBYT9h+GVEwy9FRCADw970+VOP7eH+NLZERGT2yLiwt3IDqceJwXAaWyIiMntkXtjn5Kce20N9aWyJiMjskXFhb+bkYWAAYA8P4iTiaW6RiEj6ZVzYG6aFmZOs2zs4JIZUtxcRybiwB7Byxur29pDq9iIiGRn2Zu5Y3V43MRERydCwt/wFqccKexGRiwj7Xbt2sXHjRmpqajhx4kRq+6lTp9i6dSubN29m69atnD59+qJeuxomhn3PVf3eIiKz0QXDftOmTTz77LNUVFRM2L5z5062bdvGSy+9xLZt23jssccu6rWZZNsOB4618uP/aKG5YxDHcUgMD2CPuzetiEg2umDYr1+/nvLy8gnbOjs7OXr0KHV1dQDU1dVx9OhRurq6zvvaTLJth69/7w2+/N3X+V8vneDFAx385lBTMvB1dS8iWc51OW9qaWmhrKwMy0quHW9ZFqWlpbS0tOA4zjlfKyoqmvRZ4XCYcHjiiJlQKHTJbTp4vI19R8be12f7aGzv4sj7nayv7sY9r/SSP1NEJFNcVthfSc888wy7d++e9ufUN/ZMeN5r51JBF+/Ud3BqcB/3/o/lmKYx7e8jIjIXXVbYl5eX09raSiKRwLIsEokEbW1tlJeX4zjOOV+byn333cc999wzYVsoFGL79u2X1KallQUTnvfYuanHHU1NHDzexvraskv6TBGRTHFZQy+Li4upra1lz549AOzZs4fa2lqKiorO+9pUAoEAlZWVE76CweAlt2ltTSkbVo69r8/JIeEkD89nRjl1tvWSP1NEJFMYjuM459vhq1/9Ki+//DIdHR0UFhZSUFDAz372M+rr69mxYwfhcJhAIMCuXbuorq4GOO9rF6OxsZFNmzaxd+9eKisrL/p9tu3w3Cvv8oOXk0NEb/S8R5GVXC7hw3VbWHvTDRf9WSIimeSCYZ8Olxv2AG8cCfH4P+8DYLmrmWp3GwAf3ngLazduvOJtFRGZCzJuBu2p5rEZsz322I1MXt93BNuedec1EZGrIuPCfnxH7fhO2kR/D28ea0lDi0RE0i/jwn5tTSmVpXkARHEzaHsBMA2bH724X1f3IpKVMi7sTdPgv9etTD0ff3U/3N3OweNt6WiWiEhaZVzYA6yvLUtd3XePq9sXm32819idrmaJiKRNRob9+Kv7Tntsbfsic4A3j4RUyhGRrJORYQ/Jq/uaqkIGHQ9DtgcAy0jQOjKbVkQkm2Rs2JumwbprSwFjwtV9sdmvUo6IZJ2MDXsARtY967TzUpuKzX6VcUQk62R02Bsjad+ZGAv7AnOA195qUOCLSFbJ6LBftrAASI6377NzADAMh6HOVtXtRSSrZHTYr60ppaIkOfRyfClnvqUhmCKSXTI67E3T4JY1yYXU2hOB1PZSM4yjMo6IZJGMDnsAa+TuVF22n7iTvFVijhnBFR9IZ7NERK6qjA/70bq9g0nHuCGYZ46fVCetiGSNjA/7tTWl1FQVAtA2rpQTaW/izXd19yoRyQ4ZH/amaaTuPdueCICTLOsUmIP8zxcO6epeRLJCxoc9jJVyYrjoHl0F03CIdrXo6l5EskJWhP34Ne7b7Hmp7WVWL//8ou5gJSKZLyvCfvwqmK2JsbCfb/YRauvVBCsRyXhZEfYwtsb9oOMlPFLKMQ2bUqtXE6xEJONlTdiPv7oPjbu6D1q9HDjaplKOiGS0rAl7GFvjviVRkNo23+yj/myHOmpFJKNlVdiPDsMccrz0fqCUo45aEclkWRX2MDYMMzTu6n6B1UNjW786akUkY2Vd2I8Ow2xJFKQmWM03+/ASo76pJ61tExGZKVkX9qMdtcOOZ2zZY8NhgaubpRUFaW2biMhMybqwh2RH7YaVQZoThaltKwsGsRO26vYikpGyMuxN0+CLf3gj9997G3l+HwDxgR6e+t4v+fr33lDgi0jGycqwh2TgGy4PJ3pzUtsqXN3sOxJSR62IZJysDXuA9xq6aUoUpZ5XWF2Y2JpRKyIZJ6vD3iF5b9pB2wuAy0hQbvWojCMiGSerw97AAAwaEsWpbQtdnfz6ULMCX0QySlaH/egEq6Z4IbaT/E9RYA4Qbm9T3V5EMkpWh/3oBKso7glLHy90daluLyIZJavDfvxKmGfHlXIWWN0cPKJSjohkjqwOexhbCbPb9tNvJ8fcW0aCgeZTKuWISMbI+rAfuyG5QUN87Op+kauDepVyRCRDTDvsf/GLX3D33Xdz1113sWXLFl5++WUATp06xdatW9m8eTNbt27l9OnT0/1WM2a0o7YxUUTcsQDwm8P0NJ/lwLFWlXNEZM6bVtg7jsOf//mf88QTT/DTn/6UJ554gkcffRTbttm5cyfbtm3jpZdeYtu2bTz22GNXqs1X3NqaUjasDJLAmnB13/buO3z5u69rCQURmfOmfWVvmiZ9fX0A9PX1UVpaSnd3N0ePHqWurg6Auro6jh49SldX16T3h8NhGhsbJ3yFQqHpNusSjyG5Vs7OT99E1arrcUaWPi6y+gkYg1pCQUTmPNd03mwYBt/61rd48MEHyc3NZWBggH/4h3+gpaWFsrIyLCtZErEsi9LSUlpaWigqKprwGc888wy7d++eTjOuiNHafX1jD+8cLqDclazXL3G183ZsEfVNPSO1fRGRuWdaYR+Px/n7v/97vv3tb7Nu3TrefPNNHn74YZ544omL/oz77ruPe+65Z8K2UCjE9u3bp9O0y7a0soAX4iWpsA9aPRyPl2utexGZ06YV9seOHaOtrY1169YBsG7dOnJycvB6vbS2tpJIJLAsi0QiQVtbG+Xl5ZM+IxAIEAgEptOMK2ptTSm1K6rpPNlCsdWHYTjcUR1nbU1pupsmInLZplWzDwaDhEIh3n//fQDq6+vp7Oxk0aJF1NbWsmfPHgD27NlDbW3tpBLObDRav6/7z7/P9cvm87EbKrlnlRviw+lumojIZTMcx5nWMJMXXniBf/zHf8Qwkp2an//857ntttuor69nx44dhMNhAoEAu3btorq6+qI+s7GxkU2bNrF3714qKyun07zL5jgOfW+9Qrw/Wc7xVdaQW70mLW0REZmuaYf9TJgNYQ8Q7Wik/+hrABimxbwb6zA9vrS1R0TkcmX9DNrzcRdX4PIXAODYCYYbj6e3QSIil0lhfx6GYeBbtDL1PNJ8Ejuq2r2IzD0K+wtIXt0nlz/W1b2IzFXTGnqZDQzDwFe1kv5j/wHAcNNJjvbPo741wtLKAtbWlGKaRppbKSJyfgr7i+CeX4krr5BYXxe/eesMr7eEOBxbCMCGlUG++Ic3KvBFZFZTGeciGIZBzpLrCXUM0NjeT6XVhd9I1u61bo6IzAUK+4vkLgzSEvUnnxgONe6W1Gv1TT3paZSIyEVS2F+Cwpq1qcelVi+FZj+A1s0RkVlPYX8JblhzDf7ysVnA17qb2bCiTOvmiMispw7aS2CaBtv/8G6Ov/R/6Q4PUpTvo/ojGo0jIrOfwv4Suf35LL1hHUMNxwCInHkHX8lCDJc7zS0TETk3lXEug6+qFtOTA4AdHWbo7JE0t0hE5PwU9pfBsNzkVq9OPY80nSTW38uBY6388JXjukm5iMw6KuNcJndJFa7m94iHO7DtBD/83o/54akiIFm/12QrEZlNdGV/mQzDIHfpWgwMQh0D9IYaKLd6Uq9rspWIzCYK+2lw5RfiXbCMrnByNm2tuwk38dTrmmwlIrOFwn6achavorC4EACPEafG3Zx6TZOtRGS2UNhPk+Fyc82Hf4/KkjwAKl1dFJn91FQV8l5DjzprRWRWUAftFeAtqWTjbTdx9t136QoPk9fRyU/O5nD8bPL+teqsFZF005X9FeJftpYFwUKKAj76e7tZ7g6lXlNnrYikm8L+CjG9OeQuXZPqrF3kaqfI7Eu9rs5aEUknhf0V5ClbwryKRannq9wNWCQAaGrrV/1eRNJGYX8FGYbBils2EixNjs7JMaPUjozO+cWbjXz5u6/z9e+9ocAXkatOYX+FuXJy+cQnt/CxGypZUh6g0tVJUJOtRCTNFPYzwFu2iEUrVpCf6wHgOncDOUY09fqv3mrU1b2IXFUK+xlgGAa516yjYH4RAC4jwWr3GQxsIFnSUTlHRK4mhf0MMV0eam75fSpK8gEosAZY5mpNvb7vSIhvPXdQnbYiclUo7GeQp2A+t999B0vKAwAsdbVNGI6pTlsRuVoU9jMsp6qWyqUj9601HFZ7zuIlNmEfddqKyExT2M8wwzBY8bHfTw3H9BoxbvCcxhyp34/SpCsRmUkK+6vA5cul7lOf5Na1C1lSHqDAGkiNvx+lFTJFZCZpIbSrxFsUZNmNH6G8/hCxuA3tHfTaOTQmitmwMsjamtJ0N1FEMpjC/iryVtQQ7+vm5jUQ6hhgVX8E/6pruWHNcq2IKSIzSmF/FRmGgX/5euzBXsoNg/ISMKPHIbYQvLnpbp6IZDDV7K8yw3LjX/FRTJcbADs6RP+R3+AkYhd4p4jI5VPYp4GVk4+/9iMYRrJ0E+/vZuDY6zhOcoSObTscONbKD185rklXInJFqIyTJu7CILnL1jNwcj8A0a5mzPpD+Kpv4Ovfe4N9R8ZufqI7XYnIdE37yj4SibBz505uv/127rzzTr70pS8BcOrUKbZu3crmzZvZunUrp0+fnu63yjje8mp8C69NPR9uPsnbv903IehBk65EZPqmfWX/5JNP4vV6eemllzAMg46ODgB27tzJtm3buOuuu/jpT3/KY489xve///1pNzjT5Cy+Hnuon2hHIwD9Jw8StPyEEgUT9qtv6mF9bVkaWigimWBaV/YDAwM8//zzPPTQQ6n68/z58+ns7OTo0aPU1dUBUFdXx9GjR+nq6pp+izOMYRj4azbgyi8GoCjfy/Xus8w3wxP206QrEZmOaV3ZNzQ0UFBQwO7du9m3bx9+v5+HHnoIn89HWVkZlmUBYFkWpaWltLS0UFRUNOEzwuEw4fDEYAuFJpYxMp1huci77hb63n6V4HyHqtJcnLbTvBFZSq/j58YVZdi2ww9fOc7SygLW1pSqfi8il2RaYZ9IJGhoaGDFihU8+uijvP322/zxH/8xTz311EV/xjPPPMPu3bun04yMYLq95K+6lfChvdy8poJlHQOsHujHv+pD/NvBLh7/532pfdVhKyKXalphX15ejsvlSpVrVq9eTWFhIT6fj9bWVhKJBJZlkUgkaGtro7y8fNJn3Hfffdxzzz0TtoVCIbZv3z6dps1JpjeX/FW30vf2q5SXJCddNTe8weFjLsCX2m90Lfzfu6FSV/kiclGmVbMvKipiw4YNvPbaa0ByBE5nZyeLFy+mtraWPXv2ALBnzx5qa2snlXAAAoEAlZWVE76CweB0mjWnWbkB8q67FcNKTrrq7uxhg7eeXGN4wn5aC19ELoXhOM60kqKhoYEvfvGL9PT04HK5ePjhh7n11lupr69nx44dhMNhAoEAu3btorq6+qI+s7GxkU2bNrF3714qKyun07w5K9bbRv87v6K5tZdfvtXIsOPhjchSBh3vpH13fvomjdQRkfOadtjPBIV9Uqynjb53fsWvD56hsb3/nIG/+pr53H3rMpV0ROScNIN2FnMXlJK/6hZuwaGlLcyZUBia6nkjWs2gM1bDf/tkB2+f7FDHrYick9bGmeXcBWXkX3cLC8rmseG6cpaVebjJ+x75xtCkffcdCfHDfz+uGr6ITKKwnwPchUHyVt6Mabm4eU0Ft68NcndFC/OMgUn7/u+XjqvTVkQmUdjPEe7CIPmrbsV0eSgvyWNlVYAbve9TbPZN2nd0aKZWzBSRUQr7OcQ1r4T86z+O6fYSnO9nUWkO6zynKLe6J+2roZkiMp7Cfo5x5ReSv3ojli+Xm9dUsHpZEas9Z1jiagMmh7pWzBQRUNjPSVZugPzVm3D557GyupjKkjxq3M2scDdhTBH49U09V7+RIjKraOjlHGX5/OSv3sjA0ddSNzA/EwqT03iKQ9FFJLBS+2rFTBFR2M9hpttL3qpbGTj+BuXGWYLz/cTiTXha6zkYWUwEDxtWBllbU4ptOxw83kZ9Y49WzhTJQgr7Oc4wLfzX3oTpy2W44d3UipkfHewlf8VHWXND8k5YutWhSHZT2GcAwzDIXbIay+tnsP4g5SV5lAPG4GFirV7e6fFPeatDrZwpkj0U9hnEu2AZZm4+A8d+ix2L4Dg2Ayf309Gag4GN84H++F+82cgv3mzUVb5IFtBonAzjLigjf81tuPzzUtsWmu3c6HkfD7Ep36PhmSKZT2GfgaycPPLXbMJTshCA4Hw/q4LwUd+JKWfcAvzqrUZ++MpxzboVyVAq42Qow3Ljv/bDWP4Chk8fTnXc1oQ6+PezA9THy3AYK9v84s3G1GOVdUQyj67sM5hhGORUrSBv1e9heXyUl+Rx03VBPragn/Uq64hkFYV9FnAXBgms3Yy7oBTDMLh5TQX/Zf08Pr+6m7rrc6d8j2bdimQWlXGyhOnNIW/VrQyfPcrwmaPJ4ZklML/9LKfcw7wbK59y1q0mY4lkBoV9FjEMk5xF1+EKzGfg+D7s6DDB+X4+XN5DUesJfhddRK+TO2HWrSZjiWQGhX0WGi3rDL73JtGOxlTn7Yf7usmvrmTVR9ZhmgYHjrVOORnr4PE23eBcZI5RzT5LmR4f/tqP4F9+49gNUaqLqaKZgbf3Eu/rpr6xZ8r3qp4vMvco7LOYYRh4g0sIrL0dV2B+ant8oIe+Q69Q4wlhYk96n1bRFJl7FPaSnIS1+uPkVq/GMJOdtI7jsJAWti9uodDsT+07Ws8XkblFNXsBkp23vsprcRdVMHhyP7HedgzDYNP1RaxcMECj7af42nWsXVmpzlmROUhhLxNYufnkXf9xoi31DJ76HSRiI6toRjD7DhBrjeIJLsEwzv9HoYZsiswuCnuZxDAMvAuW4S5ekByx09kMgB2PMnDyAJHQ++QuW4crv2jK92vIpsjso5q9nJPpzSVv5S3krbwFy+dPbY/3ddH31r8zcPIAdiwy6X0Hj7edc/18LbQmkh66spcL8hQvwF1QynDjuww3vItjJ3BwiLTUE2s/i69qBd4F16Q6d881ZFPr54ukj67s5aIYloucRdcRWLcZd1F5arsdjzH4/tuED/wb0bazOI7D0sqC836WFloTufp0ZS+XxMrJJ2/lLcS6mhl6/20SQ8n18RPDA/S/+1tcTSe4fvH1bFgZnFTKGe+9xm4AdeCKXCWG4zizroDa2NjIpk2b2Lt3L5WVlelujpyDYyeItLzP8Nkjk2r3rsIFnIyX8f+O9U1YK39UTVUhx892p56rtCMys1TGkctmmBa+imsIfOg/4au8dsJwzHh3M0v63uIzq4f5vWsDE973waCHsdKObTscONaqu2aJXGEq48i0mS4PudWr8S5YxtDp3xFtO5t6LdbZyP3L4fYlBZyMl7J40QLea+iZFPaQLO38/LenNWRTZAYo7OWKsXx+8q79MPHKWobPHCba2ZR8wYCFnh6qvL14zBhGafGU73cctMqmyAxRGUeuOFdeAXkrbyaw5jbchcHUdsdxiLSeYknvAf5rdQ/5xlDqtQ0rgxhMffU+usqmSjwil09X9jJjXIFi8lfdSry3naHT7xDrbU++YEDddV7WBwdojhkUX3M9a2649pzDMZdWFGhWrsg06cpeZpxrXgn5qzcSWL0xNUbfMAzKS/JYtwAWD/yO/t+9ynXFETasmFiuGV1l81yzcjVeX+TiXLEr+927d/N3f/d3vPjiiyxfvpxDhw7x2GOPEYlEqKio4Mknn6S4eOparWQH17wS8ueVEO/rZrjhKLGOJhySpZh4uIN4uIM/WZnLJ64t4+RAPtUL56fG35/vRiqj9XwtviZyblck7I8cOcKhQ4eoqKgAwLZt/uzP/oxvfOMbrF+/nm9/+9v8zd/8Dd/4xjeuxLeTOc6VX0jeio+SGAwz3HCMaNsZRqd7ONFBFnGGxX43Xk8UJ5oHPv85Z+WOvzH6B8s8NVWFrK8tY9lCBb/ItMs40WiUr3zlK/z1X/91atvhw4fxer2sX78egD/4gz/g5z//+XS/lWQYKzeAv2YD8268k5yFtZguT+o1JxFjuOkE4Td+Rv+R37Cq1D5niQemXnzt+Nlunn3pXb783df5+vfeUIeuZLVpX9k/9dRTbNmyZcJM15aWFhYsWJB6XlRUhG3b9PT0UFBQMOH94XCYcDg8YVsodO5p9pJ5TG8OOUuux1e1gmjraYabTqSWYXBwiHY2Ee1s4rPX+amrKeHkQD5LqkonXK2fq8wzavwQTpV7JBtNK+zfeustDh8+zCOPPHLZn/HMM8+we/fu6TRDMoRhufAuWIanfCnx7haGm04Q625NvW5HBqhigEW5Jm6jn0SfgREowTCMCy6+Bsn6/tqaUo3qkaw0rbDfv38/9fX1bNq0CUhekd9///3ce++9NDc3p/br6urCNM1JV/UA9913H/fcc8+EbaFQiO3bt0+naTKHGYaBu2gB7qIFJAbDRFrqibaewo7HAHAcm2jbWaJtZ7Fy8vEGl7BmcdUFF19bWlFw3lE9mrglmWxaYf/AAw/wwAMPpJ5v3LiR73znOyxbtowf/ehHHDhwgPXr1/Pcc89xxx13TPkZgUCAQCAw5WsiVm6A3KU3kLN4FdH2BiIt9cT7OlOvJ4b6GDz1O4xT7/D59WXUr6jieNjDgWOdkxZaW1tTyv/Ze2LK7zM6qkclHslUMzKpyjRNnnjiCXbu3Dlh6KXI5TIsF97gErzBJcT7uomE6pOjeBJxIFnbj/eEWESIJXlu6u5YyIn+Ek52GSytLEyF9vlG9WjilmSyKxr2r776aurx2rVrefHFF6/kx4sAyaGbrvz15FavJtrRRLT1FLGesclVdjxGtPV9FgNL5/lx+xZiD3ow/Mkr9Q+Wey5m4pau+mWu03IJMmcZlhtv2WK8ZYtJDA8QbT1NtPUUieGB1D6J4QESDcnbKVo5+XhKq3j0k9fydsNi6pt6WFpRcFETt87Vsbvjv32IQyfbdQKQWU9hLxnB8vnJWbQSX9UK4uF2oq1niHU0pDp1IVnfHzpzBM4cYXleIdfVLMRdnJsK5/OVeM511b/j6d9M6Bu4cUUZm29azKnmXoW/zCoKe8kohmHgnleKe14pzrK1xLpDRNvPEutsTtX3AeL93cT7u+HU77ByA3jmV3L9ggVsWFHGvqNjwz0v1LH7wXX53zjayhsfeL9q/jIbKOwlYxmmhae4Ak9xBU4iRqyrhWjbWWJdLTiOndovMRhm6OxROHuUP1mZw53V+bw/mMvCJYtYe23wvB27F6JhnTJbKOwlKxiWG09JFZ6SKux4lFhHE7HOJmLdIRw7kdrPiQ6x0BpiYT6YPS0MngjiLixnTXVwUsfuVLdXnMr4xdpGqbNXrjaFvWQd0+VJDeN0EjFi3a3EOhqJdTVPqPHb8Whq8paBwefWFFK3rIj3+31ULV7ImuWlfPP7+887kQvGFmtLfe55hngCOgnIjFDYS1YzLDee+ZV45lfi2Anive3EOpJr8djRsTtpOTgk+ruoAqrywAw3E6kP8sgnyjn8oQXUtw5SvWAeP//tGd44OnlY53jn6ux9891WXnr9jMb5y4xQ2IuMMEwLd2EQd2GQnGVrSfT3EOtuJtbVQiLclVp7H8CODhNpPQ2tp1mKwfKiAly+Mq6/ayHv3FRJfUv/hGGd451riOevDzVpKQeZMQp7kSkYhjEyeauQnKqV2LEI8e4Qsa4WYt0h7Fgkta+DMza6h3dZapjUlBTjyo1j91sYeYUYppXa/1I7e6eq+YtcKoW9yEUw3V48pYvwlC7CcWwSfd3EupqJ9bSS6OtK3XwFkgu1xXrbifW2M3TmMIblxhUoxjVvPq55JdxwTfGUs3hvXl3BL95snPS9P1jzvxjqAJYPUtiLXCLDMJPhHSgmh1U48Rix3jbiPW3EultJDPZO2D/ZCRwi1h1Kvf9zNxRSt7SA031uKhdXsXZF8i5v51rK4VJojR+ZisJeZJoMlzs1nh/Ajg6lgj/W04odGZywf/Ivg06qDKgKgNHVSP+hAlyB+TzyiSBH1pXyXltkwgJul0LLOMtUFPYiV5jpyRlX8nGwhweSN1TvbSfe2566C9eoiTX/kywBlub7cNnFRBo7k39F5BVhuNwX9f0v5ubskn0U9iIzyDAMrJw8rJw8vGWLgZEr/96R8A93kOjvmTDSJ7nPMNHOJuhsSn4OBpY/gJVfjCu/GCu/ECs3MKHjd9SFbs4u2UlhL3KVmZ4cPCUL8ZQsBJKTtxLhDuLhzuRXXxdOIjbhPQ4O8YFe4gO9RELvA8mholZuACu/CFdeIVZeIZZ/3nmXcZbspbAXSTPT5cEcuQ0jkCz9DIaJ9yXDP9HXSWIgPOnq37ETqfLP6EBQwzCwcufx8EcKOFkT5HQPLFxcydraBeqczXIKe5FZxjAMLP88LP88vMFqIDmiJ97XTaIveeWf6O+esG7/KMdxiA/0wEAPi4BF+UDnafoO+LH8BanPtXLnYebmYxjmVT02SR+FvcgcYFhu3AWluAvGSjF2LJIM/f4e4v3dJPq7SAz1T/n+xPBA8uQw0gcAI2WgnPzkSSAveQKw/AUYHh+Gob8CMo3CXmSOMt1ezJHlHUbZ8SiJ/p6Rk0CyxGMP9U2Y9DXKsRPEB3qSfwm0jftclwczNx8rJ4CVG0g9NnP8+ktgDlPYi2QQ0+XB/MBfAI6dIDEYJjHQO/LVQ2KwFzsyNOVn2PEo9khn8XiGYWLm5GPl5idPAjnJf63cfAzr4oaFSvoo7EUynGFauPIKceUVTthuxyIkBntJ9Pcm/x3oSXYEf2Ak0CjHsZP7fWCGMIDp8WH6kkNMzZw8LF8+5shj0+WZkeO6GjJp2QmFvUiWMt1ezJFbOI5yHAcnOpT8S2CwD3soPPY4OvVfApCcF2BHh4mHO6b+PuNOAFZOHqYvD9Pnx3B7Z23/QKYtO6GwF5EUwzAwvLmY3twJfQEATjyWDP6hvmQZaLCPxGAYe7h/yj6BUXYsklw19ANlIUj+1WH6/Jg+P5bXP/I4F3PkcTpPBpm27ITCXkQuiuFypxaAG89xbOzhQezhfhJD/dhDfeMe90+43+8HpfoTBsNMVTwaPRlYvrzkScDnx/TkYnpzkiclj2/KWcRXQqYtO6GwF5FpMQwztSSEe2K3AI5j40SGSAwngz8x1I89nDwhJIYHz9k/kHr/uJPBlN8bA8Pjw/TmYHpzMT05yZPCFTghZNqyEwp7EZkxhmFijJRpKJh4New4Dk48mvyrIDKAPTzyNfL4ok4GJPsY7OgQ9HVN3QYMDI935GTgw/DkJDuUPTnJE8XI8+T8grGhpZm27ITCXkTSwjAMDLcX0+2F/MJJr5/zZBAdwo4MYkeGcKLDk5aRmPQ5ODgjHcjnbQ8Ghtsz4STwhY/5OFFTxtnOKAsrSlh1bQWGHccxXLO2Y/lcFPYiMitd6GQAyTKPHR3GGQl/Ozryb2Twkk4IMHJSGOlMZtxKFIuARQXAQAt9b/4u2TbTSrXN8PgwXd7kXw9uX3K7x4vh9iVfd3sxrPRHbfpbICJymQzTwvL5wec/5z6OnUhe2UcGR4aIDo1c6Q8lTxQj/46/r/CFOHZi5AQzeOGdAcNyjQS/L3kicHnHThZuz9hjlxfT65uRSWoKexHJaIZpjfUbnIdjJ5JX9uc5IYy+7tiJS2qDk4iTSMRhisXrJrXXcuFf/iE8JVWX9D0uRGEvIsLISWFkjsH5OI4Ddhw7Ghkp+wzjRCM48cjYCWFkmx2L4MSGzzsPYdLnJ+JE2xsU9iIi6WQYBlhurBw35ORdcH/HcXASseQJIZYsFznRYex4FCcWwYlFsePJf514BMNy46tYfsXbrbAXEZlBhmFguDzg8gD5aWuH1isVEckCCnsRkSygsBcRyQIKexGRLKCwFxHJAgp7EZEsMCuHXiYSydlpoVDoAnuKiMgHBYNBXK6J8T4rw769vR2A7du3p7klIiJzz969e6msrJywzXAuZR7vVTI8PMzhw4cpKSnBsi7tpgOhUIjt27fz7LPPEgwGL/yGWSpTjgMy51gy5Tggc44lU44DruyxzJkre5/Px/r166f1GcFgcNKZbS7KlOOAzDmWTDkOyJxjyZTjgJk7FnXQiohkAYW9iEgWUNiLiGSBjAv7QCDAZz/7WQKBQLqbMi2ZchyQOceSKccBmXMsmXIcMPPHMitH44iIyJWVcVf2IiIymcJeRCQLZFTYnzp1iq1bt7J582a2bt3K6dOn092ki7Zr1y42btxITU0NJ06cSG2fa8fU3d3NZz7zGTZv3sydd97JZz/7Wbq6ugA4dOgQW7ZsYfPmzfzRH/0RnZ2daW7t+T344INs2bKFu+++m23btnHs2DFg7v1MRu3evXvC79dc+3kAbNy4kTvuuIO77rqLu+66i1//+tfA3DuWSCTCzp07uf3227nzzjv50pe+BMzw75aTQe69917n+eefdxzHcZ5//nnn3nvvTXOLLt7+/fud5uZm5+Mf/7hz/Pjx1Pa5dkzd3d3O66+/nnr+zW9+0/mLv/gLJ5FIOLfddpuzf/9+x3Ec5+mnn3Z27NiRrmZelHA4nHr8yiuvOHfffbfjOHPvZ+I4jnP48GHn/vvvT/1+zcWfh+M4k/7/cBxnTh7L448/7nzta19zbNt2HMdx2tvbHceZ2d+tjAn7jo4OZ926dU48Hnccx3Hi8bizbt06p7OzM80tuzTjf5kz4Zh+/vOfO/fdd5/z9ttvO5/4xCdS2zs7O501a9aksWWX5ic/+Ylzzz33zMmfSSQScT75yU86DQ0Nqd+vufrzmCrs59qx9Pf3O+vWrXP6+/snbJ/p361ZuVzC5WhpaaGsrCy1lo5lWZSWltLS0kJRUVGaW3d55vox2bbND37wAzZu3EhLSwsLFixIvVZUVIRt2/T09FBQUJC+Rl7AX/7lX/Laa6/hOA7f/e535+TP5KmnnmLLli0TpuDP1Z8HwCOPPILjOKxbt44//dM/nXPH0tDQQEFBAbt372bfvn34/X4eeughfD7fjP5uZVTNXmaXxx9/nNzcXD71qU+luymX7Wtf+xq//OUv+cIXvsATTzyR7uZcsrfeeovDhw+zbdu2dDflinj22Wd54YUX+PGPf4zjOHzlK19Jd5MuWSKRoKGhgRUrVvAv//IvPPLII3zuc59jcHBwRr9vxoR9eXk5ra2tqbXwE4kEbW1tlJeXp7lll28uH9OuXbs4c+YM3/rWtzBNk/Lycpqbm1Ovd3V1YZrmrLzymsrdd9/Nvn37CAaDc+pnsn//furr69m0aRMbN24kFApx//33c+bMmTn58xj97+zxeNi2bRsHDx6cc79b5eXluFwu6urqAFi9ejWFhYX4fL4Z/d3KmLAvLi6mtraWPXv2ALBnzx5qa2tn7Z/WF2OuHtPf/u3fcvjwYZ5++mk8Hg8A1113HcPDwxw4cACA5557jjvuuCOdzTyvgYEBWlpaUs9fffVV5s2bN+d+Jg888AC/+c1vePXVV3n11VcJBoP80z/9E5/+9Kfn1M8DYHBwkL6+PgAcx+Ff//Vfqa2tnXO/W0VFRWzYsIHXXnsNSI7A6ezsZPHixTP6u5VRM2jr6+vZsWMH4XCYQCDArl27qK6uTnezLspXv/pVXn75ZTo6OigsLKSgoICf/exnc+6YTp48SV1dHYsXL8bn8wFQWVnJ008/zcGDB9m5cyeRSISKigqefPJJ5s+fn+YWT62jo4MHH3yQoaEhTNNk3rx5PProo6xcuXLO/UzG27hxI9/5zndYvnz5nPp5QLLW/bnPfY5EIoFt2yxdupS/+qu/orS0dE4eyxe/+EV6enpwuVw8/PDD3HrrrTP6u5VRYS8iIlPLmDKOiIicm8JeRCQLKOxFRLKAwl5EJAso7EVEsoDCXkQkCyjsRUSygMJeRCQL/H9SmDebWpIThQAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"b = 20\n",
"x = np.linspace(0, mins.max() * 1.1, 301)\n",
"y = b + (110-b) * np.exp(-x**0.7 / 6)\n",
"\n",
"plt.plot(mins, vals, 'o', markeredgecolor='none')\n",
"plt.plot(x, y, lw=3, alpha=0.5)\n",
"sns.despine()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# fitting the model\n",
"\n",
"the above gave me a reasonable model, so lets get the computer to find a better set of parameters\n",
"\n",
"I drop the first value because things were changing quickly and I don't trust it, I also drop the final five values so we can evaluate its prediction on them"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[ 23.291 103.620 7.206 0.750]\n",
" [ 24.596 104.127 7.428 0.769]\n",
" [ 25.901 104.633 7.650 0.787]]\n"
]
}
],
"source": [
"def fn(x, baseline, maxtemp, tau, nonlin):\n",
" return baseline + (maxtemp - baseline) * np.exp(-x**nonlin / tau)\n",
"\n",
"mu, cov = optimize.curve_fit(\n",
" fn, mins[1:-5], vals[1:-5], \n",
" bounds=(\n",
" (10, 90, 0, 0.1),\n",
" (30, 120, 100, 1.0),\n",
" ),\n",
")\n",
"\n",
"sd = np.sqrt(np.diag(cov))\n",
"\n",
"# mean and 95% confidence intervals\n",
"ci = mu + np.r_[sd] * np.c_[[-2,0,2]]\n",
"\n",
"# print CI to 3 decimal places\n",
"with np.printoptions(formatter={'float': ' {:.3f}'.format}):\n",
" print(ci)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# plot fitted model"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"x = np.linspace(0, mins.max() * 1.1, 301)\n",
"y = fn(x, *mu)\n",
"\n",
"plt.plot(mins[:-5], vals[:-5], 'o', markeredgecolor='none', label='train')\n",
"plt.plot(mins[-5:], vals[-5:], 'o', markerfacecolor='none', label='test')\n",
"plt.plot(x, y, lw=3, alpha=0.5, label='model')\n",
"plt.legend()\n",
"sns.despine()"
]
}
],
"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.9.4"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
datetime value
2021-04-30 17:08:14.707438 100
2021-04-30 17:08:37.062307 99
2021-04-30 17:08:43.932709 98
2021-04-30 17:08:49.299562 97
2021-04-30 17:09:02.979321 96
2021-04-30 17:09:09.711191 95
2021-04-30 17:09:15.438128 94
2021-04-30 17:09:28.064464 93
2021-04-30 17:09:32.773158 92
2021-04-30 17:09:44.332116 91
2021-04-30 17:09:54.362163 90
2021-04-30 17:10:03.068615 89
2021-04-30 17:10:15.513784 88
2021-04-30 17:10:24.291685 87
2021-04-30 17:10:49.130468 85
2021-04-30 17:10:54.428221 84
2021-04-30 17:11:04.229592 83
2021-04-30 17:11:19.374549 82
2021-04-30 17:11:51.232014 80
2021-04-30 17:13:08.028572 75
2021-04-30 17:14:21.412127 71
2021-04-30 17:14:57.140697 69
2021-04-30 17:15:38.361332 67
2021-04-30 17:16:01.964434 66
2021-04-30 17:16:29.553462 65
2021-04-30 17:18:08.441326 61
2021-04-30 17:19:01.895971 59
2021-04-30 17:19:30.510499 58
2021-04-30 17:20:03.953868 57
2021-04-30 17:20:34.425178 56
2021-04-30 17:21:10.343802 55
2021-04-30 17:22:18.795121 53
2021-04-30 17:22:58.836391 52
2021-04-30 17:23:40.843307 51
2021-04-30 17:25:10.030313 49
2021-04-30 17:27:47.797129 46
2021-04-30 17:28:30.524073 45
2021-04-30 17:29:26.442544 44
2021-04-30 17:30:34.469252 43
2021-04-30 17:32:03.969454 41.7
2021-04-30 17:33:36.585476 40.5
2021-04-30 17:34:14.104094 40
2021-04-30 17:35:32.641652 39
2021-04-30 17:37:00.808456 38
2021-04-30 17:38:28.927920 37
2021-04-30 17:39:28.200478 36.4
2021-04-30 17:40:07.131095 36
2021-04-30 17:42:06.586292 35
2021-04-30 17:43:22.915849 34.4
2021-04-30 17:46:58.308528 32.8
2021-04-30 18:03:05.450975 27.9
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment