Added section on fat tails.
This commit is contained in:
1 parent
15a3c5c86c
commit
a4bcbd0f14
3 files changed
+365
-16
No files matched your search
+183
-16
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"metadata": {
|
||||
"name": "",
|
||||
"signature": "sha256:f08e94cbb6c00464eb37c3fd1d0eafa5e7453f677f35d30f69a0eafd0f7f71c4"
|
||||
"signature": "sha256:0e132ac8cc355b74191dd1be26d43c2cb06906e475027ce68a2bc08a6fab0984"
|
||||
},
|
||||
"nbformat": 3,
|
||||
"nbformat_minor": 0,
|
||||
@@ -261,7 +261,7 @@
|
||||
"output_type": "pyout",
|
||||
"prompt_number": 1,
|
||||
"text": [
|
||||
"<IPython.core.display.HTML at 0x7fbf8631b128>"
|
||||
"<IPython.core.display.HTML at 0x7fa7ee42f2b0>"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -302,7 +302,7 @@
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7fbf65c837b8>"
|
||||
"<matplotlib.figure.Figure at 0x7fa7ca5f8e80>"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -348,7 +348,7 @@
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7fbf65b2a400>"
|
||||
"<matplotlib.figure.Figure at 0x7fa7c9e35438>"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -425,7 +425,7 @@
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7fbf65a83748>"
|
||||
"<matplotlib.figure.Figure at 0x7fa7c9c539b0>"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -540,11 +540,11 @@
|
||||
"input": [
|
||||
"import numpy as np\n",
|
||||
"import matplotlib.pyplot as plt\n",
|
||||
"\n",
|
||||
" \n",
|
||||
"xs = np.arange(15, 30, 0.05)\n",
|
||||
"p1, = plt.plot(xs, [gaussian(x, 23, .2) for x in xs], label='var=0.2')\n",
|
||||
"p2, = plt.plot(xs, [gaussian(x, 23, 1) for x in xs], label='var=1')\n",
|
||||
"p3, = plt.plot(xs, [gaussian(x, 23, 5) for x in xs], label='var=5')\n",
|
||||
"plt.plot(xs, [gaussian(x, 23, .2) for x in xs], label='var=0.2')\n",
|
||||
"plt.plot(xs, [gaussian(x, 23, 1) for x in xs], label='var=1')\n",
|
||||
"plt.plot(xs, [gaussian(x, 23, 5) for x in xs], label='var=5')\n",
|
||||
"plt.legend()\n",
|
||||
"plt.show()"
|
||||
],
|
||||
@@ -554,9 +554,9 @@
|
||||
{
|
||||
"metadata": {},
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"png": "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\neLHWrVun/Px81dbWeqZZHT16VO+++66efPJJPf74455rKisrdeTIEZ/f48CBA63q8bj44ou1ePFi\nffzxxxoyZIjnnH/961+SpIsuuqjZ+1VWVurGG2/Unj17tHHjRp177rk+1x0oBA8AQNSwRjvSO7du\nVar0znHafaxaXxE8gLA3cuRIpaamKjc3V/n5+TrvvPN0wQUXSJKn4fzbIxvPPvusTNP0+T1a2+Nx\n00036cc//rEWLlyoBQsWSKobsV20aJHS0tI0YsQIz7klJSUqKipSv379PKMuLpdLEyZM0L/+9S+9\n+eabuuyyy3yuOZAIHgCAqLGvldOsLP27xEn7T90HQPiy2+0aN26clixZoqqqKj3xxBOe1zp16qSR\nI0dqzpw5qq6uVt++fbV161Zt2bJF3bt39zl8tLbHo3fv3po+fbp+85vfyOVy6dJLL9Wbb76prVu3\n6qWXXvLaPPD3v/+9fv7zn2vz5s2eJXYffPBBvfXWW7rxxhtVXFysl19+2ev+P/zhD1tckz8QPAAA\nUeNUf0fLVrSy0GAORJbs7GzNnz9fhmF4pllZXnnlFT3wwAN64YUXVFNToyuvvFKbNm3Stdde26BB\nOxAN208//bS6deumF154QX/60580cOBAvfTSSw1Cg2EYnv8s//73v2UYht566y299dZbDc4neAAA\nEGCtXdHK4gkejHgAEWH48OGNNopLUs+ePZWbm9vg+L59+7y+njx5siZPnuz32gzD0KOPPqpHH320\nyfN++tOf6qc//anXsc2bN/u9Hn9gSQ4AQFQwTdOzB0drp1r1TYqT3ZAOnaxRZW3jv6wAABpH8AAA\nRIUjlS4dr3arY6xNPRz25i9oRKzdUN+kWJmS9h+v8W+BABDhCB4AgKhwakWruDbNx07vYk23qvJL\nXQAQLQgeAICo0NqNA7+tfycazAGgNXwKHgsWLFB6erocDocyMjK0devWJs9fu3atLr/8cnXq1Ek9\nevTQzTffrN27d/ulYAAAWmNfGxvLLf270GAOAK3RbPDIzc3V9OnTNWvWLO3cuVOZmZkaPXq0Dh48\n2Oj5e/bs0c0336yRI0dq586d2rhxoyorK/WDH/zA78UDAOCrvW1sLLdYS/GylwcAtEyzwWPu3Lma\nMmWKpk6dqkGDBmnevHlKS0vTwoULGz1/586dcrvd+tWvfqX+/fvrwgsv1KOPPqqvvvqqRVLine truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7fbf62071978>"
|
||||
"<matplotlib.figure.Figure at 0x7fa7c9a9f080>"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -598,7 +598,7 @@
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7fbf65a8b780>"
|
||||
"<matplotlib.figure.Figure at 0x7fa7c9c5e780>"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -654,7 +654,7 @@
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7fbf65a7beb8>"
|
||||
"<matplotlib.figure.Figure at 0x7fa7c9cd9f60>"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -788,9 +788,9 @@
|
||||
"output_type": "stream",
|
||||
"stream": "stdout",
|
||||
"text": [
|
||||
"[ 3.39543572 3.92455822 -1.47839831 -1.33968944 4.64280739 3.57337785\n",
|
||||
" 2.4334426 -2.65214049 0.09098526 0.59452311 3.72292568 4.64627724\n",
|
||||
" 2.35639579 2.19228319 1.02386714]\n"
|
||||
"[-0.91921644 4.58775212 1.05856827 3.83479323 6.01848015 -1.41305258\n",
|
||||
" -1.97691685 -3.00926484 6.59031405 -1.99993401 5.14010913 4.05641238\n",
|
||||
" -1.57482631 2.70415239 0.49846418]\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -860,6 +860,173 @@
|
||||
"There are many other functions available, and if you are interested I urge you to peruse the documentation. I find the documentation to be excessively terse, but with a bit of googling you can find out what a function does and some examples of how to use it. Most of this functionality is not of immediate interest to the book, so I will leave the topic in your hands to explore. The <a href=\"http://docs.scipy.org/doc/scipy/reference/tutorial/stats.html\">SciPy tutorial</a> [2] is quite approachable, and I suggest starting there. "
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "heading",
|
||||
"level": 2,
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Fat Tails"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Earlier I spoke very briefly about the *central limit theorem*, which states that under certain conditions the arithmetic sum of **any** independent random variables will be normally distributed, regardless of how the random variables are distributed. This is extremely important for (at least) two reasons. First, nature is full of distributions which are not normal, but when we apply the central limit theorem over large populations we end up with normal distributions. Second, Gaussians are mathematically *tractable*. We will see this more as we develop the Kalman filter theory, but there are very nice closed form solutions for operations on Gaussians that allow us to use them analytically.\n",
|
||||
"\n",
|
||||
"However, a key part of the proof is \"under certain conditions\". These conditions often do not hold for the physical world. The resulting distributions are called *fat tailed*. Let's consider a trivial example. We think of things like test scores as being normally distributed. If you have ever had a professor 'grade on a curve' you have been subject to this assumption. But of course test scores cannot follow a normal distribution. This is because the distribution assigns a nonzero probability distribution for *any* value, no matter how far from the mean. So, for example, say your mean is 90 and the standard deviation is 13. The normal distribution assumes that there is a large chance of somebody getting a 90, and a small chance of somebody getting a 40. However, it also assumes that there is a tiny chance of somebody getting a -10, or of 150. It assumes that there is a infitesimal chance of getting a score of -1e300, or 4e50. In other words, the *tails* of the distribution are infinite. \n",
|
||||
"\n",
|
||||
"But for a test we know this is not true. You cannot get less than 0, or more than 100. Let's plot this using a normal distribution."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"xs = np.arange(10,100, 0.05)\n",
|
||||
"plt.plot(xs, [gaussian(x, 90, 13) for x in xs], label='var=0.2')\n",
|
||||
"plt.xlim((60,120))\n",
|
||||
"plt.show()"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"metadata": {},
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7fa7d23cb518>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 15
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"So the problem with this chart is that the area under the drawn curve cannot equal 1, so it is not a probability distribution. What actually happens is that a few more students get scores nearer the upper end of the range (for example), and that tail becomes 'fat'. Also, the test is probably not able to perfectly distinguish incredibly minute differences in skill in the students, so the distribution to the left of the mean is also probably a bit bunched up in places. The resulting distribution is called a *fat tail distribution*.\n",
|
||||
"\n",
|
||||
"We are not going to be applying Kalman filters to grades of student papers, but we are using physical sensors to measure the world. The errors in sensor's measurements are rarely truly Gaussian. And, of course, the signal itself will have time dependent correlations. For example, consider a sensor mounted on a helicopter. The rotating blades cause vibrations in the air frame, which will cause small deviations in the flight path. This deviation will be related to the frequency of the vibration, hence the values at t and t+1 are not *independent*. The vibration will also effect sensors such as the INS. No physical object can react instantly to changes, so the INS will somewhat lag the vibrations in a perhaps quite complex way, and so the noise introduced by the vibration will be anything but independent. \n",
|
||||
"\n",
|
||||
"It is far too early to be talking about the difficulties that this presents to the Kalman filter designer. It is worth keeping in the back of your mind the fact that the Kalman filter math is based on a somewhat idealized model of the world. For now I will present a bit of code that I will be using later in the book to form fat tail distributions to simulate various processes and sensors. This distribution is called the student's t distribution. \n",
|
||||
"\n",
|
||||
"Let's say I want to model a sensor that has some noise in the output. For simplicity, let's say the signal is a constant 10, and the standard deviation of the noise is 2. We can use the function `numpy.random.randn()` to get a random number with a mean of 0 and a standard deviation of 1. So I could simulate this sensor with"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"from numpy.random import randn\n",
|
||||
"\n",
|
||||
"def sense():\n",
|
||||
" return 10 + randn()*2"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"prompt_number": 16
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Let's plot that signal and see what it looks like."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"zs = [sense() for i in range(5000)]\n",
|
||||
"plt.plot(zs)\n",
|
||||
"plt.show()"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"metadata": {},
|
||||
"output_type": "display_data",
|
||||
"png": "iVBORw0KGgoAAAANSUhEUgAAAyIAAAGNCAYAAADtmMVMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XmYHFWhNvC3J/tGCCEhhOyAhAQCjCMifnJRrpKABgQE\nWQRcEISrcpErinIjyCKCQtgU9IIRAQUJEMIWspAACUkmySRkT2bf97Vn66W+P2Z6prun9jpVdarn\n/T2Pj2G6u+pU1amzLyFFURQQERERERF5KMvvABARERER0eDDiggREREREXmOFREiIiIiIvIcKyJE\nREREROQ5VkSIiIiIiMhzrIgQEREREZHnWBEhIiIiIiLP6VZENmzYgMWLF2PatGnIysrCsmXLUj5v\naWnBzTffjOnTp2P06NGYO3cuHn30UVcDTEREREREwTdU78NwOIwFCxbguuuuw7XXXotQKJTy+a23\n3or169fjH//4B2bPno3169fjhhtuwNFHH41rrrnG1YATEREREVFwhczurD5u3Dg8+eSTuPbaa/v+\nduqpp+Kyyy7DkiVL+v527rnnYsGCBXjsscfEh5aIiIiIiDKCozkiixYtwooVK1BWVgYA2LhxI/Ly\n8rBw4UIhgSMiIiIiosykOzTLyIMPPohrr70WM2bMwNChPYd64okncMEFFwz4bnNzs5NTERERERGR\nD8aPH+/KcR1VRG6//XZs3rwZb775JmbOnIn169fjZz/7GWbOnInzzz9fVBiJiIiIiCjD2K6IhMNh\nLF26FK+99houvPBCAMApp5yCvLw8PPzww6yIEBERERGRJtsVEUVRoCgKsrJSp5lkZWXBaP67W907\nNDjl5uYiJyfH72BQhmG8IrcwbpEbGK9INC+mVRgu33vo0CEAQDweR3FxMfLy8jBx4kRMnz4d5513\nHn7xi19g7NixmDFjBtavX4/nn38eDz30kOsBJyIiIiKi4NJdNWvr1q3Izs5GdnY2Ojs7sWTJEmRn\nZ/ct1/vCCy/g85//PK655hrMnz8fv//973Hvvffilltu8STwREREREQUTLo9Iueeey7i8bjm55Mm\nTcJf//pX4YEiIiIiIqLM5mgfESIiIiIiIjtYESEiIiIiIs+xIkJERERERJ5jRYSIiIiIiDzHiggR\nEREREXmOFREiIiIiIvIcKyJEREREROQ5VkSIiIiIiMhzrIgQEREREZHnWBEhIiIiIiLPsSJCRERE\n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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7fa7c9e35eb8>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 17
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"That looks like I would expect. The signal is centered around 10. A standard deviation of 2 means that 68% of the measurements will be within $\\pm$ 2 of 10, and 99% will be within $\\pm$ 6 of 10, and that looks like what is happenning. \n",
|
||||
"\n",
|
||||
"Now let's look at a fat tailed distribution. There are many choices, I will use the Student's T distribution. I will not go into the math, but just give you the source code for it and then plot a distribution using it."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"import random\n",
|
||||
"import math\n",
|
||||
"\n",
|
||||
"def rand_student_t(df, mu=0, std=1):\n",
|
||||
" \"\"\"return random number distributed by student's t distribution with\n",
|
||||
" `df` degrees of freedom with the specified mean and standard deviation.\n",
|
||||
" \"\"\"\n",
|
||||
" x = random.gauss(0, std)\n",
|
||||
" y = 2.0*random.gammavariate(0.5*df, 2.0)\n",
|
||||
" return x / (math.sqrt(y/df)) + mu "
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"prompt_number": 18
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"def sense_t():\n",
|
||||
" return 10 + rand_student_t(7)*2\n",
|
||||
"\n",
|
||||
"zs = [sense_t() for i in range(5000)]\n",
|
||||
"plt.plot(zs)\n",
|
||||
"plt.show()"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"metadata": {},
|
||||
"output_type": "display_data",
|
||||
"png": "iVBORw0KGgoAAAANSUhEUgAAAyQAAAGNCAYAAADghrULAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsnXd8VeX9xz8ngySEkEAYCRCWqCAVFRERFQVBcRQHTrSt\n2rqqdVerv1psa7VopWrValttrYoDtaCAgrIR2bJBIGTvvfc9vz9ubnLuuWc8z9n35vt+vVpJcu85\nz3nOs75bEEVRBEEQBEEQBEEQhAtEud0AgiAIgiAIgiB6LiSQEARBEARBEAThGiSQEARBEARBEATh\nGiSQEARBEARBEAThGiSQEARBEARBEAThGiSQEARBEARBEAThGiSQEARBEARBEAThGkwCyXPPPYez\nzjoLycnJGDRoEObMmYMDBw6EfO7pp5/G0KFD0bt3b0yfPh0HDx60vMEEQRAEQRAEQUQOTALJ+vXr\ncd999+G7777DmjVrEBMTg5kzZ6KqqqrrMwsWLMDChQvx6quvYvv27Rg0aBBmzZqF+vp62xpPEARB\nEARBEER4Ixip1N7Q0IDk5GQsXboUl19+OURRxJAhQ3D//ffjiSeeAAA0Nzdj0KBB+Mtf/oI777zT\n8oYTBEEQBEEQBBH+GIohqa2thc/nQ79+/QAAWVlZKCkpwcUXX9z1mfj4eEybNg2bN2+2pqUEQRAE\nQRAEQUQcMUa+9MADD+CMM87AOeecAwAoLi4GAAwePDjoc4MGDUJhYWHQ72pqaozckiAIgiAIgiAI\nl0lOTrb8mtwCycMPP4zNmzdj06ZNEARB9/MsnyEIgiAIgiAIomfC5bL10EMP4aOPPsKaNWswcuTI\nrt+npaUBAEpKSoI+X1JS0vU3giAIgiAIgiAIOcwWkgceeACLFy/G2rVrcdJJJwX9bdSoUUhLS8Oq\nVatw5plnAvAHtW/atAl/+ctfVK9ph8mH6Lns2LEDkyZNcrsZRARCY4uwAxpXhB3QuCLswO6QCyaB\n5N5778V7772HJUuWIDk5uStmJCkpCYmJiRAEAQ8++CCeffZZjB07FieeeCKeeeYZJCUlYd68ebY+\nAEEQBEEQBEEQ4QuTQPL3v/8dgiDgoosuCvr9008/jd/97ncAgMceewxNTU249957UVVVhSlTpmDV\nqlVITEy0vtUEQRAEQRAEQUQETAKJz+djutj8+fMxf/58Uw0iCIIgCIIgCKLnYKgOCUEQBEEQBEEQ\nhBWQQEIQBEEQBEEQhGuQQEIQBEEQBEEQhGuQQEIQBEEQBEEQhGuQQEIQBEEQBEEQhGuQQEIQBEEQ\nBEEQhGuQQEIQBEEQBEEQhGuQQEIQBEEQBEEQhGuQQEIQBEEQBEEQhGuQQEIQBEEQBEEQhGuQQEIQ\nBEEQBEEQhGuQQEIQBEEQBEEQhGuQQEIQBEEQBEEQhGuQQEIQBEEQBEEQhGuQQEIQBEEQBEEQhGuQ\nQEIQBEEQBEEQhGuQQEIQBEEQBEEQhGuQQEIQBEEQBEEQhGuQQEIQBEEQBMFJu0/Ewp1l2F7c6HZT\nCCLsIYGEIAiCIAiCk88za/HuwWrc+XWB200hiLCHBBKCIAiCIAhOyhrb3W4CQUQMJJAQBEEQBEEQ\nBOEaJJAQBEEQBEEQBOEaJJAQBEEQBEEQBOEaJJAQBEEQBEEQBOEaJJAQBEEQBEEQBOEaJJAQBEEQ\nBEEQBOEaJJAQBEEQPY62DhHvHaxCTm2r200hiLBiR0kjDlU0u90MIsIggYQgCILocSw6XI0Xd5bj\nqqU5bjeFIMKGutYO3LGqAPNW5LndFCLCIIGEIAiC6HH8UNnidhOIcEdwuwHOU9vic7sJRIRCAglB\nEATR4xAhut0EItyhIUQQlkECCUEQBEEQBEEQrkECCUEQBNHjEHqivw1BmESgaUPYBAkkBEEQRI+D\nXLYI09DhnCAsgwSSMOVQRTMa2ii4jCAIgiBcgWRagrAMEkjCkO8KGzBvRR5uWp7rdlMIgiAIgiAI\nwhQkkIQh3xY0AgDy6tpcbglBEARB9FDIZYsgLIMEEoIgCIIgCCIi+DyzFr9aU4DmdnJrDydIICEI\ngiAIgiAigvmbS7CpoBFLjtW63RSCAxJICIIgCKIH8+Hhajy9uQSiSFHaROTQ0kHjOZwggYQgCILo\ncdBRpZsF28uwNLMW+8qb3W4KQVgGpfYOL0ggIQiCIAgCrT46wBEE4Q4kkBAEQRA9DkqQRBAE4R1I\nICEIgiB6HGQL8C6VTe34595KlDe1u90UgiAcggSScIRUewRBEGHHsaoWLNhWipqWDreb4mke21iM\n1/dU4NH1RW43JSwpaY3CnCXZ+DLL+ixTAp0/CJsggYQgCIIgHOC6Zbn48IcavLCjzO2mKCJ4RNv1\nfWkTAGBPGQXZG+GD4njk1bXhyU0lbjfFVShpXHhBAglBEARBOEhubZvbTSAiGCoHSIQjJJAQBEEQ\nBOEZSLNNED0PEkgIgiAIgiAITyGKItopFXWPgQQSgiAIgiAIQhcno4x+saoA0z8+jtYOY05oJMqE\nFySQEARBED0OcgvyU0sZvwiPsqu0CfVtPhyvaXW7KYQDeFIgqW/twMaCBrSRqY4gCIIgbGFjQQMu\n+Ph418/eyLFFmIXeIxGOeFIgeXBdEe5fU4i391W63RSiB1Hb0oEOEoIJokdA9RSA/+yvCvqZVj8+\nvDqEIu09kjWzZ+BJgWRniT8H+eq8epdbQvQUShracMHHx/GTL/PcbgpBEA5AhxzCLDSECMI6PCmQ\ndEGznXCILUWNAIBDlS0ut4QgCMIZ5FYiJzT+PlGEqCMN0tZvDq9aboxC1syegbcFEoIgCIIgIoKW\nDh8u/iQLD64r4v5uQ5v3yv3ROdkZjFozyQoaXpBAQhAAhDBUwTS3+9DUbu8m/bfvy/HLbwootoYg\nCNMcqmhBRXMHNuQ3cH3vzb0VOO/DTKzJJTdutwm/nZIIF0ggISCKIjYVNKCiqd3tphAcnPNBJqZ+\nkAmfjWqgt/dX4buiRuyvaLbtHpGMTxTxu2+L8emRGrebQhBhyxt7/AluXt1d4XJLCOluo+d6RxA8\neFsgIVFcEau7ZXVuPX61phBXLc2x+MqEExisGcUF7TvG2FbUiC+O1+GZraVuN4Ugwh9aiDwFvQ3C\nSrwtkNBod4RdpX7td70HfXQJfXw0Ubj5+IdqLNxZZvt9mjro3RAEYQ9/+74cNyzLQbPNrrtSaEUj\n7MLbAglBEF20q8RxkNKQn+e2leHdg9XIqaUKwEeqWpBZzZ5dbmV2HW79Kg+V5OJJOAwtdcG8vb8K\nR6pasZ4zJscqaO8hrIRZINmwYQPmzJmDYcOGISoqCu+8807Q32+99VZERUUF/W/q1KmWN5iwl2s+\nz0F9a4fbzSBkVDV34JwPjuGpb4tD/kabgnFae7gFo8Mn4oZlubj2i1zm7/xmYzH2lDXj9T3u+fN/\nk1NHwmQPpGfPVoKIbJgFkoaGBkyYMAEvv/wyEhISQrISCYKAWbNmobi4uOt/K1assLzBhL1k1bRi\naWat280gZKzOrUe7D1h2vC7kb7RJE0bpMCHNtrgkzG0vbsSvNxTjqqU52F3ahBYngqgiFHk8Yhgm\nGyQcRrpk0N5DWAmzQHLppZfimWeewdy5cxEVFfo1URTRq1cvDBo0qOt/KSkpljaWcIZI1rj/dlMx\n7vmmICQ7iNf3YXn7pO23M8tW1/1svwNBsHGsutsyctvKfDy2PtRqSAAVTe343bfFOBRBGfIieW/y\nEu0+ETuKG3VjU5x6HfTaewaWxZAIgoBNmzZh8ODBOPnkk3HnnXeirMz+oFHCeiJ58i/PqsOWokZU\nNEeOW1okv6+wh16O5UTJpPMNBe74z3udZ7eV4ovjdZi3Is+W628tasSDawsdTRdP08kZ3tpfiTu+\nLsBvNpKwTziHZQLJ7Nmz8e6772LNmjV48cUXsW3bNsyYMQOtreTnS3gPr1tEpOjleu/hYRBobPPh\n3/srUVjfxv1dAX5toBNWpkjDrTkUTnPXTYrq9QUFM3159zcFWJ/fgL/uKjdxFcKLLO90DdYNlndo\n2TQ6TmlVDy9irLrQDTfc0PXv8ePH48wzz8SIESOwfPlyXH311Yrf2bFjh8rVkgEAjU1NGp/puZSU\nxAOIA6DVh+yUSq4HAHl5edjRmGn6um6g3x/+sbVnzx70jelerrKqYwH0ZryGc7xVkID8lmhc0K8V\nQAIAf/v8Cbf8z/L997uRFGPX0uu/x+HDh9GR602r0qLieKytisMr31fg2RNqMbAXS1/4n2vvgQO4\nPTcR/WJEPDVauwo067ho6BDwVmECLkhphd/hIZHr+07iz/Tt7wv29vk/X15RgR078m1plxa5Vb0Q\nmAsBjPRtZWUCgF6Gv28Mf981NNR33dOuezc09gEQrXmP2rpESI8BfPPc/yy5JZXM4+BYYzSAPppt\nkl67+3P+n5ubmz01jwrL4gDEA3Brfvv75fjx49hRLlXI9O76l5F2tTSrj52yVgFAXwDAzl07EWOr\nhsD/fAcPHkRDAk+smP97BQUF2NFy3IZ29UxOPPFEW69vmUAiJz09HcOGDcOxY8dUPzNp0iTlPxw6\nCgDonZCASZPG2tG8sGb9jjKgshqARh9ysGZ7GVBV3fVzRkYGJp3Sz/R1nWbHjh36/dE5tk477TSk\nJnQP/+LjtUBRCQBr+tQq7uhsb2vfNKDYX+170qRJfo3+Yf/cmiB7FkvpvP/YsWNxxqAEnQ+7w0sr\ncgH409Y+nZWMrTeP0f9S53MNGnUy6rIKUdeh/d6ZxlYnf9lehn311dhXH4uFF6QD+UUAvDWuArR2\n+IAf/MoH5vZ19t2A1FRMmpRmV9NUyTpSDRQHuwMb6dvFjUVAXb3h7xuis+8SE/tg0qRxXOLine truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7fa7c9d815f8>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 19
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"We can see from the plot that while the output is similar to the normal distribution there are outliers that go far more than 3 standard deviations from the mean. This is what causes the 'fat tail'.\n",
|
||||
"\n",
|
||||
"It is unlikely that the Student's T distribution is an accurate model of how your sensor (say, a GPS or doppler) performs, and this is not a book on how to model physical systems. However, it does produce reasonable data to test your filter's performance when presented with real world noise. We will be using distributions like these throughout the rest of the book in our simulations and tests. \n",
|
||||
"\n",
|
||||
"This is not an idle concern. The Kalman filter equations assume the noise is normally distributed, and perform sub-optimally if this is not true. Designers for mission critical filters, such as the filters on spacecraft, need to master a lot of theory and emperical knowledge about the performance of the sensors on their spacecraft. \n",
|
||||
"\n",
|
||||
"The code for rand_student_t is included in `filterpy.common`. You may use it with\n",
|
||||
"\n",
|
||||
" from filterpy.common import rand_student_t"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "heading",
|
||||
"level": 2,
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Created on Sat Jan 17 20:17:14 2015
|
||||
|
||||
@author: rlabbe
|
||||
"""
|
||||
|
||||
from scipy.stats import t, norm
|
||||
import matplotlib.pyplot as plt
|
||||
import numpy as np
|
||||
import math
|
||||
import random
|
||||
|
||||
|
||||
df =4
|
||||
mu = 10
|
||||
std = 2
|
||||
|
||||
x = np.linspace(-5, 20, 100)
|
||||
|
||||
plt.plot(x, t.pdf(x, df=df, loc=mu, scale=std), 'r-', lw=5, label='t pdf')
|
||||
|
||||
|
||||
x2 = np.linspace(mu-10, mu+10, 100)
|
||||
plt.plot(x, norm.pdf(x, mu, std), 'b-', lw=5, label='gaussian pdf')
|
||||
plt.legend()
|
||||
plt.figure()
|
||||
|
||||
def student_t(df, mu, std): # nu equals number of degrees of freedom
|
||||
x = random.gauss(0, std)
|
||||
y = 2.0*random.gammavariate(0.5*df, 2.0)
|
||||
return x / (math.sqrt(y/df)) + mu
|
||||
|
||||
|
||||
N = 100000
|
||||
ys = [student_t(2.7, 100, 2) for i in range(N)]
|
||||
plt.hist(ys, 10000, histtype='step')
|
||||
|
||||
ys = [random.gauss(100,2) for i in range(N)]
|
||||
plt.hist(ys, 10000, histtype='step',color='r')
|
||||
|
||||
plt.show()
|
||||
+140
@@ -0,0 +1,140 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Created on Sat Jan 17 15:04:08 2015
|
||||
|
||||
@author: rlabbe
|
||||
"""
|
||||
|
||||
|
||||
|
||||
from numpy.random import randn
|
||||
import numpy as np
|
||||
from numpy import array
|
||||
import matplotlib.pyplot as plt
|
||||
from filterpy.common import Q_discrete_white_noise
|
||||
from filterpy.kalman import KalmanFilter
|
||||
from math import sqrt
|
||||
import math
|
||||
import random
|
||||
|
||||
pos_var = 1.
|
||||
dop_var = 2.
|
||||
dt = 1/20
|
||||
|
||||
|
||||
def rand_student_t(df, mu=0, std=1):
|
||||
"""return random number distributed by student's t distribution with
|
||||
`df` degrees of freedom with the specified mean and standard deviation.
|
||||
"""
|
||||
x = random.gauss(0, std)
|
||||
y = 2.0*random.gammavariate(0.5*df, 2.0)
|
||||
return x / (math.sqrt(y/df)) + mu
|
||||
|
||||
|
||||
|
||||
np.random.seed(124)
|
||||
class ConstantVelocityObject(object):
|
||||
def __init__(self, x0, vel, noise_scale):
|
||||
self.x = np.array([x0, vel])
|
||||
self.noise_scale = noise_scale
|
||||
self.vel = vel
|
||||
|
||||
|
||||
def update(self, dt):
|
||||
pnoise = abs(randn()*self.noise_scale)
|
||||
if self.x[1] > self.vel:
|
||||
pnoise = -pnoise
|
||||
|
||||
self.x[1] += pnoise
|
||||
self.x[0] += self.x[1]*dt
|
||||
|
||||
return self.x.copy()
|
||||
|
||||
|
||||
def sense_pos(self):
|
||||
return self.x[0] + [randn()*self.noise_scale[0]]
|
||||
|
||||
|
||||
def vel(self):
|
||||
return self.x[1] + [randn()*self.noise_scale[1]]
|
||||
|
||||
|
||||
def sense(x, noise_scale=(1., 0.01)):
|
||||
return x + [randn()*noise_scale[0], randn()*noise_scale[1]]
|
||||
|
||||
def sense_t(x, noise_scale=(1., 0.01)):
|
||||
return x + [rand_student_t(2)*noise_scale[0],
|
||||
rand_student_t(2)*noise_scale[1]]
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
R2 = np.zeros((2, 2))
|
||||
R1 = np.zeros((1, 1))
|
||||
|
||||
R2[0, 0] = pos_var
|
||||
R2[1, 1] = dop_var
|
||||
|
||||
R1[0,0] = dop_var
|
||||
|
||||
H2 = np.array([[1., 0.], [0., 1.]])
|
||||
H1 = np.array([[0., 1.]])
|
||||
|
||||
|
||||
|
||||
kf = KalmanFilter(2, 1)
|
||||
kf.F = array([[1, dt],
|
||||
[0, 1]])
|
||||
kf.H = array([[1, 0],
|
||||
[0, 1]])
|
||||
kf.Q = Q_discrete_white_noise(2, dt, .02)
|
||||
kf.x = array([0., 0.])
|
||||
kf.R = R1
|
||||
kf.H = H1
|
||||
kf.P *= 10
|
||||
|
||||
|
||||
random.seed(1234)
|
||||
track = []
|
||||
zs = []
|
||||
ests = []
|
||||
sensor_noise = (sqrt(pos_var), sqrt(dop_var))
|
||||
obj = ConstantVelocityObject(0., 1., noise_scale=.18)
|
||||
|
||||
for i in range(30000):
|
||||
x = obj.update(dt/10)
|
||||
z = sense_t(x, sensor_noise)
|
||||
if i % 10 != 0:
|
||||
continue
|
||||
|
||||
if i % 60 == 87687658760:
|
||||
kf.predict()
|
||||
kf.update(z, H=H2, R=R2)
|
||||
else:
|
||||
kf.predict()
|
||||
kf.update(z[1], H=H1, R=R1)
|
||||
|
||||
ests.append(kf.x)
|
||||
|
||||
track.append(x)
|
||||
zs.append(z)
|
||||
|
||||
|
||||
track = np.asarray(track)
|
||||
zs = np.asarray(zs)
|
||||
ests = np.asarray(ests)
|
||||
|
||||
plt.figure()
|
||||
plt.subplot(211)
|
||||
plt.plot(track[:,0], label='track')
|
||||
plt.plot(zs[:,0], label='measurements')
|
||||
plt.plot(ests[:,0], label='filter')
|
||||
plt.legend(loc='best')
|
||||
|
||||
plt.subplot(212)
|
||||
plt.plot(track[:,1], label='track')
|
||||
plt.plot(zs[:,1], label='measurements')
|
||||
plt.plot(ests[:,1], label='filter')
|
||||
plt.show()
|
||||
|
||||
Reference in new issue
Block a user