{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Extracting Error Tails (fit_quadratic)\n", "## Introduction" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "When using finite displacements, we are always faced with extrapolating to zero discretization. This class will help us fit either a pure quadratic or a pure linear function to data using different algorithms. At present, the fit_quadratic module is purely functional, not object oriented. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Our goal is to fit the coefficients $c_1$ and $c_2$ using least squares for a purely linear or purely quadratic function: \n", "\n", "$$\\Large \n", "\\begin{align}\n", "f(x)=c_1+c_2x &&\\hspace{5mm}\n", "f(x)=c_1+c_2x^2\n", "\\end{align}\n", "$$\n", "\n", "We will need to have a function to perform [linear least square (lls)](https://en.wikipedia.org/wiki/Linear_least_squares) under these conditions. The code to execute this task uses the psuedoinverse, and it is quite succinct.\n", "\n", "```python\n", "def lls_quad(x,y,order=2):\n", " \"\"\"Perform linear least squares for either a pure linear or pure quadratic function.\n", " \"\"\"\n", " assert len(x)==len(y)\n", " dim=len(x)\n", " A=np.ones((dim,2),float)\n", " A[:,1]=poly(order)(x)\n", " c1,c2=np.dot(np.linalg.pinv(A),y)\n", " rmse=np.linalg.norm(c1+c2*poly(order)(x)-y)/np.sqrt(dim)\n", " return c1,c2,rmse\n", "\n", "def poly(order):\n", " \"\"\"Return either a linear or quadratic function.\n", " \"\"\"\n", " assert (order==1 or order==2)\n", " return (lambda x:x**2) if order==2 else (lambda x:x)\n", "\n", "```\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let us use the data from Figure 4b of our paper to explore (PRB 100, 014303 (2019))." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from matplotlib import pyplot as plt\n", "import numpy as np\n", "\n", "data=np.loadtxt('data/example_tail.dat')\n", "x,y=data[:,0],data[:,1]\n", "plt.figure(figsize=(12,6))\n", "plt.plot(x,y,'o')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Executing the code, we get the following:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1336.3374703042705 2529.859880342763 3.505933707687217\n" ] } ], "source": [ "import fit_quadratic as fit_quad\n", "c1,c2,rmse=fit_quad.lls_quad(x,y)\n", "print c1,c2,rmse" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Above we see that the answer is given by the intercept $c_1$. We also see that the root mean square error is rather small. Now let us plot the quadratic fit versus the data." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(12,6))\n", "plt.plot(x,y,'o')\n", "plt.plot(x,c1+c2*x**2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can also perform a linear fit by changing order:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "c1,c2,rmse=fit_quad.lls_quad(x,y,order=1)\n", "plt.figure(figsize=(12,6))\n", "plt.plot(x,y,'o')\n", "plt.plot(x,c1+c2*x)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It is not always obvious what the optimal answer is. Nonetheless, the first point is clearly very far off and we do not want it included in the data to be fit. In general, we want some automated algorithm that will decide for us what data should be kept of thrown out. Basically, we want to explore the RMS error for different subsets of data and then pick the lowest one, subject to some relevant constraints." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Fitting over subsets of data\n", "We need to provide a handful of functions in order to perform LLS on subsets of the provided data.\n", "First, consider the function `min_over_subsets`, which will perform LLS over some subsets of the data and find the minimum. Let us provide two subsets, and test this out." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(1333.6859441006618, 3975.5841461862437, 0.09985330879685789, [1, 2, 3, 4])" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fit_quad.min_over_subs(x,y,[[1,2,3,4],[2,3,4,5]])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We see that it has the same output for as lls_quad, but now it also returns the subset that it used. When choosing subsets of a given size, two obvious choices come to mind. First, we could take all consecutive subsets of a given length. Second, we could take all combinations of a given length. This is accomplished using the `make_subsets` function, which takes the length of the data set, the length of the subset, and the type of subset." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[0, 1, 2], [1, 2, 3], [2, 3, 4], [3, 4, 5], [4, 5, 6], [5, 6, 7]]\n", "\n", "[(0, 1, 2), (0, 1, 3), (0, 1, 4), (0, 1, 5), (0, 1, 6), (0, 1, 7), (0, 2, 3), (0, 2, 4), (0, 2, 5), (0, 2, 6), (0, 2, 7), (0, 3, 4), (0, 3, 5), (0, 3, 6), (0, 3, 7), (0, 4, 5), (0, 4, 6), (0, 4, 7), (0, 5, 6), (0, 5, 7), (0, 6, 7), (1, 2, 3), (1, 2, 4), (1, 2, 5), (1, 2, 6), (1, 2, 7), (1, 3, 4), (1, 3, 5), (1, 3, 6), (1, 3, 7), (1, 4, 5), (1, 4, 6), (1, 4, 7), (1, 5, 6), (1, 5, 7), (1, 6, 7), (2, 3, 4), (2, 3, 5), (2, 3, 6), (2, 3, 7), (2, 4, 5), (2, 4, 6), (2, 4, 7), (2, 5, 6), (2, 5, 7), (2, 6, 7), (3, 4, 5), (3, 4, 6), (3, 4, 7), (3, 5, 6), (3, 5, 7), (3, 6, 7), (4, 5, 6), (4, 5, 7), (4, 6, 7), (5, 6, 7)]\n" ] } ], "source": [ "print fit_quad.make_subs(8,3,stype='consec')\n", "print\n", "print fit_quad.make_subs(8,3,stype='combo')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Clearly, consecutive creates many fewer subset. We can now use these in min_over_subsets; let us explore subsets of length 4. Rather than having to enter this function manually, we provide a wrapper for min_over_subs which indicates that the min is being performed at constant subset type and size (ts)." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(1336.2001081303704, 2607.4008334790706, 0.02900291530967237, [13, 14, 15, 16])\n", "(1334.6874234166858, 2709.2952389247075, 0.010673836206792539, [5, 6, 18, 19])\n" ] } ], "source": [ "print fit_quad.min_over_subs_at_ts(x,y,4,stype='consec')\n", "print fit_quad.min_over_subs_at_ts(x,y,4,stype='combo')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We see that the subset of length 4 with minimum RMSE cannot be reached using the consecutive subsets. \n", "\n", "Now, we may want to compare subset of different lengths, so we have a function that will loop over a range of subset sizes for a fixed subset type. Given that smaller subsets will normally have smaller error, we need to somehow penalize smaller subsets. " ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1336.2001081303704 2607.4008334790706 0.02900291530967237 [13, 14, 15, 16]\n", "1334.6874234166858 2709.2952389247075 0.010673836206792539 [5, 6, 18, 19]\n" ] } ], "source": [ "ac1,ac2,armse,asub=fit_quad.min_over_subs_at_t(x,y,smin=4,smax=None,stype='consec',penalty=lambda x:1./x)\n", "bc1,bc2,brmse,bsub=fit_quad.min_over_subs_at_t(x,y,smin=4,smax=6, stype='combo', penalty=lambda x:1./x)\n", "print ac1,ac2,armse,asub\n", "print bc1,bc2,brmse,bsub" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We see that subsets of length 4 are selected in both cases. We could make the penalty function more severe if we want to push the solution to larger subset sizes; but we leave this for now. Let us look at the results." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(12,6))\n", "plt.plot(x,y,'o',color='blue')\n", "plt.plot(x,ac1+ac2*x**2,color='red')\n", "plt.plot(x,bc1+bc2*x**2,color='green')\n", "plt.plot(x[asub],y[asub],'o',color='red')\n", "plt.plot(x[bsub],y[bsub],'o',color='green')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here we have colored the points to indicate which points were selected in each respective fit: blue were not used, red were consec, and green were combo." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we were doing forward finite difference, we would want to fit to a linear curve, not a quadratic. Fortunately, all of this machinery is general to that case, and we simply need to supply `order=1`. Let us do an example:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "c1,c2,rmse,sub=fit_quad.min_over_subs_at_ts(x,y,4,stype='consec',order=1)\n", "plt.figure(figsize=(12,6))\n", "plt.plot(x,y,'o',color='blue')\n", "plt.plot(x,c1+c2*x,color='green')\n", "plt.plot(x[sub],y[sub],'o',color='green')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Using code from command line" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We will want to be able to use this code from the command line when exploring, and we can. Our inputs will be as follows:\n", "\n", "```python\n", " parser.add_argument('-order',help='Either fit pure linear (1) or pure quadratic (2).',default=2,type=int)\n", " parser.add_argument('-stype','--subset_type', help='Type of subsets which may be automatically chosen.',choices=['consec','combo'],default='consec')\n", " parser.add_argument('-ssize','--subset_size', help='Size of subset to explore.',default=None,type=int)\n", " parser.add_argument('-smin', help='Minimum subset size to search over.',default=None,type=int)\n", " parser.add_argument('-smax', help='Maximum subset size to search over.',default=None,type=int)\n", " parser.add_argument('-sub',help='Perform lls on given subset.', type=lambda s: [int(tt) for tt in s.split(',')] )\n", " parser.add_argument('file', help='Name of the input file.')\n", " parser.add_argument('-p','--plot', help='Plot the data along with the resulting fit.',action='store_true')\n", "\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here is a typical example from the command line." ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "c0 c1 RMSE subset\r\n", "1336.20010813 2607.40083348 0.0290029153097 [13, 14, 15, 16] \r\n" ] } ], "source": [ "!fit_quadratic.py data/example_tail.dat -ssize 4 -stype consec" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If you have xmgrace installed, you can also interactively see a plot using -p (or get a png with -pp)." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "c0 c1 RMSE subset\n", "1336.20010813 2607.40083348 0.0290029153097 [13, 14, 15, 16] \n", "xmgrace -nosafe -noask -hardcopy -hdevice PNG -batch /home/cam1/.ppbatchfile\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "!fit_quadratic.py data/example_tail.dat -ssize 4 -stype consec -pp\n", "from IPython.display import Image\n", "Image(filename='Untitled.png')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.17" } }, "nbformat": 4, "nbformat_minor": 2 }