Ejemplo n.º 1
0
        /// <summary>
        /// Predictive covariance at a given pair of points
        /// </summary>
        /// <param name="x"></param>
        /// <param name="y"></param>
        /// <returns></returns>
        public double Covariance(Vector x, Vector y)
        {
            double kxy = FixedParameters.Prior.Covariance(x, y);
            Vector kxB = FixedParameters.KernelOf_X_B(x);
            Vector kyB = FixedParameters.KernelOf_X_B(y);

            return(kxy - kxB.Inner(Beta * kyB));
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Mean at a given point
 /// </summary>
 /// <param name="X"></param>
 /// <returns></returns>
 public double Mean(Vector X)
 {
     if (IsUniform())
     {
         return(Gaussian.Uniform().GetMean());
     }
     else
     {
         Vector kxB = FixedParameters.KernelOf_X_B(X);
         return(kxB.Inner(Alpha) + FixedParameters.Prior.Mean(X));
     }
 }
Ejemplo n.º 3
0
 /// <summary>
 /// Predictive Variance at a given point
 /// </summary>
 /// <param name="X">Input</param>
 /// <returns>Predictive variance</returns>
 public double Variance(Vector X)
 {
     if (IsUniform())
     {
         Gaussian temp = new Gaussian();
         temp.SetToUniform();
         return(temp.GetVariance());
     }
     else
     {
         Vector kxB = FixedParameters.KernelOf_X_B(X);
         return(FixedParameters.Prior.Variance(X) - Beta.QuadraticForm(kxB));
     }
 }
Ejemplo n.º 4
0
 /// <summary>
 /// Predictive distribution at a given list of points
 /// </summary>
 /// <param name="XList">List of inputs</param>
 /// <returns>Predictive distribution</returns>
 public VectorGaussian Joint(IList <Vector> XList)
 {
     if (IsUniform())
     {
         return(VectorGaussian.Uniform(XList.Count));
     }
     else
     {
         PositiveDefiniteMatrix kXX = FixedParameters.Prior.Covariance(XList);
         Matrix kXB = FixedParameters.KernelOf_X_B(XList);
         kXX.SetToDifference(kXX, kXB * Beta * kXB.Transpose());
         VectorGaussian result = new VectorGaussian(kXB * Alpha + FixedParameters.Prior.Mean(XList), kXX);
         return(result);
     }
 }
Ejemplo n.º 5
0
 /// <summary>
 /// Predictive distribution at a given point
 /// </summary>
 /// <param name="X">Input</param>
 /// <returns>Predictive distribution</returns>
 public Gaussian Marginal(Vector X)
 {
     if (IsUniform())
     {
         return(Gaussian.Uniform());
     }
     else
     {
         double   kxx    = FixedParameters.Prior.Variance(X);
         Vector   kxb    = FixedParameters.KernelOf_X_B(X);
         Gaussian result = new Gaussian(
             kxb.Inner(Alpha) + FixedParameters.Prior.Mean(X), kxx - Beta.QuadraticForm(kxb));
         return(result);
     }
 }
Ejemplo n.º 6
0
 /// <summary>
 /// Predictive coariance at a given list of points
 /// </summary>
 /// <param name="XList">List of inputs</param>
 /// <returns>Predictive covariance</returns>
 public PositiveDefiniteMatrix Covariance(IList <Vector> XList)
 {
     if (IsUniform())
     {
         VectorGaussian temp = new VectorGaussian(XList.Count);
         temp.SetToUniform();
         return(temp.GetVariance());
     }
     else
     {
         PositiveDefiniteMatrix kXX = FixedParameters.Prior.Covariance(XList);
         Matrix kXB = FixedParameters.KernelOf_X_B(XList);
         kXX.SetToDifference(kXX, kXB * Beta * kXB.Transpose());
         return(kXX);
     }
 }