{ "cells": [ { "cell_type": "markdown", "id": "ed73287e-2270-4fde-b11f-2a8cf5a61d74", "metadata": {}, "source": [ "## Spline\n", "\n", "`lamatrix` provides a Spline model which can be used to capture smoothly varying trends in time. B-Splines are useful because they are flexible, linear, and simple to fit. They are defined by the user by setting the widths of \"knots\", which tunes the scale of the variability." ] }, { "cell_type": "code", "execution_count": 1, "id": "5dfa6e3c-508b-45c6-b05e-83726a740e2e", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "x = np.arange(-10, 10, 0.01)\n", "\n", "\n", "from lamatrix import Spline" ] }, { "cell_type": "code", "execution_count": 2, "id": "7cae91be-7e48-4e0d-8303-3c0ab7552c9c", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\\[f(\\mathbf{x}) = w_{0} N_{1, {3}}(\\mathbf{x}) + w_{1} N_{2, {3}}(\\mathbf{x}) + w_{2} N_{3, {3}}(\\mathbf{x}) + w_{3} N_{4, {3}}(\\mathbf{x})\\]
" ], "text/plain": [ "'\\\\[f(\\\\mathbf{x}) = w_{0} N_{1, {3}}(\\\\mathbf{x}) + w_{1} N_{2, {3}}(\\\\mathbf{x}) + w_{2} N_{3, {3}}(\\\\mathbf{x}) + w_{3} N_{4, {3}}(\\\\mathbf{x})\\\\]'" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Spline(knots=np.arange(-4, 4), order=3).equation" ] }, { "cell_type": "code", "execution_count": 3, "id": "b405fadc-0dce-4a5e-9111-ecc7e1d98fc1", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\\[f(\\mathbf{x}) = \\sum_{i=0}^{n-1} w_i N_{i,k}(\\mathbf{x}) \\]\n", "\\[N_{i,k}(\\mathbf{x})= \\frac{\\mathbf{x} - t_i}{t_{i+k-1} - t_i} N_{i,k-1}(\\mathbf{x}) + \\frac{t_{i+k} - \\mathbf{x}}{t_{i+k} - t_{i+1}} N_{i+1,k-1}(\\mathbf{x})\\]\n", "\\[N_{i,1}(\\mathbf{x}) =\n", " \\begin{cases}\n", " 1 & \\text{if } t_i \\leq \\mathbf{x} < t_{i+1} \\\\\n", " 0 & \\text{otherwise} \\\\\n", " \\end{cases}\n", " \\]\n", "\\[t = [-4 , -3 , -2 , -1 , 0 , 1 , 2 , 3]\\]\n", "\\[ k = 3 \\]
" ], "text/plain": [ "'\\\\[f(\\\\mathbf{x}) = \\\\sum_{i=0}^{n-1} w_i N_{i,k}(\\\\mathbf{x}) \\\\]\\n\\\\[N_{i,k}(\\\\mathbf{x})= \\\\frac{\\\\mathbf{x} - t_i}{t_{i+k-1} - t_i} N_{i,k-1}(\\\\mathbf{x}) + \\\\frac{t_{i+k} - \\\\mathbf{x}}{t_{i+k} - t_{i+1}} N_{i+1,k-1}(\\\\mathbf{x})\\\\]\\n\\\\[N_{i,1}(\\\\mathbf{x}) =\\n \\\\begin{cases}\\n 1 & \\\\text{if } t_i \\\\leq \\\\mathbf{x} < t_{i+1} \\\\\\\\\\n 0 & \\\\text{otherwise} \\\\\\\\\\n \\\\end{cases}\\n \\\\]\\n\\\\[t = [-4 , -3 , -2 , -1 , 0 , 1 , 2 , 3]\\\\]\\n\\\\[ k = 3 \\\\]'" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Spline(knots=np.arange(-4, 4), order=3).spline_equation" ] }, { "cell_type": "code", "execution_count": 4, "id": "a6119226-bd3e-4914-b8fe-f56d08cd435d", "metadata": {}, "outputs": [], "source": [ "model = Spline('x', knots=np.arange(-10, 10), order=3)\n", "w = np.random.normal(size=model.width)\n", "sample = model.design_matrix(x=x).dot(w)" ] }, { "cell_type": "code", "execution_count": 5, "id": "85a4f430-8fc8-47d7-832d-5c6988c46728", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkMAAAHHCAYAAAC88FzIAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8ekN5oAAAACXBIWXMAAA9hAAAPYQGoP6dpAABdHklEQVR4nO3dB5hT1fb38U0RKdKUqnRQerVdUAGVKir2XlBBBb0qdrxX7GJBvfaGAvaCgl0UBRFBRBRBOkoR6SC9S97nt313/jPDlCST5JyT8/08T0iYSTlJJjnrrL322kUikUjEAAAAhFRRrzcAAADASwRDAAAg1AiGAABAqBEMAQCAUCMYAgAAoUYwBAAAQo1gCAAAhBrBEAAACDWCIQAAEGoEQ0DIDRs2zBQpUsQsWrQo+rOOHTvaUxjVqVPH9OrVK6Hb6nW88847TSbS89LzAzIRwRAQMDNmzDBnnHGGqV27tilZsqQ56KCDTOfOnc2TTz7p9aYBQCAV93oDAMRu4sSJ5thjjzW1atUyffr0MdWqVTN//PGH+f77783jjz9u/v3vfyflcb744ouk3A8ABAHBEBAg9913nylfvryZMmWKqVChQrbfrVq1KmmPU6JEiaTdFwD4HcNkQID89ttvpmnTpnsFQlKlSpVs/1d9x9VXX21ef/1107BhQzukduihh5rx48cX+Dg5a4bGjRtn7++dd96xAVmNGjXs/R1//PFmwYIFe91+8uTJplu3bjZwK126tOnQoYP57rvvCnzcrI9z11132SHAsmXL2mHBDRs2mB07dpjrrrvOPtf99tvPXHLJJfZnWe3evdvcc889pn79+mbfffe1NUC33XbbXteLRCLm3nvvtc9F26iM28yZM3PdrvXr19vHrVmzpr3PBg0amAcffNDs2bPHJEJDmnof9bgVK1Y0hx12mHnjjTeiv1+8eLHp16+ffd9KlSplDjjgAHPmmWdmq+vKWu81YcIEc80115jKlSvbv40rrrjC7Ny50273RRddZB9Dp5tvvtk+b0f3p9sPHjzYPPbYY3boVY+n9+vXX3+N6bm89tpr9u9Kt9t///3NOeecY7OVQJCQGQICRDurSZMm2R1Vs2bNCrz+N998Y95++227o9RO/JlnnrFByg8//BDT7XN64IEHTNGiRc2NN95og5OHHnrInH/++Tb4cb7++mvTvXt3u4O844477PWHDh1qjjvuOPPtt9+aI444osDHGTRokN253nrrrTbYUvCwzz772Pv666+/bDGvhgYVDNStW9cMHDgwetvevXub4cOH2wDqhhtusNum+5s9e7YZOXJk9Hq6jYKhE044wZ5++ukn06VLFxtEZLV161YbHPz55582yNAQpYYrBwwYYJYvX27+97//xfUavvjii/b90PZde+21Zvv27Wb69Ol2O8877zx7HWX+9BgKLBSsKWh59tlnbYA6a9YsG0RlpeFRDZkqgNTr8sILL9igSPeh7b3//vvNp59+ah5++GH7vitAyuqVV14xmzZtMldddZXdHg256v1SfVrVqlXzfC4KjG+//XZz1lln2dd99erV9r1q3769+fnnn3MN2gFfigAIjC+++CJSrFgxe2rbtm3k5ptvjowePTqyc+fOva6rj7dOP/74Y/RnixcvjpQsWTJy6qmnRn82dOhQe72FCxdGf9ahQwd7csaOHWuv07hx48iOHTuiP3/88cftz2fMmGH/v2fPnsjBBx8c6dq1q73sbN26NVK3bt1I586d831+7nGaNWuW7Tmde+65kSJFikS6d++e7fp6DWrXrh39/7Rp0+zte/fune16N954o/35119/bf+/atWqSIkSJSI9evTItp233Xabvd7FF18c/dk999wTKVOmTGTevHnZ7vPWW2+178OSJUuyveZ33HFHvs+xZ8+ekaZNm+Z7Hb1eOU2aNMne/yuvvLLXe5fz9dbrotfryiuvjP5s9+7dkRo1amR7X/We6/alSpWKLF26NPrzyZMn25/3798/+jM9r6y7jEWLFtnnf99992XbTv0tFC9efK+fA37GMBkQIJo1pszQySefbH755RebmenatasdTvrwww/3un7btm1thsZRlqBnz55m9OjR5u+//4778TUslbWe6JhjjrHnv//+uz2fNm2amT9/vs1wrF271qxZs8aetmzZYofUNEQXy9CSMhfKBDlHHnmkHd659NJLs11PP9eQjIbGRNkPuf7667NdTxki+eSTT+z5mDFjbAZIGZWs08U1FJbTu+++a5+nhpnc89GpU6dO9jWMZdgxK2VLli5darM/eVFWzNm1a5d9LTU0p9sqg5XTZZddlu15uNdLP3eKFStmh+Pce5XVKaecYv+GHGXvdB/u9czN+++/b99LZYWyvi7KUB188MFm7Nix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lwIVDN13332mXbt2pnTp0nZRz1goQzFw4EBTvXp1u2REp06dzPz581O+rWFUsmTJ6Kyy8ePHF3j9iRMn2vO2bdumfNsAAMiIYGjnzp3mzDPPNH379o35Ng899JB54oknzHPPPWeHb8qUKWO6du1q19FC8h133HH2/Kuvvsr3elu3bjXfffedvdyxY8e0bBsAAIEPhu666y7Tv3//aIO/WLJC//vf/8x///tf07NnT9vh+JVXXjHLli0zo0aNSvn2hlHnzp3t+ZgxY/KtG/r222/Njh07TM2aNU3Dhg3TuIUAAAQ4GIrXwoULzYoVK+zQmFO+fHlb6OvqVXKjnfTGjRuznRAbDWNquGz58uVm9uzZeV7viy++sOddunQxRYoUSeMWAgAQomBIgZBUrVo128/1f/e73AwaNMgGTe6k7AVio0DomGOOsZc//fTTPK/3+eefR4MhAABCHQzdeuutNjOQ32nOnDlp3aYBAwaYDRs2RE9//PFHWh8/6E455RR7/u677+b6+1mzZtmTZp65YTUAALxS3HjshhtuML169cr3OvXq1UvovqtVq2bPV65caWeTOfp/fmth7bvvvvaExJx22mnm3//+t+1EraHKunXrZvv922+/bc9VyM7irAAAE/ZgqHLlyvaUCtoJKyDSzCYX/Kj+R7PK4pmRhvjoNT/22GPt6z5kyBDbEsHZvXu3GT58uL18zjnneLiVAAD4ZJgsHkuWLLGrnOv877//tpd12rx5c/Q6jRo1MiNHjrSXNcR23XXXmXvvvdd8+OGHZsaMGeaiiy4yBx54YHQoB6nRr18/e/7888/bafTOe++9ZxYvXmwD4NNPP93DLQQAwCeZoXioeaLLKohr8Dd27NhorxqtdaU6H+fmm282W7ZsMZdffrlZv369Ofroo23xrgp9kTonn3yyqVOnju1E/eCDD9q2COoTdeedd0aDJd4DAIAfFInEsohUyGloTbPKFGSVK1fO680JjBEjRtgmmSVKlDAvvfSS+fLLL22fpypVqtiieOqFAAB+2H8TDMWAYCgx+tNSXdA777wT/VnRokVtw8uTTjrJ020DAGS+jTHuvwNVM4RgUc2WMkGaMagaoSZNmpgPPviAQAgA4CtkhmJAZggAgOAhMwQAABADgiEAABBqBEMAACDUCIYAAECoEQwBAIBQIxgCAAChRjAEAABCjWAIAACEGsEQAAAINYIhAAAQagRDAAAg1AiGAABAqBEMAQCAUCMYAgAAoVbc6w0IgkgkYs83btzo9aYAAIAYuf2224/nhWAoBps2bbLnNWvW9HpTAABAAvvx8uXL5/n7IpGCwiWYPXv2mGXLlpmyZcuaIkWKJDViVYD1xx9/mHLlyplMlOnPMdOfXxieI88v+DL9OWb680vlc1SIo0DowAMPNEWL5l0ZRGYoBnoBa9SokbL71xufqX/gYXmOmf78wvAceX7Bl+nPMdOfX6qeY34ZIYcCagAAEGoEQwAAINQIhjy07777mjvuuMOeZ6pMf46Z/vzC8Bx5fsGX6c8x05+fH54jBdQAACDUyAwBAIBQIxgCAAChRjAEAABCjWAIAACEGsFQit13332mXbt2pnTp0qZChQq5XmfJkiWmR48e9jpVqlQxN910k9m9e3e+97tu3Tpz/vnn2+ZUut/LLrvMbN682Xht3Lhxtkt3bqcpU6bkebuOHTvudf0rr7zS+FGdOnX22tYHHngg39ts377dXHXVVeaAAw4w++23nzn99NPNypUrjd8sWrTI/i3VrVvXlCpVytSvX9/O8Ni5c2e+t/P7+/f000/b961kyZLmyCOPND/88EO+13/33XdNo0aN7PWbN29uPv30U+NHgwYNMocffrjtjq/vjlNOOcXMnTs339sMGzZsr/dKz9Ov7rzzzr22V+9NJrx/eX2f6KTvi6C+f+PHjzcnnXSS7fqs7Rs1alS232ve1sCBA0316tXt90ynTp3M/Pnzk/45jgfBUIppJ3LmmWeavn375vr7v//+2wZCut7EiRPN8OHD7R+7/lDyo0Bo5syZ5ssvvzQff/yx/eO7/PLLjdcU+C1fvjzbqXfv3nbnethhh+V72z59+mS73UMPPWT86u677862rf/+97/zvX7//v3NRx99ZL+kv/nmG7u8y2mnnWb8Zs6cOXb5meeff97+fT322GPmueeeM7fddluBt/Xr+/f222+b66+/3gZ1P/30k2nZsqXp2rWrWbVqVa7X1+fw3HPPtUHhzz//bAMMnX799VfjN/pb0k7z+++/t98Fu3btMl26dDFbtmzJ93Y6iMr6Xi1evNj4WdOmTbNt74QJE/K8bpDeP9FBYtbnpvdRtN8I6vu3ZcsW+zlT8JIbfTc88cQT9rtl8uTJpkyZMvYzqYPGZH2O46ap9Ui9oUOHRsqXL7/Xzz/99NNI0aJFIytWrIj+7Nlnn42UK1cusmPHjlzva9asWWqHEJkyZUr0Z5999lmkSJEikT///DPiJzt37oxUrlw5cvfdd+d7vQ4dOkSuvfbaSBDUrl078thjj8V8/fXr10f22WefyLvvvhv92ezZs+17OGnSpIjfPfTQQ5G6desG9v074ogjIldddVX0/3///XfkwAMPjAwaNCjX65911lmRHj16ZPvZkUceGbniiisifrdq1Sr7d/XNN9/E/V3kV3fccUekZcuWMV8/yO+f6HNUv379yJ49ezLi/TPGREaOHBn9v55XtWrVIg8//HC278h999038uabbybtcxwvMkMemzRpkk3jVq1aNfozRbtatE5H5nndRkNjWTMtSjNqDTVF2X7y4YcfmrVr15pLLrmkwOu+/vrrplKlSqZZs2ZmwIABZuvWrcavNCymIa/WrVubhx9+ON9hzalTp9ojdr1HjlL4tWrVsu+l323YsMHsv//+gXz/lHHV65/1tdfnRP/P67XXz7Ne330mg/JeSUHvl4bUa9eubRfG7NmzZ57fNX6hIRQNudSrV89mxVVakJcgv3/6e33ttdfMpZdemu+i4EF7/7JauHChWbFiRbb3SGuHadgrr/cokc9xvFio1WP6o8gaCIn7v36X121UH5BV8eLF7RdgXrfxyksvvWS/iApa6Pa8886zH2594U2fPt3ccssttvbh/fffN35zzTXXmDZt2tjXWyl57fiVqn700Udzvb7ekxIlSuxVM6b32W/vV04LFiwwTz75pBk8eHAg3781a9bYoejcPmMaEoznM+n390rDm9ddd5056qijbECal4YNG5qXX37ZtGjRwgZPem81vK0daioXpE6UdpIqHdB263N21113mWOOOcYOe6lWKlPeP1Ftzfr1602vXr0y5v3Lyb0P8bxHiXyO40UwlIBbb73VPPjgg/leZ/bs2QUW+WX6c166dKkZPXq0eeeddwq8/6z1TsqUqbDu+OOPN7/99pst4vXT89O4taMvJAU6V1xxhS1m9Wu7/ETevz///NN069bN1i6oHsjP7x+MrR1SgJBfPY20bdvWnhztSBs3bmzrxO655x7jN927d8/2eVNwpMBb3yuqC8okOnjU89VBRaa8f0FBMJSAG264Id/IXZTOjUW1atX2qoh3s4z0u7xuk7NoTMM0mmGW1228eM5Dhw61Q0knn3xy3I+nLzyXmUjHzrQw76m2Va+/ZmLpqC0nvSdK8+qIL2t2SO9zqt6vwj4/FXgfe+yx9ov2hRde8P37lxcN2xUrVmyvmXv5vfb6eTzX94Orr746OpEi3uzAPvvsY4d79V4FgT5DhxxySJ7bG8T3T1QEPWbMmLizqUF7/6r9//dB74kOmhz9v1WrVkn7HMctKZVHKHQB9cqVK6M/e/75520B9fbt2/MtoP7xxx+jPxs9erSvCqhVJKei2xtuuCGh20+YMME+x19++SXid6+99pp9D9etW5dvAfWIESOiP5szZ45vC6iXLl0aOfjggyPnnHNOZPfu3YF//1R4efXVV2crvDzooIPyLaA+8cQTs/2sbdu2vizA1edMRaUqJJ03b15C96H3uGHDhpH+/ftHgmDTpk2RihUrRh5//PHAv385C8VVWLxr166Mev9MHgXUgwcPjv5sw4YNMRVQx/M5jns7k3IvyNPixYsjP//8c+Suu+6K7LfffvayTvpAuz/kZs2aRbp06RKZNm1a5PPPP7ezrwYMGBC9j8mTJ9s/du2knG7dukVat25tf6cdj3Ze5557bsQvxowZYz8EmjWVk56Hno+2XRYsWGBnmym4W7hwYeSDDz6I1KtXL9K+ffuI30ycONHOJNN79dtvv9lASO/XRRddlOfzkyuvvDJSq1atyNdff22fp76cdfIbbXuDBg0ixx9/vL28fPny6Cmo799bb71lv2iHDRtmDyQuv/zySIUKFaIzOC+88MLIrbfeGr3+d999FylevLj9stbfr3ZSCmZnzJgR8Zu+ffvag6xx48Zle6+2bt0avU7O56fvIh086e936tSpNugtWbJkZObMmRE/0gGVnp/+tvTedOrUKVKpUiU7cy7o71/WHbu+H2655Za9fhfE92/Tpk3RfZ32A48++qi9rP2hPPDAA/YzqO+K6dOnR3r27GkPnrdt2xa9j+OOOy7y5JNPxvw5LiyCoRS7+OKL7R9DztPYsWOj11m0aFGke/fukVKlStkPuT78WY8OdF3dRl8Gztq1a23wowBLWaRLLrkkGmD5gbatXbt2uf5OzyPra7BkyRK749x///3tH7t2xjfddJM9WvAbfflomq52QPoCaty4ceT+++/PlsXL+fxEH/J+/frZI9rSpUtHTj311GwBhp8ymLn9vWZNIgfx/dOXqnY2JUqUsEeY33//fba2APqcZvXOO+9EDjnkEHv9pk2bRj755JOIH+X1Xul9zOv5XXfdddHXomrVqpETTjgh8tNPP0X86uyzz45Ur17dbq8yAfq/AvBMeP8cBTd63+bOnbvX74L4/o39//usnCf3PJQduv322+326ztDB185n7tamCiQjfVzXFhF9E9yBtwAAACChz5DAAAg1AiGAABAqBEMAQCAUCMYAgAAoUYwBAAAQo1gCAAAhBrBEAAACDWCIQAAEGoEQwAAINQIhgAAQKgRDAEIpTfffNOUKlXKLF++PPqzSy65xLRo0cJs2LDB020DkF6sTQYglPTV16pVK9O+fXvz5JNPmjvuuMO8/PLL5vvvvzcHHXSQ15sHII2Kp/PBAMAvihQpYu677z5zxhlnmGrVqtmA6NtvvyUQAkKIzBCAUGvTpo2ZOXOm+eKLL0yHDh283hwAHqBmCEBoff7552bOnDnm77//NlWrVvV6cwB4hMwQgFD66aefTMeOHc3zzz9vhg0bZsqVK2feffddrzcLgAeoGQIQOosWLTI9evQwt912mzn33HNNvXr1TNu2bW2ApGEzAOFCZghAqKxbt860a9fOZoWee+656M8VHGm4TENnAMKFYAgAAIQaBdQAACDUCIYAAECoEQwBAIBQIxgCAAChRjAEAABCjWAIAACEGsEQAAAINYIhAAAQagRDAAAg1AiGAABAqBEMAQCAUCMYAgAAJsz+H6IRsETQ3G9CAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots()\n", "ax.plot(x, sample, c='k')\n", "ax.set(xlabel='$x$', ylabel='$y$', title='Spline model sample');" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.13" } }, "nbformat": 4, "nbformat_minor": 5 }