More copy edits, updated for filterpy 0.1.2
This commit is contained in:
1 parent
49f604be52
commit
d5ea503fde
9 files changed
+812
-999
No files matched your search
@@ -1352,9 +1352,9 @@
|
||||
"The filter equations are:\n",
|
||||
"\n",
|
||||
"$$\\begin{aligned} \\bar {\\mathbf x} &= \\mathbf x \\ast f_{\\mathbf x}(\\bullet)\\, \\, &\\text{Predict Step} \\\\\n",
|
||||
"\\mathbf x &= L \\cdot \\bar{\\mathbf x}\\, \\, &\\text{Update Step}\\end{aligned}$$\n",
|
||||
"\\mathbf x &= \\|L \\cdot \\bar{\\mathbf x}\\|\\, \\, &\\text{Update Step}\\end{aligned}$$\n",
|
||||
"\n",
|
||||
"$L$ is the usual way to write the Likelihood function, so I use that.\n",
|
||||
"$L$ is the usual way to write the Likelihood function, so I use that. The $\\|\\bullet\\|$ notation denotes the norm.\n",
|
||||
"\n",
|
||||
"We can express this in pseudocode.\n",
|
||||
"\n",
|
||||
|
||||
+125
-4
@@ -1342,18 +1342,139 @@
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"## Computational Properties of the Gaussian"
|
||||
"## Computational Properties of Gaussians"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Recall how our discrete Bayesian filter worked. We had a vector implemented as a NumPy array representing our belief at a certain moment in time. When we integrated another measurement into our belief using the `update()` function we had to multiply probabilities together, and when we performed the motion step using the `predict()` function we had to shift and add probabilities. I've promised you that the Kalman filter uses essentially the same process, and that it uses Gaussians instead of histograms, so you might reasonable expect that we will be multiplying, adding, and shifting Gaussians in the Kalman filter.\n",
|
||||
"A remarkable property of Gaussians is that the product of two independent Gaussians is another Gaussian! The sum is not Gaussian, but proportional to a Gaussian.\n",
|
||||
"\n",
|
||||
"A typical textbook would directly launch into a multi-page proof of the behavior of Gaussians under these operations, but I don't see the value in that right now. I think the math will be much more intuitive and clear if we just start developing a Kalman filter using Gaussians. I will provide the equations for multiplying and shifting Gaussians at the appropriate time. You will then be able to develop a physical intuition for what these operations do, rather than be forced to digest a lot of fairly abstract math.\n",
|
||||
"The discrete Bayes filter works by multiplying and adding probabilities. I'm getting ahead of myself, but the Kalman filter uses Gaussians instead of probabilities, but the rest of the algorithm remains the same. This means we will need to multiply and add Gaussians. \n",
|
||||
"\n",
|
||||
"The key point, which I will only assert for now, is that all the operations are very simple, and that they preserve the properties of the Gaussian. This is somewhat remarkable, in that the Gaussian is a nonlinear function, and typically if you multiply a nonlinear equation with itself you end up with a different equation. For example, the shape of `sin(x)sin(x)` is very different from `sin(x)`. But the result of multiplying two Gaussians is yet another Gaussian. This is a fundamental property, and a key reason why Kalman filters are computationally feasible. Said another way, Kalman filters use Gaussians *because* they are computationally nice. "
|
||||
"The Gaussian is a nonlinear function, and typically if you multiply a nonlinear equation with itself you end up with a different equation. For example, the shape of `sin(x)sin(x)` is very different from `sin(x)`. But the result of multiplying two Gaussians is yet another Gaussian. This is a fundamental property, and a key reason why Kalman filters are computationally feasible. Said another way, Kalman filters use Gaussians *because* they are computationally nice. \n",
|
||||
"\n",
|
||||
"The remainder of this section is optiona. I will derive the equations for the sum and product of two Gaussians. You will not need to understand this material to understand the rest of the book, so long as you accept the results. "
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"### Product of Gaussians\n",
|
||||
"\n",
|
||||
"The product of two independent Gaussians is given by:\n",
|
||||
"\n",
|
||||
"$$\\begin{aligned}\\mu &=\\frac{\\sigma_1^2\\mu_2 + \\sigma_1^2\\mu_1}{\\sigma_1^2+\\sigma_2^2}\\\\\n",
|
||||
"\\sigma^2 &=\\frac{\\sigma_1^2\\sigma_2^2}{\\sigma_1^2+\\sigma_2^2} \n",
|
||||
"\\end{aligned}$$\n",
|
||||
"\n",
|
||||
"You can find this result by multiplying the equation for two Gaussians together and combining terms. The algebra gets messy. I will derive it using Bayes theorem. We can state the problem as: let the prior be $N(\\bar\\mu, \\bar\\sigma^2)$, and measurement be $z \\propto N(z, \\sigma_z^2)$. What is the posterior x given the measurement z?\n",
|
||||
"\n",
|
||||
"Write the posterior as $P(x \\mid z)$. Now we can use Bayes Theorem to state\n",
|
||||
"\n",
|
||||
"$$P(x \\mid z) = \\frac{P(z \\mid x)P(x)}{P(z)}$$\n",
|
||||
"\n",
|
||||
"$P(z)$ is a normalizing constant, so we can create a proportinality\n",
|
||||
"\n",
|
||||
"$$P(x \\mid z) \\propto P(z|x)P(x)$$\n",
|
||||
"\n",
|
||||
"Now we subtitute in the equations for the Gaussians, which are\n",
|
||||
"\n",
|
||||
"$$P(z \\mid x) = \\frac{1}{\\sqrt{2\\pi\\sigma_z^2}}\\exp \\Big[-\\frac{(z-x)^2}{2\\sigma_z^2}\\Big]$$\n",
|
||||
"\n",
|
||||
"$$P(x) = \\frac{1}{\\sqrt{2\\pi\\bar\\sigma^2}}\\exp \\Big[-\\frac{(x-\\bar\\mu)^2}{2\\bar\\sigma^2}\\Big]$$\n",
|
||||
"\n",
|
||||
"We can drop the leading terms, as they are constants, giving us\n",
|
||||
"\n",
|
||||
"$$\\begin{aligned}\n",
|
||||
"P(x \\mid z) &\\propto \\exp \\Big[-\\frac{(z-x)^2}{2\\sigma_z^2}\\Big]\\exp \\Big[-\\frac{(x-\\bar\\mu)^2}{2\\bar\\sigma^2}\\Big]\\\\\n",
|
||||
"&\\propto \\exp \\Big[-\\frac{(z-x)^2}{2\\sigma_z^2}-\\frac{(x-\\bar\\mu)^2}{2\\bar\\sigma^2}\\Big] \\\\\n",
|
||||
"&\\propto \\exp \\Big[-\\frac{1}{2\\sigma_z^2\\bar\\sigma^2}[\\bar\\sigma^2(z-x)^2-\\sigma_z^2(x-\\bar\\mu)^2]\\Big]\n",
|
||||
"\\end{aligned}$$\n",
|
||||
"\n",
|
||||
"Now we multiply out the squared terms and group in terms of the posterior $x$.\n",
|
||||
"\n",
|
||||
"$$\\begin{aligned}\n",
|
||||
"P(x \\mid z) &\\propto \\exp \\Big[-\\frac{1}{2\\sigma_z^2\\bar\\sigma^2}[\\bar\\sigma^2(z^2 -2xz + x^2) + \\sigma_z^2(x^2 - 2x\\bar\\mu+\\bar\\mu^2)]\\Big ] \\\\\n",
|
||||
"&\\propto \\exp \\Big[-\\frac{1}{2\\sigma_z^2\\bar\\sigma^2}[x^2(\\bar\\sigma^2+\\sigma_z^2)-2x(\\sigma_z^2\\bar\\mu + \\bar\\sigma^2z) + (\\bar\\sigma^2z^2+\\sigma_z^2\\bar\\mu^2)]\\Big ]\n",
|
||||
"\\end{aligned}$$\n",
|
||||
"\n",
|
||||
"The last parentheses do not contain the posterior $x$, so it can be treated as a constant and discarded.\n",
|
||||
"\n",
|
||||
"$$P(x \\mid z) \\propto \\exp \\Big[-\\frac{1}{2}\\frac{x^2(\\bar\\sigma^2+\\sigma_z^2)-2x(\\sigma_z^2\\bar\\mu + \\bar\\sigma^2z)}{\\sigma_z^2\\bar\\sigma^2}\\Big ]\n",
|
||||
"$$\n",
|
||||
"\n",
|
||||
"Divide numerator and denominator by $\\bar\\sigma^2+\\sigma_z^2$ to get\n",
|
||||
"\n",
|
||||
"$$P(x \\mid z) \\propto \\exp \\Big[-\\frac{1}{2}\\frac{x^2-2x(\\frac{\\sigma_z^2\\bar\\mu + \\bar\\sigma^2z}{\\bar\\sigma^2+\\sigma_z^2})}{\\frac{\\sigma_z^2\\bar\\sigma^2}{\\bar\\sigma^2+\\sigma_z^2}}\\Big ]\n",
|
||||
"$$\n",
|
||||
"\n",
|
||||
"Proportionality lets us create or delete constants at will, so we can factor this into\n",
|
||||
"\n",
|
||||
"$$P(x \\mid z) \\propto \\exp \\Big[-\\frac{1}{2}\\frac{(x-\\frac{\\sigma_z^2\\bar\\mu + \\bar\\sigma^2z}{\\bar\\sigma^2+\\sigma_z^2})^2}{\\frac{\\sigma_z^2\\bar\\sigma^2}{\\bar\\sigma^2+\\sigma_z^2}}\\Big ]\n",
|
||||
"$$\n",
|
||||
"\n",
|
||||
"A Gaussian is\n",
|
||||
"\n",
|
||||
"$$N(\\mu,\\, \\sigma^2) \\propto \\exp\\Big [-\\frac{1}{2}\\frac{(x - \\mu)^2}{\\sigma^2}\\Big ]$$\n",
|
||||
"\n",
|
||||
"So we can see that $P(x \\mid z)$ has a mean of\n",
|
||||
"\n",
|
||||
"$$\\mu_\\mathtt{posterior} = \\frac{\\sigma_z^2\\bar\\mu + \\bar\\sigma^2z}{\\bar\\sigma^2+\\sigma_z^2}$$\n",
|
||||
"\n",
|
||||
"and a variance of\n",
|
||||
"$$\n",
|
||||
"\\sigma_\\mathtt{posterior} = \\frac{\\sigma_z^2\\bar\\sigma^2}{\\bar\\sigma^2+\\sigma_z^2}\n",
|
||||
"$$\n",
|
||||
"\n",
|
||||
"I've dropped the constants, and so the result is not a normal, but proportional to one. Bayes theorem normalizes with the $P(z)$ divisor, ensuring that the result is normal. We normalize in the update step of our filters, ensuring the filter estimate is Gaussian.\n",
|
||||
"\n",
|
||||
"$$\\mathcal N_1 = \\| \\mathcal N_2\\cdot \\mathcal N_3\\|$$"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"### Sum of Gaussians\n",
|
||||
"\n",
|
||||
"The sum of two Gaussians is given by\n",
|
||||
"\n",
|
||||
"$$\\mu = \\mu_1 + \\mu_2 \\\\\n",
|
||||
"\\sigma^2 = \\sigma^2_1 + \\sigma^2_2\n",
|
||||
"$$\n",
|
||||
"\n",
|
||||
"There are several proofs for this. I will use convolution since we used convolution in the previous chapter for the histograms of probabilities. \n",
|
||||
"\n",
|
||||
"To find the density function of the sum of two Gaussian random variables we sum the density functions of each. They are nonlinear, continuous functions, so we need to compute the sum with an integral. If the random variables $p$ and $z$ (e.g. prior and measurement) are independent we can compute this with\n",
|
||||
"\n",
|
||||
"$p(x) = \\int\\limits_{-\\infty}^\\infty f_p(x-z)f_z(z)\\, dx$\n",
|
||||
"\n",
|
||||
"This is the equation for a convolution. Now we just do some math:\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"$p(x) = \\int\\limits_{-\\infty}^\\infty f_2(x-x_1)f_1(x_1)\\, dx \\\\\n",
|
||||
"= \\int\\limits_{-\\infty}^\\infty \n",
|
||||
"\\frac{1}{\\sqrt{2\\pi}\\sigma_z}\\exp\\left[-\\frac{x - z - \\mu_z}{2\\sigma^2_z}\\right]\n",
|
||||
"\\frac{1}{\\sqrt{2\\pi}\\sigma_p}\\exp\\left[-\\frac{x - \\mu_p}{2\\sigma^2_p}\\right] \\, dx \\\\\n",
|
||||
"= \\int\\limits_{-\\infty}^\\infty\n",
|
||||
"\\frac{1}{\\sqrt{2\\pi}\\sqrt{\\sigma_p^2 + \\sigma_z^2}} \\exp\\left[ -\\frac{(x - (\\mu_p + \\mu_z)))^2}{2(\\sigma_z^2+\\sigma_p^2)}\\right]\n",
|
||||
"\\frac{1}{\\sqrt{2\\pi}\\frac{\\sigma_p\\sigma_z}{\\sqrt{\\sigma_p^2 + \\sigma_z^2}}} \\exp\\left[ -\\frac{(x - \\frac{\\sigma_p^2(x-\\mu_z) + \\sigma_z^2\\mu_p}{}))^2}{2\\left(\\frac{\\sigma_p\\sigma_x}{\\sqrt{\\sigma_z^2+\\sigma_p^2}}\\right)^2}\\right] \\, dx\n",
|
||||
"= \\frac{1}{\\sqrt{2\\pi}\\sqrt{\\sigma_p^2 + \\sigma_z^2}} \\exp\\left[ -\\frac{(x - (\\mu_p + \\mu_z)))^2}{2(\\sigma_z^2+\\sigma_p^2)}\\right] \\int\\limits_{-\\infty}^\\infty\n",
|
||||
"\\frac{1}{\\sqrt{2\\pi}\\frac{\\sigma_p\\sigma_z}{\\sqrt{\\sigma_p^2 + \\sigma_z^2}}} \\exp\\left[ -\\frac{(x - \\frac{\\sigma_p^2(x-\\mu_z) + \\sigma_z^2\\mu_p}{}))^2}{2\\left(\\frac{\\sigma_p\\sigma_x}{\\sqrt{\\sigma_z^2+\\sigma_p^2}}\\right)^2}\\right] \\, dx\n",
|
||||
"$\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"The expression inside the integral is a normal distribution. The sum of a normal distribution is one, hence the integral is one. This gives us\n",
|
||||
"\n",
|
||||
"$$p(x) = \\frac{1}{\\sqrt{2\\pi}\\sqrt{\\sigma_p^2 + \\sigma_z^2}} \\exp\\left[ -\\frac{(x - (\\mu_p + \\mu_z)))^2}{2(\\sigma_z^2+\\sigma_p^2)}\\right]$$\n",
|
||||
"\n",
|
||||
"This is in the form of a normal, where\n",
|
||||
"\n",
|
||||
"$$\\mu_x = \\mu_p + \\mu_z \\\\\n",
|
||||
"\\sigma_x^2 = \\sigma_z^2+\\sigma_p^2\\, \\square$$"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
+90
-123
@@ -18,7 +18,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 102,
|
||||
"execution_count": 31,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
@@ -295,7 +295,7 @@
|
||||
"<IPython.core.display.HTML object>"
|
||||
]
|
||||
},
|
||||
"execution_count": 102,
|
||||
"execution_count": 31,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
@@ -319,7 +319,7 @@
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"The techniques in the last chapter are very powerful, but they only work with one variable or dimension. Gaussians represent a mean and variance that are scalars - real numbers. They provide no way to represent multidimensional data, such as the position and velocity of a dog in a field. In the last chapter we were forced to assume the dog was traveling at 1 m/s. Position and velocity are related to each other, and as we learned in the g-h chapter we should never throw away information. In this chapter we learn how to describe this relation probabilistically. Through this key insight we will achieve markedly better filter performance than was possible with the equations from the last chapter."
|
||||
"The techniques in the last chapter are very powerful, but they only work with one variable or dimension. They provide no way to represent multidimensional data, such as the position and velocity of a dog in a field. Position and velocity are related to each other, and as we learned in the g-h chapter we should never throw away information. In this chapter we learn how to describe this relationship probabilistically. Through this key insight we will achieve markedly better filter performance."
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -328,9 +328,9 @@
|
||||
"source": [
|
||||
"## Multivariate Normal Distributions\n",
|
||||
"\n",
|
||||
"In the last two chapters we used Gaussians for a scalar (one dimensional) random variable, expressed as $\\mathcal{N}(\\mu, \\sigma^2)$. A more formal term for this is *univariate normal*, where univariate means 'one variable'. The probability distribution of the Gaussian is known as the *univariate normal distribution*.\n",
|
||||
"We've been using Gaussians for a scalar random variable, expressed as $\\mathcal{N}(\\mu, \\sigma^2)$. A more formal term for this is *univariate normal*, where univariate means 'one variable'. The probability distribution of the Gaussian is known as the *univariate normal distribution*.\n",
|
||||
"\n",
|
||||
"What might a *multivariate normal distribution* be? *Multivariate* means multiple variables. Our goal is to be able to represent a normal distribution across multiple dimensions. I don't necessarily mean spatial dimensions - it could be position, velocity, and acceleration. Consider a two dimensional case. This might be the *x* and *y* coordinates of a robot, it might be the position and velocity of a dog on the x-axis, or milk production and feed rate at a dairy. It doesn't really matter. We can see that for $N$ dimensions, we need $N$ means, which we will arrange in a column matrix (vector) like so:\n",
|
||||
"What might a *multivariate normal distribution* be? *Multivariate* means multiple variables. Our goal is to be able to represent a normal distribution with multiple dimensions. I don't necessarily mean spatial dimensions - it could be position, velocity, and acceleration. Consider a two dimensional case. It might be the *x* and *y* coordinates of a robot, it might be the position and velocity of a dog on the x-axis, or milk production and feed rate at a dairy. It doesn't really matter. We can see that for $N$ dimensions, we need $N$ means, which we will arrange in a column matrix (vector) like so:\n",
|
||||
"\n",
|
||||
"$$\n",
|
||||
"\\mu = \\begin{bmatrix}\\mu_1\\\\\\mu_2\\\\ \\vdots \\\\\\mu_n\\end{bmatrix}\n",
|
||||
@@ -346,7 +346,7 @@
|
||||
"\n",
|
||||
"$$\\sigma^2 = \\begin{bmatrix}10\\\\4\\end{bmatrix}$$ \n",
|
||||
"\n",
|
||||
"This is incomplete because it does not consider the more general case. In the **Gaussians** chapter we computed the variance in the heights of students. We can do the same for their weights. But there is also a relationship between height and weight. In general, a taller person weighs more than a shorter person. We say they are *correlated*. We want a way to express not only what we think the variance is in the height and the weight, but also the degree to which they are correlated. \n",
|
||||
"This is incomplete because it does not consider the more general case. In the **Gaussians** chapter we computed the variance in the heights of students. We can do the same for their weights. But there is also a relationship between height and weight. In general, a taller person weighs more than a shorter person. Height and weight are *correlated*. We want a way to express not only what we think the variance is in the height and the weight, but also the degree to which they are correlated. \n",
|
||||
"\n",
|
||||
"Before we can understand multivariate normal distributions we need to understand the mathematics behind correlations."
|
||||
]
|
||||
@@ -357,16 +357,16 @@
|
||||
"source": [
|
||||
"## Correlation and Covariance\n",
|
||||
"\n",
|
||||
"*Covariance* describes how much two variables vary together. Covariance is short for *correlated variances*. In other words, *variance* is a measure for how a population vary amongst themselves, and *covariance* is a measure for how much two variables change in relation to each other. For example, as height increases weight also generally increases. These variables are *correlated*. They are *positively correlated* because as one variable gets larger so does the other. As the outdoor temperature decreases home heating bills increase. These are *inversely correlated* or *negatively correlated* because as one variable gets larger the other variable lowers. The price of tea and the number of tail wags my dog makes have no relation to each other, and we say they are *uncorrelated* - each can change independent of the other.\n",
|
||||
"*Covariance* describes how much two variables vary together. Covariance is short for *correlated variances*. In other words, *variance* is a measure for how a population vary amongst themselves, and *covariance* is a measure for how much two variables change in relation to each other. For example, as height increases weight also generally increases. These variables are *correlated*. They are *positively correlated* because as one variable gets larger so does the other. As the outdoor temperature decreases home heating bills increase. These are *inversely correlated* or *negatively correlated* because as one variable gets larger the other variable lowers. The price of tea and the number of tail wags my dog makes have no relation to each other, and we say they are *uncorrelated* or *independent*- each can change independent of the other.\n",
|
||||
"\n",
|
||||
"Correlation implies *prediction*. If you are significantly taller than me I can predict that you also weigh more than me. As winter comes I predict that I will be spending more to heat my house. If my dog wags his tail more I don't conclude that tea prices will be increasing.\n",
|
||||
"Correlation allows prediction. If you are significantly taller than me I can predict that you also weigh more than me. As winter comes I predict that I will be spending more to heat my house. If my dog wags his tail more I don't conclude that tea prices will be increasing.\n",
|
||||
"\n",
|
||||
"For example, here is a plot of height and weight of students on the school's track team. If a student is 68 inches tall I can predict they weigh roughly 160 pounds. Since the correlation is not perfect neither is my prediction. "
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 103,
|
||||
"execution_count": 32,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
@@ -375,7 +375,7 @@
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<matplotlib.figure.Figure at 0x9089908>"
|
||||
"<matplotlib.figure.Figure at 0x8e3ba58>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
@@ -395,23 +395,21 @@
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"In this book we will always be using *linear correlation*. We assume that the relationship between variables is linear. That is, a straight line is a good fit for the data. I've fit a straight line through the data in the above chart. The concept of *nonlinear correlation* exists, but we will not be using it.\n",
|
||||
"In this book we only consider *linear correlation*. We assume that the relationship between variables is linear. That is, a straight line is a good fit for the data. I've fit a straight line through the data in the above chart. The concept of *nonlinear correlation* exists, but we will not be using it.\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"The equation for the covariance between $X$ and $Y$ is\n",
|
||||
"\n",
|
||||
"$$ COV(X, Y) = \\sigma_{xy} = \\mathbb E\\big[(X-\\mu_x)(Y-\\mu_y)\\big]$$\n",
|
||||
"\n",
|
||||
"Where $\\mathbb E[X]$ is the *expected value* of X defined as\n",
|
||||
"Where $\\mathbb E[X]$ is the *expected value* of X, defined as\n",
|
||||
"\n",
|
||||
"$$\\mathbb E[X] = \\begin{cases} \\sum_{i=1}^n p_ix_i & \\mbox{discrete}\\\\ \\int_{-\\infty}^\\infty x\\, f(x) & \\mbox{continuous}\\end{cases}$$\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"Compare the covariance equation to the equation for the variance:\n",
|
||||
"Compare the covariance equation to the equation for the variance. As you can see they are very similar:\n",
|
||||
"\n",
|
||||
"$$VAR(X) = \\sigma_x^2 = \\mathbb E[(X - \\mu)^2]$$\n",
|
||||
"\n",
|
||||
"As you can see they are very similar."
|
||||
"$$VAR(X) = \\sigma_x^2 = \\mathbb E[(X - \\mu)^2]$$"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -428,7 +426,7 @@
|
||||
" \\end{bmatrix}\n",
|
||||
"$$\n",
|
||||
"\n",
|
||||
"If you haven't seen this before it is probably a bit confusing. Let's build your intuition with some thought experiments. At this point, note that the diagonal contains the variance for each variable, and that all off-diagonal elements (covariances) represent how much the $i$th (horizontal row) and $j$th (vertical column) variables are linearly correlated to each other. So $\\sigma_3^2$ is the variance of the third variable, and $\\sigma_{13}$ is the covariance between the first and third variables.\n",
|
||||
"The diagonal contains the variance for each variable, and that all off-diagonal elements contain the covariance between the $i^{th}$ and $j^{th}$ variables. So $\\sigma_3^2$ is the variance of the third variable, and $\\sigma_{13}$ is the covariance between the first and third variables.\n",
|
||||
"\n",
|
||||
"A covariance of 0 indicates no correlation. If the variance for $x$ is 10, the variance for $y$ is 4, and there is no linear correlation between $x$ and $y$, then we would write\n",
|
||||
"\n",
|
||||
@@ -444,7 +442,7 @@
|
||||
"$$\\Sigma = \\begin{bmatrix}10&-9.7\\\\-9.7&4\\end{bmatrix}$$\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"Note that the matrix always symmetric. After all, the covariance between $x$ and $y$ is always equal to the covariance between $y$ and $x$. That is, $\\sigma_{xy}=\\sigma_{yx}$ for any $x$ and $y$."
|
||||
"The covariance matrix is symmetric. After all, the covariance between $x$ and $y$ is always equal to the covariance between $y$ and $x$. That is, $\\sigma_{xy}=\\sigma_{yx}$ for any $x$ and $y$."
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -456,7 +454,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 104,
|
||||
"execution_count": 33,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
@@ -488,7 +486,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 105,
|
||||
"execution_count": 34,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
@@ -497,7 +495,7 @@
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<matplotlib.figure.Figure at 0x902e240>"
|
||||
"<matplotlib.figure.Figure at 0x892f3c8>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
@@ -523,23 +521,23 @@
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"The data no longer forms a straight line. The covariance is $\\sigma_{xy}=-3.08$. The absolute value is smaller than the variance of $X$ or $Y$. It is not close to zero, and so we know there is still a high degree of correlation. We can verify this by looking at the chart. The data forms nearly a straight line.\n",
|
||||
"The data no longer forms a straight line. The covariance is $\\sigma_{xy}=-3.08$. It is not close to zero compared to the magnitudes of $\\sigma_x^2$ and $\\sigma_y^2$, and so we know there is still a high degree of correlation. We can verify this by looking at the chart. The data forms nearly a straight line.\n",
|
||||
"\n",
|
||||
"Now I will add random noise to a straight line."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 106,
|
||||
"execution_count": 35,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<matplotlib.figure.Figure at 0x8fea0f0>"
|
||||
"<matplotlib.figure.Figure at 0x80ce278>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
@@ -549,14 +547,14 @@
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"[[ 7.68 3.02]\n",
|
||||
" [ 3.02 2.34]]\n"
|
||||
"[[ 10.7 2.95]\n",
|
||||
" [ 2.95 2.24]]\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"from numpy.random import randn\n",
|
||||
"X = np.linspace(1, 10, 1000) + randn(1000)\n",
|
||||
"X = np.linspace(1, 10, 1000) + randn(1000)*2\n",
|
||||
"Y = np.linspace(1, 5, 1000) + randn(1000)\n",
|
||||
"plot_correlated_data(X, Y)\n",
|
||||
"print(np.cov(X, Y))"
|
||||
@@ -573,16 +571,16 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 107,
|
||||
"execution_count": 36,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<matplotlib.figure.Figure at 0x894c358>"
|
||||
"<matplotlib.figure.Figure at 0x9b1e358>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
@@ -592,8 +590,8 @@
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"[[ 1.01 0.00585]\n",
|
||||
" [ 0.00585 1.0]]\n"
|
||||
"[[ 1.01 -0.00177]\n",
|
||||
" [ -0.00177 0.998]]\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -608,7 +606,7 @@
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Here the covariances are very near zero. As you can see with the plot, there is no clear way to draw a line to fit the data. A vertical line would be as convincing as the horizontal line shown."
|
||||
"Here the covariances are very near zero. As you can see with the plot, there is no clear way to draw a line to fit the data. A vertical line would be as unconvincing as the horizontal line I've shown."
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -634,7 +632,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 108,
|
||||
"execution_count": 37,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
@@ -643,7 +641,7 @@
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<matplotlib.figure.Figure at 0xa313358>"
|
||||
"<matplotlib.figure.Figure at 0x9b1e6a0>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
@@ -663,23 +661,23 @@
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"This is a plot of multivariate Gaussian with a mean of $\\mu=[\\begin{smallmatrix}2\\\\17\\end{smallmatrix}]$ and a covariance of $\\Sigma=[\\begin{smallmatrix}10&0\\\\0&4\\end{smallmatrix}]$. The three dimensional shape shows the probability density of for any value of ($X, Y$) in the z-axis. I have projected the variance for x and y onto the walls of the chart - you can see that they take on the normal Gaussian bell curve shape. The curve for $X$ is wider than the curve for $Y$, which is explained by $\\sigma_x^2=10$ and $\\sigma_y^2=4$. The highest point of the curve is at the the means for $X$ and $Y$. \n",
|
||||
"This is a plot of multivariate Gaussian with a mean of $\\mu=[\\begin{smallmatrix}2\\\\17\\end{smallmatrix}]$ and a covariance of $\\Sigma=[\\begin{smallmatrix}10&0\\\\0&4\\end{smallmatrix}]$. The three dimensional shape shows the probability density of for any value of ($X, Y$) in the z-axis. I have projected the variance for x and y onto the walls of the chart - you can see that they take on the Gaussian bell curve shape. The curve for $X$ is wider than the curve for $Y$, which is explained by $\\sigma_x^2=10$ and $\\sigma_y^2=4$. The highest point of the 3D surface is at the the means for $X$ and $Y$. \n",
|
||||
"\n",
|
||||
"All multivariate Gaussians have this shape. If we think of this as a the Gaussian for the position of a dog, the z-value at each point of ($X, Y$) is the probability density of it being at that position. Strictly speaking this is the *joint probability density function*, which I will define soon. So, the dog has the highest probability of being near (2, 17), a modest probability of being near (5, 14), and a very low probability of being near (10, 10). As with the univariate case this is a *probability density*, not a *probability*. Continuous distributions have an infinite range, and so the probability of being exactly at (2, 17), or any other point, is 0%. We can compute the probability of being within a given range by computing the area under the curve. "
|
||||
"All multivariate Gaussians have this shape. If we think of this as a the Gaussian for the position of a dog, the z-value at each point of ($X, Y$) is the probability density of the dog being at that position. Strictly speaking this is the *joint probability density function*, which I will define soon. So, the dog has the highest probability of being near (2, 17), a modest probability of being near (5, 14), and a very low probability of being near (10, 10). As with the univariate case this is a *probability density*, not a *probability*. Continuous distributions have an infinite range, and so the probability of being exactly at (2, 17), or any other point, is 0%. We can compute the probability of being within a given range by computing the area under the curve with an integral."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"FilterPy [2] implements the equation with the function `multivariate_gaussian` in the `filterpy.stats.` module. SciPy's `stats` module implements the multivariate normal equation with `multivariate_normal()`. It implements a 'frozen' form where you set the mean and covariance once, and then calculate the probability for any number of values for x over any arbitrary number of calls. This is much more efficient then recomputing everything in each call. I named my function `multivariate_gaussian()` to ensure it is never confused with the SciPy version. I will say that for a single call, where the frozen variables do not matter, mine consistently runs faster as measured by the `timeit` function.\n",
|
||||
"FilterPy [2] implements the equation with the function `multivariate_gaussian` in the `filterpy.stats.` module. SciPy's `stats` module implements the multivariate normal equation with `multivariate_normal()`. It implements a 'frozen' form where you set the mean and covariance once, and then calculate the probability for any number of values for x over any arbitrary number of calls. I named my function `multivariate_gaussian()` to ensure it is never confused with the SciPy version.\n",
|
||||
"\n",
|
||||
"> The <a href=\"http://docs.scipy.org/doc/scipy/reference/tutorial/stats.html\">tutorial</a>[1] for the `scipy.stats` module explains 'freezing' distributions and other very useful features."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 109,
|
||||
"execution_count": 38,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
@@ -701,7 +699,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 110,
|
||||
"execution_count": 39,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
@@ -719,7 +717,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 111,
|
||||
"execution_count": 40,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
@@ -732,12 +730,12 @@
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Finally, we have to define our covariance matrix. In the problem statement we did not mention any correlation between $x$ and $y$, and we will assume there is none. This makes sense; a dog can choose to independently wander in either the $x$ direction or $y$ direction without affecting the other. If there is no correlation between the values place the variances in the diagonal, and set off-diagonal elements to zero. I will use the variable name `P`. Kalman filters use the name $\\textbf{P}$ for the covariance matrix, and we need to become familiar with the conventions."
|
||||
"Finally, we have to define our covariance matrix. In the problem statement we did not mention any correlation between $x$ and $y$, and we will assume there is none. This makes sense; a dog can choose to independently wander in either the $x$ direction or $y$ direction without affecting the other. I will use the variable name `P`. Kalman filters use the name $\\textbf{P}$ for the covariance matrix, and we need to become familiar with the conventions."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 112,
|
||||
"execution_count": 41,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
@@ -756,65 +754,34 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 113,
|
||||
"execution_count": 42,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"0.03151\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"print('{:.4}'.format(multivariate_gaussian(x, mu, P)))"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"These numbers are not easy to interpret. Let's view a plot of it."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 114,
|
||||
"metadata": {
|
||||
"collapsed": false,
|
||||
"scrolled": true
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<matplotlib.figure.Figure at 0x8fad550>"
|
||||
"0.0315"
|
||||
]
|
||||
},
|
||||
"execution_count": 42,
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"import mkf_internal\n",
|
||||
"import matplotlib.pyplot as plt\n",
|
||||
"\n",
|
||||
"mkf_internal.plot_3d_covariance(mu, P)"
|
||||
"%precision 4\n",
|
||||
"multivariate_gaussian(x, mu, P)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"The result is clearly a 3D bell shaped curve. We can see that the Gaussian is centered around (2,7), and that the probability density quickly drops away in all directions. This plot shows what is known as the *joint probability*. On the sides of the plot I have drawn the *marginal probability* for $X$ and $Y$ (defined below).\n",
|
||||
"\n",
|
||||
"It's time to define some terms. The *joint probability*, denoted $P(x,y)$, is the probability of both $x$ and $y$ happening. For example, if you roll two die $P(2,5)$ is the probability of the first die rolling a 2 and the second die rolling a 5. Assuming the die are six sided and fair, the probability $P(2,5) = \\frac{1}{6}\\times \\frac{1}{6}=\\frac{1}{36}$. The 3D chart above shows the *joint probability density function*.\n",
|
||||
"\n",
|
||||
"The *marginal probability* is the probability of an event happening without regard of any other event. In the chart above the Gaussian curve drawn to the left is the marginal for $Y$. This is the probability for the dog being at any position in $Y$ disregarding the value for $X$. In back I've plotted the marginal for $X$, which is the probability of the dog being at any position in $X$ disregarding $Y$."
|
||||
"The *marginal probability* is the probability of an event happening without regard of any other event. In the chart above the Gaussian curve drawn to the left is the marginal for $Y$. This is the probability for the dog being at any position in $Y$ disregarding the value for $X$. Earlier I wrote \"I have projected the variance for x and y onto the walls of the chart\"; these are the marginal probabilities for $x$ and $y$. "
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -826,16 +793,16 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 115,
|
||||
"execution_count": 43,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAr8AAADBCAYAAADGrth2AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsnXl8E9X6/z+TpUl3mrIUsLKVpbJpQaVwiyCLsokgLiCy\neL24gLL4ReAicBFQ4eKCC+ByRVEQEUUUraCyCahA2QVKC1gQKQVKl7RJkybz+yO/GSfTSTJrlva8\nX6++mkySM+fMnJn5nOc853komqZpEAgEAoFAIBAIdQBdqCtAIBAIBAKBQCAECyJ+CQQCgUAgEAh1\nBiJ+CQQCgUAgEAh1BiJ+CQQCgUAgEAh1BiJ+CQQCgUAgEAh1BiJ+CQQCgUAgEAh1BiJ+CQQCgUAg\nEAh1BiJ+CQQCgUAgEAh1BiJ+CQQCgUAgEAh1BiJ+CQQCgUAgEAh1BiJ+CQQCgUAgEAh1BiJ+CQQC\ngUAgEAh1BiJ+CQQCgUAgEAh1BiJ+CQQCgUAgEAh1BiJ+CQQCgUAgEAh1BiJ+CQQCgUAgEAh1BiJ+\nCQRC2OB2u0NdBQKBQCDUcgyhrgCBQKib0DQNt9sNt9sNmqZB0zQcDgdomgZFUQAAiqJqvGb+dDod\ndDpdjc8IBAKBQPAHEb8EAkFTaJoGAC+hy7fwcgUu/7fM77ll8V/zfyckhhnBzP3P/x4RzwQCgVD7\nIeKXQCCoBiNWuSKXK1IBKLLQ8sWsmLpw3wu9Fiuc+dZmroAWUx8CgUAghAdE/BIIBFkIuS0AHguv\nkNuCGCiKqiGW1UIr4ezPTYO7jSuWiXAmEAiE0EHRWj1pCARCrUFI6PqznsrF6XRqJn5DiS/xDHiL\nZJqmUV1dzb43mUzEz5lAIBBUhlh+CQQCCyPMXC4XaJpGRUUFqqurQdM0oqOjYTAYNLVWamn5DSVS\nrM5VVVXsa4PBQPycCQQCQWWI+CUQ6ihc/1y+6wKDy+WC0+kE4O3OQAgexM+ZQCAQ1IWIXwKhDuBL\n5PIFkZAo4pYRrLoSUaUOxM+ZQCAQakLEL4FQi5ASVoz/Wohgi18iiMIHf/1EKCQd97+/19zfk3jO\nBAIhFBDxSyBEKFqHFWN+z90fgSAWrazO1dXV7KJAg8GAqKgo4udMIBAkQcQvgRABCIlctYWuEFqL\nX5qm4XK5UF1dzf5nptR9WQL52/j1JEQ+/oQz02cAjw+ylolQmH2QvkYg1C6I+CUQwoxAYcUAbYSu\n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 truncated
|
||||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAr8AAADBCAYAAADGrth2AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsnXd4FNX6x7+zPYWEbEI30pGOBFQCNwhSlCaCiIJI8Xqx\ngFL8IXARuCiocLFgAawoCAKiCKIRUHpRIHSBkCCGIhAgpO9mN7vz+2PvjLOT2d2pW5LzeZ48m52d\nOXPOzJmZ77znPe9L0TRNg0AgEAgEAoFAqALoQl0BAoFAIBAIBAIhWBDxSyAQCAQCgUCoMhDxSyAQ\nCAQCgUCoMhDxSyAQCAQCgUCoMhDxSyAQCAQCgUCoMhDxSyAQCAQCgUCoMhDxSyAQCAQCgUCoMhDx\nSyAQCAQCgUCoMhDxSyAQCAQCgUCoMhDxSyAQCAQCgUCoMhDxSyAQCAQCgUCoMhDxSyAQCAQCgUCo\nMhDxSyAQCAQCgUCoMhDxSyAQCAQCgUCoMhDxSyAQCAQCgUCoMhDxSyAQCAQCgUCoMhDxSyAQwga3\n2x3qKhAIBAKhkmMIdQUIBELVhKZpuN1uuN1u0DQNmqbhcDhA0zQoigIAUBRV4X/mT6fTQafTVfiN\nQCAQCAR/EPFLIBA0haZpAPASunwLL1fg8rdltueWxf+fv52QGGYEM/eTvx4RzwQCgVD5IeKXQCCo\nBiNWuSKXK1IBKLLQ8sWsmLpwvwv9L1Y4863NXAEtpj4EAoFACA+I+CUQCLIQclsAPBZeIbcFMVAU\nVUEsq4VWwtmfmwZ3GVcsE+FMIBAIoYOitXrSEAiESoOQ0PVnPZWL0+nUTPyGEl/iGfAWyTRNo7y8\nnP1uNpuJnzOBQCCoDLH8EggEFkaYuVwu0DSNkpISlJeXg6ZpREVFwWAwaGqt1NLyG0qkWJ3LysrY\n/w0GA/FzJhAIBJUh4pdAqKJw/XP5rgsMLpcLTqcTgLc7AyF4ED9nAoFAUBcifgmEKoAvkcsXREKi\niFtGsOpKRJU6ED9nAoFAqAgRvwRCJUJKWDH+/0IEW/wSQRQ++OsnQiHpuJ/+/uduT+I5EwiEUEDE\nL4EQoWgdVozZnrs/AkEsWlmdy8vL2UmBBoMBJpOJ+DkTCARJEPFLIEQAQiJXbaErhNbil6ZpuFwu\nlJeXs5/MkLovSyB/Gb+ehMjHn3Bm+gzg8UHWMhEKsw/S1wiEygURvwRCmBEorBigjdAVQk3xy4Tx\n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 truncated
|
||||
"text/plain": [
|
||||
"<matplotlib.figure.Figure at 0x8a6b898>"
|
||||
"<matplotlib.figure.Figure at 0x8928908>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
@@ -857,14 +824,14 @@
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"As beautiful as these plots are, it is hard to get useful information from them. For example, it is not easy to tell if $X$ and $Y$ both have the same variance. In most of the book I'll display Gaussians using contour plots using helper functions from FilterPy.\n",
|
||||
"As beautiful as these plots are, it is hard to get useful information from them. For example, it is not easy to tell if $X$ and $Y$ both have the same variance. In most of the book I'll display Gaussians as contour plots.\n",
|
||||
"\n",
|
||||
"The contour plots display the range of values that the multivariate Gaussian takes for a specific standard deviation. This is like taking a horizontal slice out of the 3D plot. "
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 116,
|
||||
"execution_count": 29,
|
||||
"metadata": {
|
||||
"collapsed": false,
|
||||
"scrolled": true
|
||||
@@ -872,9 +839,9 @@
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAApMAAAERCAYAAAAnhiyzAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XmUZGV5P/Dv3apu7dV7T08PzAxbhEwEDccc4w9mUAQU\nxCgcxnVAYzhg9AQxwRMgLCoGxY3lGNTI4skRRcUI4aCBQTJGAy6IEXCGgZleq6pru7fuvr6/P2p6\nMjAL3VW3uqu6n885LXir+tZbVD/3PvUuz8sxxhgIIYQQQghpAb/cDSCEEEIIIb2LkklCCCGEENIy\nSiYJIYQQQkjLKJkkhBBCCCEto2SSEEIIIYS0jJJJQgghhBDSMkomCSGEEEJIyyiZPIzrr78ePM9j\ncnJyuZtyEJ7n8aEPfWi5m0FIT6MYJ6R3dXP8Rmn9+vU444wzlrsZr4qSycPgOA4cxx10/Pe//z1u\nuOEGnHbaaRgfH0c8HsfY2Bje/e53Y8eOHS291i9/+Uu8/e1vx8DAAJLJJF772tfiq1/9KsIwbPdt\nEEIOg2KckN61FPHr+z6++tWv4kMf+hBOOeUUxONx8DyPr3/964tu7+zsLG6//Xace+65OOaYY5BI\nJNDf34/Nmzfj3nvvPeL77AXicjeg11x66aV46qmncPLJJ+P8889HLpfD888/jx//+Md44IEHcPvt\nt+Pyyy9f8Pn+/d//HRdccAESiQQuuugi9Pf348EHH8QVV1yBX/ziF/jud7/bwXdDCHklinFCeleU\n8WsYBq644gpwHIeRkRGsWbMGU1NTLbXrtttuw80334yjjz4amzdvxtq1azE7O4sf/vCHuPjii/Hw\nww/jvvvua+ncXYGRQ7r++usZz/NsYmLiZcdvu+02tmvXroOe//jjjzNJkpgsy6xUKi3oNRqNBhsa\nGmKyLLPf/va3+487jsPe+MY3Mp7n2Xe/+92Dfo/jOHbJJZcs8h0RQg5EMU5I71qK+HVdlz3yyCOs\nWCy+7DXvvPPORbf3gQceYD/72c8OOl4oFNi6desYz/PsgQceOOjx9evXsy1btiz69ZYaDXMv0t/+\n7d/iuOOOO+j45s2bsWXLFriui//+7/9e0Lnuv/9+VCoVvOc978Epp5yy/3gsFsNnPvMZMMbwta99\nLbK2E0JeHcU4Ib0ryviVJAlnnXUWRkZG2m7XO9/5Tpx++ukHHR8dHcVll10Gxhgef/zxtl9nuVAy\nGSFJkgAAoriw2QOPP/44OI7DWWedddBjp512GpLJJH7xi1/A87xI20kIaQ3FOCG9a7Hxu1S6tV2L\nQclkRCYmJvDYY48hmUzitNNOW9Dv7Ny5EwBw/PHHH/SYIAjYsGEDfN/HSy+9FGlbCSGLRzFOSO9q\nJX6XQhAEuOeee8BxHM4+++zlbk7LejcN7iK2bWPr1q1wXRc33XQTcrncgn5PVVUAOOzz548rihJN\nQwkhLaEYJ6R3tRq/S+HKK6/Es88+i/POOw9nnnnmcjenZdQz2SbP83DhhRfiqaeewvve9z5cccUV\ny90kQkiEKMYJ6V3dHL+f+9zncOutt2LTpk1HLA/UCyiZbIPrunjXu96Fhx9+GB/4wAdwzz33LOr3\n578dzfdevNL88Xw+315DCSEtoRgnpHe1G7+d9NnPfhZXX301Tj75ZGzfvr2rektbQclkiyzLwrnn\nnouHH34YH/7wh3H33XcvurjoCSecAADYtWvXQY8FQYA9e/ZAFEVs3LgxkjYTQhaOYpyQ3hVF/HbK\nNddcg2uvvRannnoqtm/fjoGBgeVuUtsomWyBrus4++yz8dhjj+GjH/1oS9XwAeCMM84AYwyPPPLI\nQY898cQTME0Tf/mXf7l/pRchZGlQjBPSu6KK3074xCc+gZtuuglvfOMb8eijj66YUQlKJhdJVVW8\n5S1vwc9//nNceeWVuPXWW1s+1wUXXIDBwUHcd999+M1vfrP/uOM4uOaaa8BxHC677LIomk0IWSCK\ncUJ6V5Tx24pGo4GdO3cecqecyy67DF/5ylewefNm/PSnP0Umk1nStnUSreZepHe+85146qmnsG7d\nOqRSKdxwww0HPWfz5s2HLE76SplMBt/85jdxwQUXYPPmzdi6dSv6+/vx4x//GLt27cKFF16ICy+8\nsBNvgxByGBTjhPSuKOMXAG6++Wb88Y9/BAD87ne/A2MMd999N375y18CAP7kT/4EV1111f7nP/DA\nA7jkkkuwefNmbN++ff/xG264AXfeeSfi8ThOPfVUfOELXzjotdavX49t27Yt6v12C0omF2nv3r3g\nOA7T09O48cYbD/kcjuMW/If6jne8Azt27MCnP/1p/PCHP4Rt2zj22GPx5S9/GR/72MeibDohZAEo\nxgnpXVHH7yOPPIL/+q//etnvPvnkk3jyyScBAKeffvrLksn557xyfuZ8u1zXxS233HLI1zr99NMp\n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 truncated
|
||||
"text/plain": [
|
||||
"<matplotlib.figure.Figure at 0x8f9f0b8>"
|
||||
"<matplotlib.figure.Figure at 0xb3b1518>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
@@ -908,16 +875,16 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 117,
|
||||
"execution_count": 46,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAtgAAAD+CAYAAAAAuXIHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XmUVPWZPvDn7rVXdfUO3WwRMS5Ho6gIGQQjOsS4xC1B\nRkycE5nEDYxmUxEMyjGj49ETl2hyEtQ40SQajVETxgEB0XE0P80ETdAIIks3vVV1bbfqbr8/Clpb\noOt2c6uruvv5nMM5euvWvd8+pywf3n7v+xUcx3FARERERESeECu9ACIiIiKi0YQBm4iIiIjIQwzY\nREREREQeYsAmIiIiIvIQAzYRERERkYcYsImIiIiIPMSATURERETkIQZsIqIqsXz5coiiiO3bt1d6\nKfsRRRGXX355pZdBRDQiMGATEVUJQRAgCMJ+x//yl79gxYoVmD17NlpaWqBpGsaNG4cLLrgAGzZs\nGNK9Xn31VZx11lmora1FIBDAsccei3vuuQe2bR/qj0FENObJlV4AERENbPHixXj99ddx3HHH4dxz\nz0U0GsW7776LZ599Fk8//TR+/OMf41vf+pbr6z3zzDO48MIL4ff78ZWvfAXxeBy///3vsXTpUmza\ntAlPPPFEGX8aIqLRjwGbiKjKLVy4EI888gimTp3a7/i6detwxhln4Nvf/jYuvPBCNDQ0lLxWKpXC\nN77xDciyjJdffhmf+9znAAA//OEPMXfuXPzmN7/Bk08+iYsvvrgsPwsR0VjAFhEioip31VVX7Reu\nAWDOnDmYO3cuCoUCXnnlFVfX+vWvf43Ozk4sWLCgL1wDgKqqWLlyJRzHwQMPPODZ2omIxiIGbCKi\nEUxRFACALLv7heTatWshCALOPPPM/V6bPXs2AoEANm3aBMMwPF0nEdFYwoBNRDRCffjhh3jppZcQ\nCAQwe/ZsV+/5+9//DgA4/PDD93tNkiRMnjwZpmnigw8+8HStRERjCXuwiYhGIF3X8dWvfhWFQgG3\n3347otGoq/clk0kAOOj5+44nEglvFkpENAaxgk1ENMIYhoGLLroIr7/+OhYuXIilS5dWeklERPQJ\nDNhERCNIoVDA+eefj+effx6XXnopVq9ePaj376tQ76tkf9q+47FY7NAWSkQ0hjFgExGNELlcDl/6\n0pfw/PPP41//9V/xi1/84oAb0wxk2rRpAIAtW7bs95plWdi6dStkWcaUKVM8WTMR0VjEgE1ENAKk\n02n88z//M1566SVceeWVeOihh4Z0ndNOOw2O4+DFF1/c77WXX34Z2WwWs2bN6ptOQkREg8eATURU\n5ZLJJE4//XRs3LgR3/72t3HvvfcO+VoXXngh6urq8Ktf/Qpvvvlm3/F8Po+bbroJgiDgm9/8phfL\nJiIaszhFhIioyp133nl4/fXX0draimAwiBUrVux3zpw5c3DqqaeWvFY4HMZPf/pTXHjhhZgzZw6+\n+tWvIh6P49lnn8WWLVtw0UUX4aKLLirHj0FENGYwYBMRVblt27ZBEATs2LEDt9566wHPEQTBVcAG\ngHPOOQcbNmzAD3/4Qzz11FPQdR2HHXYY7r77blx99dVeLp2IaExiwCYiqnJbt271/Jonn3wynnvu\nOc+vS0RE7MEmIiIiIvIUAzYRERERkYcYsImIiIiIPMQebCKiKjFnzhwIglCVuyguX74cxx13XKWX\nQUQ0IgiO4ziVXgQRERER0WjBFhEiIiIiIg8xYBMRVYnly5dDFEVs37690kvZjyiKuPzyyyu9DCKi\nEYEBm4ioSgiCAEEQDvr6H/7wB8ydOxexWAzhcBgzZszAI488Muj7ZDIZLFu2DEcddRT8fj9isRjm\nzp2L3/3ud4eyfCIi2osBm4hoBLjvvvtw9tlnY/Pmzbj00ktxxRVXYPfu3fja176G73znO66vk0wm\nMWPGDKxcuRIAsHjxYixYsADvv/8+zj//fNx2223l+hGIiMYMThEhIqpyH374Ia6//nrU1tbizTff\nRGtrKwBg2bJlmD59Ou666y5ccMEFOPnkk0te65ZbbsHmzZtx/vnn44knnoAkSQCAH/3oR/inf/on\nLF++HGeddRYnhhARHQJWsImIqtzPfvYzFAoFXH311X3hGgCi0Sh+8IMfwHEcPPjgg66u9fTTT0MQ\nBNx666194RoAwuEwbrrpJliWhfvuu8/zn4GIaCxhwCYiqnJr164FAJx55pn7vTZ//nwAwH//93+7\nulZbWxsAYMqUKfu99pnPfAYA8NJLLw1pnUREVMSATURU5f7+978DAA4//PD9XmtqakIwGMSOHTug\n63rJa9XV1QEAtm7dut9r//jHPwAUW1Ly+fyhLJmIaExjwCYiqnLJZBJAsSXkQPYd33feQM4++2w4\njoNly5bBsqy+4729vf0ecEwkEoeyZCKiMY0PORIRjSG33nor/uu//gtPPfUUjj32WJx++unI5/N4\n7rnnoKoqotEoent7IYqsvxARDRW/QYmIqlypCnWpCvcnNTQ04H//93+xZMkS6LqOBx98EE8//TTO\nOOMMvPLKK7AsC7IsIx6Pe/cDEBGNMQzYRERVbtq0aQCALVu27PdaW1sbMpkMWlpa4PP5XF2vpqYG\nd911F95//33ouo62tjb87Gc/Qy6XQzqdxvHHH99vwggREQ0OAzYRUZU77bTT4DgOXnzxxf1ee/75\n5wEAX/jCFw75Pj//+c8hCAIWLlx4yNciIhrLGLCJiKrc17/+dWiahh//+Mf48MMP+4739PTg9ttv\nhyAIWLx4satrOY6DTCaz3/EXXngB//7v/44jjjgC3/jGNzxbOxHRWMSHHImIqtykSZNw55134ppr\nrsH06dPxla98Baqq4je/+Q127tyJ66+/3tUujgCQzWbR0NCA008/HYcddhhkWcYbb7yBtWvXYtKk\nSXj22WehaVqZfyIiotFtUBXsVatW4aSTTkI0GkVDQwPOOeccbN68eb/zli9fjvHjxyMQCGDu3Ll4\n5513PFswEdFYdOWVV+K5557D0UcfjUcffRQPP/wwmpubsXr1atxxxx2ur6NpGhYuXIgtW7bgoYce\nwv3334+Ojg7ccsstePvtt/s2myEioqEbVAV7/fr1uOqqqzB9+nQ4joObb74Zp59+Ot59913EYjEA\nwB133IG7774bq1evxuGHH44VK1Zg3rx52LJlC4LBYFl+CCKisWD+/Pl9OzcOlSzLeOihhzxaERER\nHcigAvYLL7zQ798fffRRRKNRvPLKKzjrrLMAAPfccw++//3v47zzzgMArF69Gg0NDXj88cfZ10dE\nREREo94hPeTY29sL27ZRU1MDoLj1bltbG+bNm9d3js/nw+zZs7Fp06ZDWykRERER0QhwSAH72muv\nxfHHH49TTjkFQHEeqyAIaGxs7HdeY2Mj2traDuVWREREREQjwpCniFx33XXYtGkTXnnlFQiCMKRr\nHGxXMiKisWj69On47ne/C0EQqu778Xvf+x6OOeaYqlsXEVGlHWgX3SEF7KVLl+LJJ5/EunXrMHHi\nxL7jTU1NcBwH7e3taGlp6Tve3t6OpqamodyKiGjM+PznP4/Pf/7zlV7GAX33u9+t9BKIiEaMQbeI\nXHvttXjiiSewdu1aTJ06td9rkydPRlNTE9asWdN3TNd1bNiwAbNmzTr01RIRERERVblBVbCvvPJK\nPPbYY3jmmWcQjUbR3t4OAAiFQn0j+JYsWYJVq1Zh2rRpmDp1KlauXIlwOIwFCxYMeO0DldeJiIiI\niKpNqXY5wXEcx+3FRFE8YL/1LbfcgmXLlvX9+6233oqf/OQn6Onpwcknn4z77rsPRx555ICLY8Am\nIiIiopGgVIYdVMD2GgM2EREREY00pTLsIY3pIyIiIiKi/hiwiYiIiIg8xIBNREREROQhBmwiIiIi\nIg8xYBMREREReYgBm4iIiIjIQwzYREREREQeYsAmIiIiIvIQAzYRERERkYcYsImIiIiIPMSATURE\nRETkIQZsIiIiIiIPMWATEREREXmIAZuIiIiIyEMM2EREREREHmLAJiIiIiLyEAM2EREREZGHGLCJ\niIiIiDzEgE1ERERE5CEGbCIiIiIiDzFgExERERF5iAGbiIiIiMhDcqUXQEREh86ybGR0Axm9gKxu\nwLRsOAAEAJoqI+hTENAUBHwKBEGo9HKJiEY1BmwiohEskyugI5lFZzKDrJFDzsxBN3WYlgnAgSCI\nUCUFftkPn+xH2BdAfSyAumgAiixVevlERKMSAzYR0QiUyxvY3p5EdzqDHr0HST0JVQV8moRwQIIi\nixAA2A5QMPLI5rPoTJsQUgr2pGsQ64yhIRbC+LowJIndgkREXhr0t+qGDRtw7rnnoqWlBaIo4pFH\nHun3+te//nWIotjvz8yZMz1bMBHRWOY4DnZ1pvDXre14r+NDbE38A1DSmDTej0njQmiq9SMaUhHw\nyfD7ZAT9MmoiGsbVB3BYawRN9Qoydhe2dL2HLW07sHlbB5JpvdI/FhHRqDLoCnY6ncYxxxyDyy67\nDIsWLTrgOfPmzcNjjz0Gx3EAAKqqHtoqiYgIhmnh/Z3daO/tRlu6DeGghMMaI5BE9z3VQX8xdOsF\nC22dnejtSiGTb8b42hhaGyLszyYi8sCgA/b8+fMxf/58AMBll112wHM0TUN9ff2hrYyIiPrk8gbe\n39mNHYk29BrdGNcQQNA/9C4/nyphYnMQPb0FbEtsRcEej4JpYUpzDcRBBHYiItpfWRrvNm7ciMbG\nRkybNg1XXHEFOjo6ynEbIqIxIZ0r4G/bO7G1+yNk7QQmjQsdUrjeRxAExKMaWhr92J3egQ872/H3\njzphWrYHqyYiGrs8f8hx/vz5uOCCCzB58mRs27YNN954I77whS/gzTffhKIoXt+OiLine truncated
|
||||
"image/png": "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\nl74U3eSJiKYhBmwiomnE930AwKJFi3Dvvfdi4cKFMAwDS5cuxY9//GMIgoBbbrkFrus2eaZERFMX\nAzYRUYvbXYV6dxXut8tkMhAEASeeeOJObSB///d/j/nz56NUKuGVV16Z4KyJiKYvBmwioha37777\nAgDWrl2703v9/f2oVCqYNWvWbvuv336vTCazy/ez2SwAoFar1TtdIqJpjwGbiKjFLVu2DEEQ4Be/\n+MVO7z388MMAgA9+8IN7dK9jjjkGQRDgpZde2uk927bxl7/8BQAwb968+idMRDTNMWATEbW4j370\no9A0DbfffjvWr1+//fWxsTHceOONEAQBF1100R7d69RTT0VfXx/uu+8+/P73v9/hvS9+8YsoFApY\ntmwZuru7I/0ZiIimE27TR0TU4ubNm4evfe1ruOyyy3DwwQfjzDPP3H5U+qZNm/CZz3xmj09xNAwD\n3/ve93DiiSfi//2//4cPf/jDmDlzJn73u9/hqaeeQm9v7x4fWkNERLsWuoK9Zs0anHzyyZg1axZE\nUcTKlSt3+szatWtx6qmnIpvNIh6P4+CDD96+jysREYV3ySWX4KGHHsL++++P73//+7j77rsxY8YM\n3HPPPbj55ptD3euYY47Bs88+i5NOOgm//vWv8Y1vfAMbNmzAxRdfjD/84Q88bIaIaIJCV7DL5TKW\nLFmC888/H+edd95O769btw5HHHEELrjgAlx77bVIp9N49dVXkUgkIpkwEdF0tXz58u0nN07UkiVL\ncP/990dyLyIi2lHogP32B/z555+/0/vXXHMNjj/+eHz1q1/d/hoXyxARERHRdBHpIscgCPDggw9i\n8eLFWL58Obq7u3HooYeySkJERERE00akAXtwcBDlchk33ngjTjjhBDz22GM4++yzce655+KRRx6J\ncigiIiIiopYU6S4i247gPeWUU3D55ZcDGD8Z7LnnnsPtt9++U+/gO51KRkQ0HR188MG4+uqrIQhC\nyz0fP/vZz2LJkiUtNy8iombb1Sm6kQbszs5OyLKMRYsW7fD6okWLcN9990U5FBFR2zniiCNwxBFH\nNHsau3T11Vc3ewpERFNGpC0iiqLgkEMO2WlLvrVr12Lu3LlRDkVERERE1JJCV7ArlQpef/11BEEA\n3/exYcMGvPjii8jlcpg9ezauuuoqnHnmmTjiiCOwbNkyPP7447jvvvvwwAMPvOt9d1VeJyIiIiJq\nNbtrlxOCIAjC3HD16tVYunQpBEHY4fXzzz8f3/nOdwAAK1euxA033ICNGzdi4cKF+NznPoczzjjj\nXSfHgE1EREREU8HuMmzogB0lBmwiIiIimmp2l2Ej7cEmIiIiIpruGLCJiIiIiCLEgE1EREREFCEG\nbCIiIiKiCDFgExERERFFiAGbiIiIiChCDNhERERERBFiwCYiIiIiihADNhERERFRhEIH7DVr1uDk\nk0/GrFmzIIoiVq5c+Y6fveiiiyCKIm655ZYJTZKIiMIJggBNPKiXiGhak8NeUC6XsWTJEpx//vk4\n77zz3vFzP/nJT/D73/8eM2fOnNAEiYjondmOh3LNhmm7qFkOarYL2/HGAzYCCBAgigJ0VUZMU8b/\nW5WRNDSIotDs6RMRtaXQAXv58uVYvnw5AOD888/f5WfWr1+PK6+8Eo899hhOOOGEic2QiIh24Ho+\nxko1jBZryFdrqNpVWJ4Jy7NhuRYcz94ergMEEAUJmqRClTVokgZd1pFQDWQSMeRSMaTjGgSBYZuI\nKCqhA/bueJ6Hc845BytWrMC+++4b9e2JiKatmuVg83AJY+UailYJRauAqluFoUnQNQlJRUSnqkKV\n9R2q054fwLY9WI4N066hZHrYVASSpQRSo2mk9AS60gZ6cgnIEpfmEBFNVOQB+9prr0V3dzcuvPDC\nqG9NRDQtWbaLzSMlDBbKGK4Mo2DlYegSUmkFfUYS0m5aPSRRQEyXEdP/7zXH9VEomxislLClJGK4\n0oHBfA69uQR6sgm2jxARTUCkAfuJJ57APffcgxdffDHK2xIRTUu+H2DTcBH9oyWM1EYwWhtFOqlg\nr64EZHlilWZFFtGZ0dGZ0VEzXQzlhzEyMoqxWhcGxzKY3Z1GLhWL6CchIppeIv1d4OrVq9Hf34/e\n3l4oigJFUbB+/XpcddVVmDNnTpRDERG1tZrl4JX1Q/hL/xa8PvpXuGIRC2Yl0NsRm3C4/lsxXcac\n3gRmdKkYswfwl5G/4tWNA3hzyxg8z490LCKi6SDSCvYll1yC008/fYfXjjvuOJxzzjn4+Mc/HuVQ\nRERta3CsgvUDY+ivDKDmlTBnhgFdkxo+bjwmIx5LIF+ysX50HapOFyqmg/m9GcRjasPHJyJqF6ED\ndqVSweuvv44gCOD7PjZs2IAXX3wRuVwOs2fPRmdn5w6fVxQFvb29WLhwYWSTJiJqRLine truncated
|
||||
"text/plain": [
|
||||
"<matplotlib.figure.Figure at 0x8977e10>"
|
||||
"<matplotlib.figure.Figure at 0x8e01d30>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
@@ -926,10 +893,12 @@
|
||||
],
|
||||
"source": [
|
||||
"from filterpy.stats import plot_covariance_ellipse\n",
|
||||
"P = [[2, 0], [0, 9]]\n",
|
||||
"import matplotlib.pyplot as plt\n",
|
||||
"\n",
|
||||
"P = [[2, 0], [0, 6]]\n",
|
||||
"plot_covariance_ellipse((2, 7), P, fc='g', alpha=0.2, \n",
|
||||
" std=[1, 2, 3],\n",
|
||||
" title='|2 0|\\n|0 9|')\n",
|
||||
" title='|2 0|\\n|0 6|')\n",
|
||||
"plt.gca().grid(b=False)"
|
||||
]
|
||||
},
|
||||
@@ -942,7 +911,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 118,
|
||||
"execution_count": 47,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
@@ -951,7 +920,7 @@
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<matplotlib.figure.Figure at 0x8f8cac8>"
|
||||
"<matplotlib.figure.Figure at 0x8e48d68>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
@@ -977,7 +946,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 119,
|
||||
"execution_count": 49,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
@@ -986,7 +955,7 @@
|
||||
"data": {
|
||||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAtkAAAD+CAYAAADvexk5AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xl4VPW9P/D3OWf2NZkskwQSSFSUpSoKCII2LkjRG9ui\nlKXXS7RPpQpaUoua0rRyWQQel94q0Ee0yHK9VKsC9UoJVlS4SqUo1wtiUBMSQpisk8msme38/oik\n5scyCUw4mZn363ki5Mw5k/f4x+TNdz7nHEGWZRlERERERBQ3otIBiIiIiIiSDUs2EREREVGcsWQT\nEREREcUZSzYRERERUZyxZBMRERERxRlLNhERERFRnLFkExERERHFGUs2EdEA8sQTT0AURdTV1Skd\n5TSiKOK+++5TOgYRUUJgySYiGkAEQYAgCKdt/+yzz7B48WLceOONGDx4MLRaLfLy8nDXXXdhz549\n5/WzPvroI9xxxx3IyMiAwWDAVVddhf/4j/9ANBq90JdBRJTyVEoHICKi2ObOnYuPP/4YV199Nb7/\n/e/DarXiyJEj2L59O9588008//zzePDBB3v9fNu2bcPdd98NvV6PGTNmwGaz4S9/+QvKysrw4Ycf\n4k9/+lM/vhoiouTHkk1ElAB+/OMfY+PGjbjssst6bH/vvfdw22234ZFHHsHdd9+N7OzsmM/ldrvx\n05/+FCqVCu+//z5Gjx4NAFiyZAluuukm/PnPf8arr76KH/3oR/3yWoiIUgHHRYiIEsD8+fNPK9gA\nUFxcjJtuugnBYBD/8z//06vneu2119DS0oJZs2Z1F2wA0Gg0WLp0KWRZxtq1a+OWnYgoFbFkExEl\nOLVaDQBQqXr34eTu3bshCAKmTJly2mM33ngjDAYDPvzwQ4RCobjmJCJKJSzZREQJrLa2Fn/7299g\nMBhw44039uqYqqoqAMCwYcNOe0ySJBQWFiIcDqO6ujquWYmIUglnsomIElQgEMDMmTMRDAaxfPly\nWK3WXh3ncrkA4Kz7n9re3t4en6BERCmIK9lERAkoFAph+vTp+Pjjj/HjH/8YZWVlSkciIqJvYckm\nIkowwWAQ06ZNw9tvv4177rkHGzZs6NPxp1aqT61o//9ObU9LS7uwoEREKYwlm4gogfj9fvzLv/wL\n3n77bfzkJz/Byy+/fMab15zL5ZdfDgA4evToaY9FIhHU1NRApVKhqKgoLpmJiFIRSzYRUYLweDz4\n3ve+h7/97W+YN28eXnjhhfN6nptvvhmyLOOvf/3raY+9//778Pl8mDhxYvdVS4iIqO9YsomIEoDL\n5cKtt96KvXv34pFHHsHvf//7836uu+++G5mZmdiyZQsOHDjQvb2zsxO//vWvIQgCHnjggXjEJiJK\nWby6CBFRAvjBD36Ajz/+GPn5+TAajVi8ePFp+xQXF+O73/1uzOcym8148cUXcffdd6O4uBgzZ86E\nzWbD9u3bcfToUUyfPh3Tp0/vj5dBRJQyWLKJiBLAsWPHIAgC6uvr8e///u9n3EcQhF6VbAC48847\nsWfPHixZsgRvvPEGAoEALr30Ujz77LN46KGH4hmdiCglsWQTESWAmpqauD/nddddh7feeivuz0tE\nRJzJJiIiIiKKO5ZsIiIiIqI4Y8kmIiIiIoozzmQTEQ0gxcXFEARhQN5t8YknnsDVV1+tdAwiooQg\nyLIsKx2CiIiIiCiZcFyEiIiIiCjOWLKJiAaQJ554AqIooq6uTukopxFFEffdd5/SMYiIEgJLNhHR\nACIIAgRBOOvj//3f/42bbroJaWlpMJvNGD9+PDZu3Ninn/HVV19h1apVmDx5MoYMGQKtVovs7GxM\nnToVf/nLXy70JRAREXjiIxFRwli9ejUeeughZGZm4p577oFGo8Gf//xnlJaW4tChQ1i1alWvnqei\nogKvvvoqLr/8ckyZMgVZWVmoqanBm2++iZ07d2LhwoVYuXJlP78aIqLkxpJNRJQAamtr8ctf/hIZ\nGRk4cOAA8vPzAQC/+c1vMGbMGDz99NO46667cN1118V8ru9973tYuHAhrrnmmh7bP//8c1x//fV4\n6qmnMGvWLF5JhIjoAnBchIgoAbz00ksIBoN46KGHugs2AFitVvzqV7+CLMv4wx/+0KvnmjNnzmkF\nGwBGjBiBGTNmAAB2794dn+BERCmKJZuIKAGcKr1Tpkw57bGpU6cCAN59990L/jlqtRoAoFLxg04i\nogvBkk1ElACqqqoAAMOGDTvtsZycHBiNRtTX1yMQCJz3z+jo6MDrr78OURRx2223nffzEBERSzYR\nUUJwuVwAusZDzuTU9lP79ZUsyygtLUVTUxMefPBBXH755ecXlIiIALBkExERgAceeABbt27FTTfd\nhKefflrpOERECY8lm4goAcRaqY610n0uc+fOxQsvvIDJkyfjrbfe4jw2EVEcsGQTESWAU+MbR48e\nPe0xh8MBr9eLwYMHQ6fT9fo5o9Eo5syZg3Xr1uH222/HX/7ylz4dT0REZ8eSTUSUAG6++WbIsoy/\n/vWvpz329ttvAwBuueWWXj9fOBzGrFmzsGnTJvzwhz/E1q1bodFo4paXiCjVsWQTESWAe++9F1qt\nFs8//zxqa2u7tzudTixfvhyCIGDu3Lm9eq5gMIhp06bhtddew8yZM/Haa69xRISIKM74rkpElACG\nDh2Kp556Cg8//DDGjBmDGTNmdN9W/cSJE/jlL3/Zq7s9Al0z2G+99RbS0tJw6aWXYsmSJaftc/XV\nV+P73/9+vF8GEVHK6FXJ9ng8+PWvf42tW7eiqakJ11xzDX73u99hzJgxZz3m0KFDmD9/Pj7++GNk\nZGTg/vvvR0VFRdyCExGlmnnz5qGoqAirVq3Cpk2bEI1GMWLECCxfvhz/+q//2uvnOXbsGARBgMvl\nwrJly864z5w5c1iyiYguQK9K9k9+8hMcOnQImzZtwqBBg7Bp0ybceuutOHLkCHJzc0/b3+12Y/Lk\nySguLsaBAwdw5MgRlJaWwmQyoaysLO4vgogoVUydOrX7Do/ni7dMJyLqfzFnsgOBAN544w2sXLkS\nN9xwA4qKivDb3/4Wl156KdauXXvGYzZv3gy/348NGzZg+PDhmDZtGh577DE888wzcX8BREREREQD\nTcySHQ6HEYlEoNVqe2zX6/XYu3fvGY/Zt28fbrjhhh5nqk+ZMgUNDQ09TtghIiIiIkpGMUu2yWTC\nhAkTsHTpUjQ0NCAajWLz5s346KOPcPLkyTMe43A4YLfbe2yz2+2QZRkOhyM+yYmIiIiIBqhezWRv\n3rwZ9913HwYPHgyVSoVrrrkGs2fPxoEDBy44wNnuXkZElIrGjBmDxx57rPvExIHk8ccfx3e+850B\nl4uISGlnuttur0p2YWEhdu/eDb/fj46ODtjtdsycORNFRUVn3D8nJweNjY09tjU2NkIQBOTk5JxH\ndCKi1DBp0iRMmjRJ6Rhn9NhjjykdgYgoYfTpZjR6vR52ux1OpxM7d+7ED37wgzPuN2HCBOzZswfB\nYLB7W2VlJfLy8jBkyJALS0xERERENMAJsizLsXaqrKxENBrFFVdcgS+//BKPPvooDAYDPvjgA0iS\nhPLycuzfvx/vvPMOAKCjowNXXHEFiouLsWjRIlRVVeHee+/F4sWLsWDBgh7P/e2PHc+01E5ERERE\nNNDE6rC9GhdxuVwoLy/HiRMnYLPZcPfdd2Pp0qWQJAlA14mONTU13ftbLBbs2rUL8+bNw9ixY5Ge\nno6FCxeeVrCJiIiIiJJRr1ay+xNXsomIiIgo0cTqsH2aySYiIiIiothYsomIiIiI4owlm4iIiIgo\nzliyiYiIiIjijCWbiIiIiCjOWLKJiIiIiOKMJZuIiIiIKM5YsomIiIiI4owlm4iIiIgozliyiYiI\niIjijCWbiIiIiCjOYpbsaDSKiooKFBUVQa/Xo6ioCBUVFYhGo2c9pra2FqIo9viSJAmVlZVxDU9E\nRERENBCpYu2wYsUKrF27Fhs3bsSoUaPw2WefYc6cOdDpdFi0aNFZjxMEATt37sSVV17Zvc1ms8Un\nNRERERHRABazZH/00UcoKSnB7bffDgAoKChASUkJ/v73v5/zOFmWYbPZkJ2dHZ+kREREREQJIua4\nyKRJk7B7925UVVUBAD7//HO8++67uOOOO2I++bRp02C32zFp0iS8/vrrF56WiIiIiCgBxFzJfuyx\nx+B2uzFixAhIkoRIJIJFixZh7ty5Zz3GZDLh6aefxsSJE6FSqbBt2zbMmDEDGzduxOzZs+P6AoiI\niIiIBpqYJXvLli3YtGkTtmzZghEjRuDgwYN4+OGHUVhYiHvvvfeMx2RkZKCsrKz7+2uuuQatra1Y\ntWoVSzYRERERJb2YJfvRRx/Fo48+iunTpwMARo4ciWPHjuHJJ588a8k+k3HjxmH9+vXnn5SIiIiI\nKEHEnMn2+XwQxZ67iaJ4zkv4ncmnn36K3NzcvqUjIiIiIkpAMVeyS0pKsGLFCgwdOhQjR47EJ598\ngmeffRalpaXd+5SXl2P//v145513AAAbN26EWq3G6NGjIYoitm/fjrVr12LVqlX99kKIiAiIRKII\nR6KIRGUAXVd6ArouqwoAkihArZIgioJiGYmIUkHMkv3888+joqIC8+bNQ1NTE3JzczF37lxUVFR0\n7+NwOFBTU9PjuKVLl6Kurg6SJGHYsGFYv349Zs2aFf9XQESUQmRZRmcoAl8gBF9nCKFwBMFQBKFI\nFKFwBOFoFOFIGFE5CkCGjG9KNgQAAkRBhEpSQS1JUEsi1CoJapUIjUqCXquGQaeGThPzVwMREcUg\nyKeWORTicrm6/261WhVMQkQ08ITCEbh9QXgDwe5iHQgFEQgHEAgHEIqGEI6Gu79kRLine truncated
|
||||
"text/plain": [
|
||||
"<matplotlib.figure.Figure at 0x8f87f98>"
|
||||
"<matplotlib.figure.Figure at 0xb3dd048>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
@@ -1016,22 +985,22 @@
|
||||
"\n",
|
||||
"$$\n",
|
||||
"\\mu =\\begin{bmatrix}2\\\\7\\end{bmatrix}, \\, \\, \\, \n",
|
||||
"\\Sigma = \\begin{bmatrix}2&0\\\\0&9\\end{bmatrix}\n",
|
||||
"\\Sigma = \\begin{bmatrix}2&0\\\\0&6\\end{bmatrix}\n",
|
||||
"$$"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 120,
|
||||
"execution_count": 50,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"image/png": "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\nQOUiVANAGRquEz1cJ/vP1dbWyjAMzZkzZ5cRjy984Qtqb29XIpHQO++8U2LVADB2EaoBoAxNnjxZ\nkrR27dpdXuvs7FQqldL48eOHnaf+87Vqa2t3+3pdXZ0kaWhoaE/LBYAxj1ANAGXo+OOPl2VZeuqp\np3Z57cknn5QkfelLXxrRWieccIIsy9Jbb721y2vZbFbvvfeeJGnixIl7XjAAjHGEagAoQ+edd558\nPp9uv/12ffjhhzuu9/X16frrr5dhGDr//PNHtNYZZ5yhtrY2Pfroo/qv//qvnV679tprFY/Hdfzx\nx6upqcnWzwAAYwlb6gFAGZo4caL+4R/+QZdccommTZumM888c8cx5Zs2bdL3v//9EZ+mGAwG9cAD\nD2jOnDn6q7/6K51++ukaN26cXnnlFb3wwgtqaWkZ8UEyAIDdG1GnevXq1Tr11FM1fvx4maapBx98\ncJefWbp0qcaNG7fjifK3337b9mIBYCy58MIL9Zvf/EZTp07VQw89pLvvvlutra1auXKlbrrpps+1\n1gknnKBXX31Vp5xyip599lnddttt2rhxoy644AL94Q9/4AAYACjRiDrVyWRShx56qM4991z9zd/8\nzS6v33TTTbr55pu1cuVKHXjggbrmmmt04oknau3atQqFQrYXDQBjxezZs3ecoFiqQw89VI899pgt\nawEAdjaiTvXs2bO1fPlynX766bs9ceuWW27RVVddpdNOO01TpkzRypUrlUgk9PDDD9teMAAAAFBu\nSn5Qcf369ers7NSJJ56445rf79eMGTP04osvlro8AAAAUPZKDtWdnZ0yDEPNzc07XW9ublZnZ2ep\nywMAAABlb6/v/vFpp4MBwFg0bdo0XXHFFTIMo+zuj1deeaUOPfTQsqsLAJy2u9NsSw7VLS0tsixL\nXV1dGj9+/I7rXV1damlpKXV5AKhqxx57rI499liny9itK664wukSAKBilDz+0d7erpaWFj3zzDM7\nrqXTaa1evVrHHHNMqcsDAAAAZW9EnepUKqX3339flmWpWCxq48aN+p//+R/FYjFNmDBBixcv1g03\n3KDJkyfrgAMO0PLlyxWJRLRgwYLPXHd3rXMAAACg3Aw3CmdYlmUNt8jzzz+vWbNm7bKd3rnnnqv7\n7rtP0vajbu+66y719fXpqKOO0ooVKzRlypTPLIhQDQAAgEowXIYdUajemwUBAAAA5Wa4DFvyTDUA\nAAAw1hGqAQAAgBIRqgEAAIASEaoBAACAEhGqAQAAgBIRqgEAAIASEaoBAACAEhGqAQAAgBIRqgEA\nAIASEaoBoIrs5UNyAQAfcztdAADg88kXikoMZpTO5jWUyWsok1MmV5BlWbJkyZAhwzDk97rl97oV\n8LkV8HkUDnjldtFLAYDRQKgGgApQKBTVn0yrNzGkeCqtVDaldCGjTD6jTCGjbD4rS0UZMj4O1qZ8\nbq+8Lp98bp/8Lp9C3pBqwwHFIgHVhv0yTcPpjwUAVYNQDQBlLJPNa0tvUj3xQSWyCcUzA0plkwr4\nTfm9LoUCLtV7PfJ6fDuF5ELRUi5XVDqbUyabVk+2oE0JS+FEWNHeGkV8YdXXBNVaH5HX43LwEwJA\ndSBUA0AZyuUL2tKTVFdfQj1DPeod6pPfZyga8aolGB52jMNlGnL5XPL7/i8w5/NFDaSy6k5t0eaE\nFBuMaVs8ppZYRC2x4dcEAHw6QjUAlBHLstTZm9TmngH1DPapZ7BH4ZCp9nHBkjvKbrepWNSnWNSn\nTLagbf19er+3V/3pBm3rj6mtPqLmWNimTwIAYwuhGgDKRDZX0Potfeoc6FNnYov8fmmftoD8XvvH\nM3xel8Y3hZTOFLS1r1s9Pb1KZts0MJjRxJZaedyMhADA50GoBoAy0DswpA+7+rUl0aWBbJ9aGwMK\nBz2j/r5+n0v7tISVSOW0qWejBrMppdJZtbfUKRr2j/r7A0C1IFQDgMM+2hrXR9192pzYJI+3oPZx\ne3++ORLyKOBzaXN3nz7oSSmdy2qfxpjaGiJ7tQ4AqFSEagBwiGVZ2tDZr47eXnUMfKTGOq/qakKO\n1eN2m9qnJayeeEbr+zaoUCwoXyhqn+aoYzUBQKWwrRWSTCa1ePFiTZw4UcFgUMcee6xee+01u5YH\ngKpSLFr6YHOfNnZvU8fAR2pr9Kuuxud0WZKk+qhPrY0+bRzYqA3btmn9lj5OagSAYdjWqf7GN76h\nt956Sw899JDGjRunhx56SCeccILeeecdtba22vU2AFDxikVL73X0aFN/t7YObtGE5qAC/vL6xWEk\n5JFpGtq8tUNFa3vHev9xMRkGB8YAwO4Ylg3th3Q6rUgkol/+8pc6+eSTd1yfNm2avvKVr+jaa6/d\ncS0ej+/4+2iUXykCGFssa3uH+sPuLm0b6tQ+LSH5RmF3D7ukMwV91JVSc7BNExub1Line truncated
|
||||
"text/plain": [
|
||||
"<matplotlib.figure.Figure at 0xa280e48>"
|
||||
"<matplotlib.figure.Figure at 0x9b2d5f8>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
@@ -1040,9 +1009,9 @@
|
||||
],
|
||||
"source": [
|
||||
"x = [2, 7]\n",
|
||||
"P = [[2, 0], [0, 9]]\n",
|
||||
"P = [[2, 0], [0, 6]]\n",
|
||||
"plot_covariance_ellipse(x, P, fc='g', alpha=0.2, \n",
|
||||
" title='|2 0|\\n|0 9|')\n",
|
||||
" title='|2 0|\\n|0 6|')\n",
|
||||
"plt.gca().grid(b=False)"
|
||||
]
|
||||
},
|
||||
@@ -1050,7 +1019,7 @@
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"This time we use a different variance for $X$ ($\\sigma_x^2=2$) vs $Y$ ($\\sigma^2_y=9$). The result is a tall and narrow ellipse. We can see that a lot more uncertainty in $Y$ vs $X$. In both cases we believe the dog is at (2, 7), but the uncertainties are different."
|
||||
"This time we use a different variance for $X$ ($\\sigma_x^2=2$) vs $Y$ ($\\sigma^2_y=6$). The result is a tall and narrow ellipse. We can see that a lot more uncertainty in $Y$ vs $X$. In both cases we believe the dog is at (2, 7), but the uncertainties are different."
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -1343,7 +1312,7 @@
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Now suppose I were to tell you that we know that $x=7.5$. What can we infer about the value for $y$? The position is extremely likely to lie within the 3$\\sigma$ covariance ellipse. We can *infer* the position in *y* based on the covariance matrix because there is a correlation between *x* and *y*. I've illustrated the likely range of values for y as a blue filled circle."
|
||||
"Now suppose I were to tell you that we know that $x=7.5$. What can we infer about the value for $y$? The position is extremely likely to lie within the 3$\\sigma$ covariance ellipse. We can infer the position in *y* based on the covariance matrix because there is a correlation between *x* and *y*. I've illustrated the likely range of values for y as a blue filled circle."
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -1374,7 +1343,7 @@
|
||||
"source": [
|
||||
"The circle not mathematically correct, but it gets the idea across. We will tackle the mathematics in the next section. For now recognize that we can predict that $y$ is likely near 12. A value of $y=-10$ is extremely improbable.\n",
|
||||
"\n",
|
||||
"A word about *correlation* and *independence*. If variables are *independent* they can vary separately. If you walk in an open field, you can move in the $x$ direction (east-west), the $y$ direction(north-south), or any combination thereof. Independent variables are always also *uncorrelated*. Except in special cases, the reverse does not hold true. Variables can be uncorrelated, but dependent. For example, consider $y=x^2$. Correlation is a linear measurement, so $x$ and $y$ are uncorrelated. However, they are obviously dependent on each other. "
|
||||
"A word about *correlation* and *independence*. If variables are *independent* they can vary separately. If you walk in an open field, you can move in the $x$ direction (east-west), the $y$ direction(north-south), or any combination thereof. Independent variables are always also *uncorrelated*. Except in special cases, the reverse does not hold true. Variables can be uncorrelated, but dependent. For example, consider $y=x^2$. Correlation is a linear measurement, so $x$ and $y$ are uncorrelated. However, $y$ is dependent on $x$. "
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -1427,11 +1396,9 @@
|
||||
"\\end{aligned}$$\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"They are generated by plugging the multivariate Gaussians for the prior and the estimate into Bayes Theorem. I gave you the algebra for the univariate case in the last section of the **Univariate Kalman Filter** chapter. \n",
|
||||
"\n",
|
||||
"You will not need to remember these equations, as they are computed by Kalman filter equations that will be presented shortly. This computation is also available in FilterPy using the `multivariate_multiply()` method, which you can import from `filterpy.stats`. \n",
|
||||
"\n",
|
||||
"They are generated by plugging the multivariate Gaussians for the prior and the estimate into Bayes Theorem. I gave you the algebra for the univariate case in the **Gaussians** chapter. \n",
|
||||
"\n",
|
||||
"You will not need to remember these equations as they are computed by Kalman filter equations that will be presented shortly. This computation is also available in FilterPy using the `multivariate_multiply()` method, which you can import from `filterpy.stats`. \n",
|
||||
"\n",
|
||||
"To give you some intuition about this, recall the equations for multiplying univariate Gaussians:\n",
|
||||
"\n",
|
||||
@@ -1440,7 +1407,7 @@
|
||||
"\\sigma^2 &= \\frac{\\sigma_1^2\\sigma_2^2}{\\sigma_1^2+\\sigma_2^2}\n",
|
||||
"\\end{aligned}$$\n",
|
||||
"\n",
|
||||
"This looks similar to the equations for the multivariate equations. This will be more obvious if you recognize that matrix inversion, denoted by the -1 power, is *like* a reciprocal since $AA^{-1} =I$. I will rewrite the inversions as divisions - this is not a mathematically correct thing to do as division for matrices is not defined, but it does help us see what is going on.\n",
|
||||
"This looks similar to the equations for the multivariate equations. This will be more obvious if you recognize that matrix inversion, denoted by the -1 power, is *like* a reciprocal since $AA^{-1} =I$. I will rewrite the inversions as divisions - this is not a mathematically correct thing to do as division for matrices is not defined, but it does help us compare the equations.\n",
|
||||
"\n",
|
||||
"$$\\begin{aligned}\n",
|
||||
"\\mu &\\approx \\frac{\\Sigma_2\\mu_1 + \\Sigma_1\\mu_2}{\\Sigma_1 + \\Sigma_2} \\\\ \\\\\n",
|
||||
@@ -1449,7 +1416,7 @@
|
||||
"\n",
|
||||
"In this form the relationship between the univariate and multivariate equations is clear.\n",
|
||||
"\n",
|
||||
"Now let's explore multivariate Gaussians in terms of a concrete example. Suppose that we are tracking an aircraft with two radar systems. I will ignore altitude so I can use two dimensional plots. Radars give us the range and bearing to a target. We start out being uncertain about the position of the aircraft, so the covariance, which is our uncertainty about the position, might look like this. In the language of Bayesian statistics this is our *prior*. "
|
||||
"Now let's explore multivariate Gaussians in terms of a concrete example. Suppose that we are tracking an aircraft with two radar systems. I will ignore altitude so I can use two dimensional plots. Radar provides the range and bearing to a target. We start out being uncertain about the position of the aircraft, so the covariance, which is our uncertainty about the position, might look like this. In the language of Bayesian statistics this is our *prior*. "
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -1585,7 +1552,7 @@
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"To incorporate this new information we will multiply the Gaussians together."
|
||||
"We incorporate this information by multiplying the Gaussians:"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -1759,14 +1726,14 @@
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"You can already see why a multivariate Kalman filter can perform better than a univariate one. The last section demonstrated how we can use correlations between variables to significantly improve our estimates. We can take this much further. **This section contains the key insight to this chapter, so read carefully**.\n",
|
||||
"You can already see why a multivariate Kalman filter can perform better than a univariate one. Correlations between variables to significantly improve our estimates. We can take this much further. **This section contains the key insight to this chapter, so read carefully**.\n",
|
||||
"\n",
|
||||
"Let's say we are tracking an aircraft and we get the following data for the $x$ and $y$ coordinates at time $t$=1, 2, and 3 seconds. What does your intuition tell you the value of $x$ will be at time $t$=4 seconds?"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 140,
|
||||
"execution_count": 51,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
@@ -1775,7 +1742,7 @@
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<matplotlib.figure.Figure at 0x898e2b0>"
|
||||
"<matplotlib.figure.Figure at 0xb2e1c88>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
@@ -1796,16 +1763,16 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 141,
|
||||
"execution_count": 52,
|
||||
"metadata": {
|
||||
"collapsed": false
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<matplotlib.figure.Figure at 0x898ef98>"
|
||||
"<matplotlib.figure.Figure at 0x8936470>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
@@ -1914,9 +1881,9 @@
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"It won't be clear until the next chapter how I calculate this covariance. Ignore the calculation, and think about what this implies. We have no easy way to say where the object really is because we are so uncertain about the velocity. Hence the ellipse stretches very far in the x-axis. Our uncertainty in velocity of course means it is also very spread in the y-axis. But as I said in the last paragraph, position and velocity is correlated. If the velocity is 5 m/s the next position would be 5, and if the velocity is 10 the next position would be 10. They are very correlated, so the ellipse must be very narrow. \n",
|
||||
"It won't be clear until the next chapter how I calculate this covariance. Ignore the calculation, and think about what this implies. We have no easy way to say where the object really is because we are so uncertain about the velocity. Hence the ellipse stretches very far in the x-axis. Our uncertainty in velocity of course means it is also very spread in the y-axis. But as I said in the last paragraph, position is correlated to velocity. If the velocity is 5 m/s the next position would be 5, and if the velocity is 10 the next position would be 10. They are very correlated, so the ellipse must be very narrow. \n",
|
||||
"\n",
|
||||
"This superposition of the two covariances is where the magic happens. The only reasonable estimate at time t=1 (where position=5) is roughly the *intersection* between the two covariance matrices! More exactly, we can use the math from the last section and *multiply* the two covariances together. From a Bayesian point of view we multiply the prior with the probability of the evidence (the *likelihood*) to get the posterior. If we multiply the position covariance with the velocity covariance using the Bayesian equations we get this result:"
|
||||
"This superposition of the two covariances is where the magic happens. The only reasonable estimate at time t=1 (where position=5) is roughly the intersection between the two covariance matrices! More exactly, we can use the math from the last section and multiply the two covariances together. From a Bayesian point of view we multiply the prior with the probability of the evidence (the *likelihood*) to get the posterior. If we multiply the position covariance with the velocity covariance using the Bayesian equations we get this result:"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -1945,7 +1912,7 @@
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"The new covariance (the posterior) lies at the intersection of the position covariance and the velocity covariance. It is slightly tilted, showing that there is some correlation between the position and velocity. Far more importantly, it is much smaller than either the position or velocity covariances. In the previous chapter our variance would get smaller each time we performed an `update()` because the previous estimate was multiplied by the new measurement. The same happens here. However, the improvement is much more significant here. This is because we are using two different pieces of information which are nevertheless correlated. Knowing the velocity approximately and their correlation and the position approximately allows us to make a very accurate estimate."
|
||||
"The new covariance (the posterior) lies at the intersection of the position covariance and the velocity covariance. It is slightly tilted, showing that there is some correlation between the position and velocity. Far more importantly, it is much smaller than either the position or velocity covariances. In the previous chapter our variance would get smaller each time we performed an `update()` because the previous estimate was multiplied by the new measurement. The same happens here. However, here the improvement is markedly better. This is because we are using two different pieces of information which are nevertheless correlated. Knowing the velocity approximately and their correlation and the position approximately allows us to make a very accurate estimate."
|
||||
]
|
||||
},
|
||||
{
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
+1
-1
@@ -43,7 +43,7 @@ def test_filterpy_version():
|
||||
from distutils.version import LooseVersion
|
||||
|
||||
v = filterpy.__version__
|
||||
min_version = "0.1.1"
|
||||
min_version = "0.1.2"
|
||||
if LooseVersion(v) < LooseVersion(min_version):
|
||||
raise Exception("Minimum FilterPy version supported is {}.\n"
|
||||
"Please install a more recent version.\n"
|
||||
|
||||
+2
-2
@@ -60,7 +60,7 @@ def print_results(estimates, prediction, weight):
|
||||
def create_predict_update_chart(box_bg = '#CCCCCC',
|
||||
arrow1 = '#88CCFF',
|
||||
arrow2 = '#88FF88'):
|
||||
plt.figure(figsize=(4,4), facecolor='w')
|
||||
plt.figure(figsize=(3,3), facecolor='w')
|
||||
ax = plt.axes((0, 0, 1, 1),
|
||||
xticks=[], yticks=[], frameon=False)
|
||||
#ax.set_xlim(0, 10)
|
||||
@@ -123,7 +123,7 @@ def create_predict_update_chart(box_bg = '#CCCCCC',
|
||||
ha='center', va='center', fontsize=18)
|
||||
plt.axis('equal')
|
||||
#plt.axis([0,8,0,8])
|
||||
plt.show()
|
||||
#plt.show()
|
||||
|
||||
|
||||
def plot_estimate_chart_1():
|
||||
|
||||
+3
-3
@@ -36,11 +36,11 @@ def plot_dog_track(xs, dog, measurement_var, process_var):
|
||||
|
||||
|
||||
def print_gh(predict, update, z):
|
||||
predict_template = ' {: 7.3f} {: 8.3f}'
|
||||
update_template = '{: 7.3f} {: 7.3f}\t {:.3f}'
|
||||
predict_template = '{: 7.3f} {: 8.3f}'
|
||||
update_template = '{:.3f}\t{: 7.3f} {: 7.3f}'
|
||||
|
||||
print(predict_template.format(predict[0], predict[1]),end='\t')
|
||||
print(update_template.format(update[0], update[1], z))
|
||||
print(update_template.format(z, update[0], update[1]))
|
||||
|
||||
|
||||
def print_variance(positions):
|
||||
|
||||
@@ -181,8 +181,8 @@ def show_position_prediction_chart():
|
||||
plt.xlim([0,5])
|
||||
plt.ylim([0,5])
|
||||
|
||||
plt.xlabel("Position")
|
||||
plt.ylabel("Time")
|
||||
plt.xlabel("X")
|
||||
plt.ylabel("Y")
|
||||
|
||||
plt.xticks(np.arange(1,5,1))
|
||||
plt.yticks(np.arange(1,5,1))
|
||||
@@ -417,27 +417,27 @@ def plot_3_covariances():
|
||||
plt.gca().grid(b=False)
|
||||
plt.gca().set_xticks([0,1,2,3,4])
|
||||
plot_covariance_ellipse((2, 7), cov=P, facecolor='g', alpha=0.2,
|
||||
title='|2 0|\n|0 2|', axis_equal=False)
|
||||
plt.ylim((4, 10))
|
||||
title='|2 0|\n|0 2|', std=[1,2,3], axis_equal=False)
|
||||
plt.ylim((0, 15))
|
||||
plt.gca().set_aspect('equal', adjustable='box')
|
||||
|
||||
plt.subplot(132)
|
||||
plt.gca().grid(b=False)
|
||||
plt.gca().set_xticks([0,1,2,3,4])
|
||||
P = [[2, 0], [0, 9]]
|
||||
plt.ylim((4, 10))
|
||||
P = [[2, 0], [0, 6]]
|
||||
plt.ylim((0, 15))
|
||||
plt.gca().set_aspect('equal', adjustable='box')
|
||||
plot_covariance_ellipse((2, 7), P, facecolor='g', alpha=0.2,
|
||||
axis_equal=False, title='|2 0|\n|0 9|')
|
||||
std=[1,2,3],axis_equal=False, title='|2 0|\n|0 6|')
|
||||
|
||||
plt.subplot(133)
|
||||
plt.gca().grid(b=False)
|
||||
plt.gca().set_xticks([0,1,2,3,4])
|
||||
P = [[2, 1.2], [1.2, 2]]
|
||||
plt.ylim((4, 10))
|
||||
plt.ylim((0, 15))
|
||||
plt.gca().set_aspect('equal', adjustable='box')
|
||||
plot_covariance_ellipse((2, 7), P, facecolor='g', alpha=0.2,
|
||||
axis_equal=False,
|
||||
axis_equal=False,std=[1,2,3],
|
||||
title='|2 1.2|\n|1.2 2|')
|
||||
|
||||
plt.tight_layout()
|
||||
|
||||
Reference in new issue
Block a user