The required dependencies are Python 3.8, Numpy, Pandas, Matplotlib, TensorFlow, and Tensorflow-Probability.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from mpl_toolkits import mplot3d
import scipy
import tensorflow as tf
import tensorflow_probability as tfp
tfd = tfp.distributions
The statistics required are: mean, covariance, diagonal, and standard deviation. We first generate X, a 2D array, then use the Numpy methods to compare statistics against the parameters used.
np.random.seed(0) # random seed
mu = [0,1]
cov = [[2,0],
[0,2]]
X = np.random.multivariate_normal(mu, cov, size=100)
X_mean = np.mean(X, axis=0)
X_cov = np.cov(X, rowvar=0)
X_diag = np.diag(X_cov)
X_stddev = np.sqrt(X_diag)
# X_mean
[-9.57681805e-04 1.14277867e+00]
# X_cov
[[ 1.05494742 -0.02517201]
[-0.02517201 1.04230397]]
# X_diag
[1.05494742 1.04230397]
# X_stddev
[1.02710633 1.02093289]
Notice that the values of mean and covariance computed from X are comparable to the parameters specified to generate X. np.cov
uses the parameter rowvar=0
to convert rows of samples into rows of variables to compute the covariance matrix. np.diag
obtains the diagonal, which is the variances from a covariance matrix. np.sqrt
will obtain the standard deviations of the diagonal.
#tensorflow