{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "Linear fit\n", "===========\n", "\n", "#### Given two list of x and y coordinates, and a list of errors on y, find the straight line that minimizes the sum of distances (along the y direction) between the line and the(x,y) points.\n", "

" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "import numpy as np" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "xdata = np.array([1, 2, 3, 4, 5])\n", "ydata = np.array([1., 2.3, 3., 3.7, 3.])\n", "yerr = np.array([0.5, 0.5, 0.5, 0.5, 0.5])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We want to find the parameters $a$ and $b$ of the line $y = b x + a$ which minimize:\n", "$ \\chi^2 = \\sum_i \\frac{(y_i - b x_i - a)^2}{\\sigma_i^2}$\n", " \n", "$a$ and $b$ are the solutions of the linear system:\n", "$\\begin{bmatrix}\n", "\\sum_i \\frac{1}{\\sigma_i^2} & \\sum_i \\frac{x_i}{\\sigma_i^2}\\\\\n", "\\sum_i \\frac{x_i}{\\sigma_i^2} & \\sum_i \\frac{x_i^2}{\\sigma_i^2}\n", "\\end{bmatrix}$\n", "$\\begin{bmatrix} a\\\\b \\end{bmatrix}$ = \n", "$\\begin{bmatrix} \\sum_i \\frac{y_i}{\\sigma_i^2} \\\\ \\sum_i \\frac{x_i y_i}{\\sigma_i^2}\\end{bmatrix}$\n", "\n", "Compute the entries which depend on the data:" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [], "source": [ "yerrSq = yerr*yerr\n", "sum_one_over_yerrSq = (1./yerrSq).sum()\n", "sum_x_over_yerrSq = (xdata/yerrSq).sum()\n", "sum_xSq_over_yerrSq = (xdata*xdata/yerrSq).sum()\n", "sum_y_over_yerrSq = (ydata/yerrSq).sum()\n", "sum_xy_over_yerrSq = (xdata*ydata/yerrSq).sum()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Construct the left-hand-side matrix" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 20., 60.],\n", " [ 60., 220.]])" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mat = np.array([[sum_one_over_yerrSq,sum_x_over_yerrSq],[sum_x_over_yerrSq,sum_xSq_over_yerrSq]])\n", "mat" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Compute the inverse matrix:" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 0.275, -0.075],\n", " [-0.075, 0.025]])" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mat_inv = np.linalg.inv(mat)\n", "mat_inv" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Check" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[1., 0.],\n", " [0., 1.]])" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.dot(mat,mat_inv)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Compute the right-hand-side vector" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 52. , 177.6])" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "noti = np.array([sum_y_over_yerrSq,sum_xy_over_yerrSq])\n", "noti" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0.98, 0.54])" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.dot(mat_inv,noti)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Extract a and b multiplying both sides by the inverse:" ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.980000000000004\n", "0.54\n" ] } ], "source": [ "a, b = np.dot(mat_inv,noti)[0],np.dot(mat_inv,noti)[1]\n", "print(a)\n", "print(b)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Plot the result:" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[,\n", " ]" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "

" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots()\n", "plt.plot(xdata,b*xdata+a,xdata,ydata,'o')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "hide_input": false, "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.8.3" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": true, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": {}, "toc_section_display": true, "toc_window_display": false }, "varInspector": { "cols": { "lenName": 16, "lenType": 16, "lenVar": 40 }, "kernels_config": { "python": { "delete_cmd_postfix": "", "delete_cmd_prefix": "del ", "library": "var_list.py", "varRefreshCmd": "print(var_dic_list())" }, "r": { "delete_cmd_postfix": ") ", "delete_cmd_prefix": "rm(", "library": "var_list.r", "varRefreshCmd": "cat(var_dic_list()) " } }, "types_to_exclude": [ "module", "function", "builtin_function_or_method", "instance", "_Feature" ], "window_display": false } }, "nbformat": 4, "nbformat_minor": 4 }