# dPosteriorPredictive.GaussianNIG: Posterior predictive density function of a "GaussianNIG"... In bbricks: Bayesian Methods and Graphical Model Structures for Statistical Modeling

## Description

Generate the the density value of the posterior predictive distribution of the following structure:

x \sim Gaussian(X beta,sigma^2)

sigma^2 \sim InvGamma(a,b)

beta \sim Gaussian(m,sigma^2 V)

Where X is a row vector, or a design matrix where each row is an obervation. InvGamma() is the Inverse-Gamma distribution, Gaussian() is the Gaussian distribution. See `?dInvGamma` and `dGaussian` for the definitions of these distribution.
The model structure and prior parameters are stored in a "GaussianNIG" object.
Posterior predictive density is p(x|m,V,a,b,X).

## Usage

 ```1 2``` ```## S3 method for class 'GaussianNIG' dPosteriorPredictive(obj, x, X, LOG = TRUE, ...) ```

## Arguments

 `obj` A "GaussianNIG" object. `x` numeric, must satisfy length(x) = nrow(X). `X` matrix, must satisfy length(x) = nrow(X). `LOG` Return the log density if set to "TRUE". `...` Additional arguments to be passed to other inherited types.

## Value

A numeric vector, the posterior predictive density.

## References

Banerjee, Sudipto. "Bayesian Linear Model: Gory Details." Downloaded from http://www. biostat. umn. edu/~ph7440 (2008).

`GaussianNIG`, `dPosteriorPredictive.GaussianNIG`, `marginalLikelihood.GaussianNIG`
 ```1 2 3 4 5 6 7 8 9``` ```obj <- GaussianNIG(gamma=list(m=0,V=1,a=1,b=1)) X <- 1:20 x <- rnorm(20)+ X*0.3 ## out1 and out2 it should have the same values: out1 <- dPosteriorPredictive(obj = obj, x = x,X=X,LOG = TRUE) out2 <- numeric(length(x)) for(i in 1:length(x)) out2[i] <- marginalLikelihood(obj,x=x[i],X=X[i],LOG = TRUE) max(abs(out1-out2)) ```