TMB Documentation
v1.9.11
|
Projection of multivariate gaussian variable. More...
#include <density.hpp>
Projection of multivariate gaussian variable.
Preserves sparseness if possible. Generally it is not.
Given a gaussian density f:R^n -> R. Given an integer vector "proj" with elements in 1,...,n. Construct the mariginal density of "x[proj]". Details: -------- Let x=[x_A] [x_B] with precision Q=[Q_AA Q_AB] [Q_BA Q_BB] and assume that proj=A. The marginal density is (with notation 0:=0*x_B ) p_A(x_A)=p(x_A,x_B)/p(x_B|x_A)=p(x_A,0)/p(0|x_A) Now see that 1. p(x_A,0) is easy because full precision is sparse. 2. p(0|x_A) is N(-Q_BB^-1 * Q_BA x_A, Q_BB^-1) so p(0|x_A) = |Q_BB|^.5 * exp(-.5*x_A Q_AB * Q_BB^-1 * Q_BA x_A) Trick to evaluate this with what we have available: Note 1: Q_BA x_A = [0 I_BB] * full_jacobian([ x_A ] [ 0 ] ) Call this quantity "y_B" we have p(0|x_A) = |Q_BB|^.5 * exp(-.5*y_B' * Q_BB^-1 * y_B) Note 2: Consider now a density with _covariance_ Q_BB phi(y)=|Q_BB|^-.5 * exp(-.5*y' * Q_BB^-1 * y) Then phi(y)/phi(0)^2=|Q_BB|^.5 * exp(-.5*y' * Q_BB^-1 * y) which is actually the desired expression of p(0|x_A). Summary: ------- Negative log-density of A-marginal is -log p(x_A,0) + log phi(y) - 2*log(phi(0)) = f(x_A,0) - dmvnorm(y_B) + 2*dmvnorm(0)
Definition at line 1297 of file density.hpp.