Wishart Distribution
Purpose - To simulate data from a Wishart distribution
> W <- matrix(c(2, -0.3, -0.3, 4), 2, 2) > S <- matrix(c(1, -0.3, -0.3, 1), 2, 2) > WishartPDF <- function(W, nu, S) { + N <- dim(W)[1] + ARGS <- (nu - N + 1):nu + K <- 2^(nu * N/2) * pi^(N * (N - 1)/4) * prod(gamma(ARGS/2)) + f <- 1/K * (det(S))^(-nu/2) * (det(W))^((nu - N - 1)/2) * + exp(-1/2 * sum(diag(inv(S) %*% W))) + return(f) + } > WishartPDF(W, nu, S) [1] 0.0001798426 |
Using Library MCMCpack
> library(MCMCpack) > dwish(W, nu, S) [1] 0.0001798426 > rwish(nu, S) [,1] [,2] [1,] 13.223421 -4.791452 [2,] -4.791452 5.423237 |
Generating Random numbers from Wishart
> library(mnormt) > s <- c(1, 1) > r <- 0.3 > nu <- 10 > Simulations <- 10000 > Sigma <- diag(s) %*% matrix(c(1, r, r, 1), nrow = 2) %*% diag(s) > W_xx <- vector() > W_xy <- vector() > W_yy <- vector() > Vec_W <- matrix(data = NA, ncol = 4) > Dets <- vector() > Traces <- vector() > for (j in 1:Simulations) { + X <- rmnorm(nu, mean = c(0, 0), varcov = Sigma) + W <- t(X) %*% X + Dets <- c(Dets, det(W)) + Traces <- c(Traces, sum(diag(W))) + W_xx <- c(W_xx, W[1, 1]) + W_yy <- c(W_yy, W[2, 2]) + W_xy <- c(W_xy, W[1, 2]) + Vec_W <- rbind(Vec_W, matrix(W, nrow = 1, ncol = 4)) + } > Vec_W <- Vec_W[-1, ] |
Compute sample mean and sample covariance
> library(matrixcalc) > Expected_Value <- matrix(nu * Sigma, nrow = 1, ncol = 4) > K_22 <- commutation.matrix(2, 2) > Covariance <- nu * (diag(4) + K_22) %*% (Sigma %x% Sigma) > Sample_Mean <- colMeans(Vec_W) > Sample_Covariance <- cov(Vec_W) |
Plot the three values
> library(scatterplot3d) > scatterplot3d(W_xx, W_xy, W_yy, highlight.3d = TRUE, col.axis = "blue", + col.grid = "lightblue", pch = 20, angle = 65) |
Bivariate Marginals
> par(mfrow = c(2, 2)) > plot(W_xx, W_xy, pch = 19, col = "blue", main = "W_xy Vs W_xx") > plot(W_yy, W_xy, pch = 19, col = "blue", main = "W_xy Vs W_yy") > plot(W_xx, W_yy, pch = 19, col = "blue", main = "W_yy Vs W_xx") > plot(W_xx * W_yy - W_xy * W_xy, pch = 19, col = "blue", main = "W_xx * W_xx - W_xy *W_xy") |
Graph 4 - Similarly the det of the graph is always positive