public void FitTest7()
{
MultivariateContinuousDistribution target = CreateMultivariateContinuousDistribution();
double[][] observations =
{
new double[] { 1, 2 },
new double[] { 3, 2 },
new double[] { 2, 3 },
new double[] { 1, 2 },
};
double[] weights = { 0.125, 0.125, 0.25, 0.5 };
target.Fit(observations, weights);
double[] expectedMean = { 1.5, 2.25 };
double[,] expectedCov =
{
{ 0.76190476190476186, 0.19047619047619047 },
{ 0.19047619047619047, 0.2857142857142857 },
};
Assert.IsTrue(expectedMean.IsEqual(target.Mean));
Assert.IsTrue(expectedCov.IsEqual(target.Covariance));
Assert.IsTrue(Matrix.Diagonal(expectedCov).IsEqual(target.Variance));
double[] x = { 0.4, 2 };
double expected = 0.168681501947055;
double actual = target.ProbabilityDensityFunction(x);
Assert.AreEqual(expected, actual, 1e-10);
}