Package gov.sandia.cognition.math.matrix

Examples of gov.sandia.cognition.math.matrix.Matrix


    final long seed = new Random().nextLong();
    final Random random = new Random(seed);
    log.info("seed=" + seed);

    final double trueSigma = Math.pow(0.2d, 2);
    Matrix modelCovariance1 = MatrixFactory.getDefault().copyArray(
        new double[][] {{trueSigma}});
    Matrix modelCovariance2 = MatrixFactory.getDefault().copyArray(
        new double[][] {{trueSigma}});
    Matrix measurementCovariance = MatrixFactory.getDefault().copyArray(
        new double[][] {{trueSigma}});

    List<Vector> truePsis = Lists.newArrayList(
        VectorFactory.getDefault().copyValues(3d, 0.2d),
        VectorFactory.getDefault().copyValues(-1d, 0.9d));

    LinearDynamicalSystem model1 = new LinearDynamicalSystem(
        MatrixFactory.getDefault().copyArray(new double[][] {{truePsis.get(0).getElement(1)}}),
        MatrixFactory.getDefault().copyArray(new double[][] {{1d}}),
        MatrixFactory.getDefault().copyArray(new double[][] {{1d}})
      );
    LinearDynamicalSystem model2 = new LinearDynamicalSystem(
        MatrixFactory.getDefault().copyArray(new double[][] {{truePsis.get(1).getElement(1)}}),
        MatrixFactory.getDefault().copyArray(new double[][] {{1d}}),
        MatrixFactory.getDefault().copyArray(new double[][] {{1d}})
      );
    KalmanFilter trueKf1 = new KalmanFilter(model1, modelCovariance1, measurementCovariance);
    trueKf1.setCurrentInput(VectorFactory.getDefault().copyValues(truePsis.get(0).getElement(0)));
    KalmanFilter trueKf2 = new KalmanFilter(model2, modelCovariance2, measurementCovariance);
    trueKf2.setCurrentInput(VectorFactory.getDefault().copyValues(truePsis.get(1).getElement(0)));
   
    Vector initialClassProbs = VectorFactory.getDefault()
            .copyArray(new double[] { 0.4d, 0.6d });
    Matrix classTransProbs = MatrixFactory.getDefault().copyArray(
                new double[][] { { 0.9d, 0.1d },
                    { 0.1d, 0.9d } });
   
    DlmHiddenMarkovModel trueHmm1 = new DlmHiddenMarkovModel(
        Lists.newArrayList(trueKf1, trueKf2),
        initialClassProbs, classTransProbs);

    final double sigmaPriorMean = Math.pow(0.4, 2);
    final double sigmaPriorShape = 2d;
    final double sigmaPriorScale = sigmaPriorMean*(sigmaPriorShape + 1d);
    final InverseGammaDistribution sigmaPrior = new InverseGammaDistribution(sigmaPriorShape,
        sigmaPriorScale);
   
    final Vector phiMean1 = VectorFactory.getDefault().copyArray(new double[] {
        0d, 0.8d
    });
    final Matrix phiCov1 = MatrixFactory.getDefault().copyArray(new double[][] {
        {2d + 4d * sigmaPriorMean, 0d},
        { 0d, 4d * sigmaPriorMean}
    });
    final MultivariateGaussian phiPrior1 = new MultivariateGaussian(phiMean1, phiCov1);

    final Vector phiMean2 = VectorFactory.getDefault().copyArray(new double[] {
        0d, 0.1d
    });
    final Matrix phiCov2 = MatrixFactory.getDefault().copyArray(new double[][] {
        { 1d + 4d * sigmaPriorMean, 0d},
        { 0d, 4d * sigmaPriorMean}
    });
    final MultivariateGaussian phiPrior2 = new MultivariateGaussian(phiMean2, phiCov2);
   
View Full Code Here


     */
    final MultivariateGaussian initialPrior = new MultivariateGaussian(
        VectorFactory.getDefault().copyValues(0d),
        MatrixFactory.getDefault().copyArray(new double[][] {
            {1000d}}));
    final Matrix F = MatrixFactory.getDefault().copyArray(new double[][] {
        {1d}});
    final Matrix G = MatrixFactory.getDefault().copyArray(new double[][] {
        {1d}});
    final Matrix modelCovariance = MatrixFactory.getDefault().copyArray(new double[][] {
        {0d}});

    final LogitParRBCWFFilter plFilter =
        new LogitParRBCWFFilter(initialPrior,
            F, G, modelCovariance, rng);
View Full Code Here

     */
    final MultivariateGaussian initialPrior = new MultivariateGaussian(
        VectorFactory.getDefault().copyValues(0d),
        MatrixFactory.getDefault().copyArray(new double[][] {
            {1000d}}));
    final Matrix F = MatrixFactory.getDefault().copyArray(new double[][] {
        {1d}});
    final Matrix G = MatrixFactory.getDefault().copyArray(new double[][] {
        {1d}});
    final Matrix modelCovariance = MatrixFactory.getDefault().copyArray(new double[][] {
        {1d}});

    final LogitFSWFFilter plFilter =
        new LogitFSWFFilter(initialPrior,
            F, G, modelCovariance, rng);
View Full Code Here

    final MultivariateGaussian initialPrior = new MultivariateGaussian(
        VectorFactory.getDefault().copyValues(0d, 0d),
        MatrixFactory.getDefault().copyArray(new double[][] {
            {10d, 0d},
            {0d, 10d}}));
    final Matrix F = MatrixFactory.getDefault().copyArray(new double[][] {
        {1d, 1d}});
    final Matrix G = MatrixFactory.getDefault().copyArray(new double[][] {
        {1d, 0d},
        {0d, 1d}});
    final Matrix modelCovariance = MatrixFactory.getDefault().copyArray(new double[][] {
        {0d, 0d},
        {0d, 0d}});

    final LogitFSWFFilter plFilter =
        new LogitFSWFFilter(initialPrior,
View Full Code Here

     */
    final MultivariateGaussian initialPrior = new MultivariateGaussian(
        VectorFactory.getDefault().copyValues(0d),
        MatrixFactory.getDefault().copyArray(new double[][] {
            {100d}}));
    final Matrix F = MatrixFactory.getDefault().copyArray(new double[][] {
        {1d}});
    final Matrix G = MatrixFactory.getDefault().copyArray(new double[][] {
        {1d}});
    final Matrix modelCovariance = MatrixFactory.getDefault().copyArray(new double[][] {
        {0d}});

    final LogitFSWFFilter plFilter =
        new LogitFSWFFilter(initialPrior, F, G,
            modelCovariance, rng);
View Full Code Here

     */
    final MultivariateGaussian initialPrior = new MultivariateGaussian(
        VectorFactory.getDefault().copyValues(0d),
        MatrixFactory.getDefault().copyArray(new double[][] {
            {1000d}}));
    final Matrix F = MatrixFactory.getDefault().copyArray(new double[][] {
        {1d}});
    final Matrix G = MatrixFactory.getDefault().copyArray(new double[][] {
        {1d}});
    final Matrix modelCovariance = MatrixFactory.getDefault().copyArray(new double[][] {
        {0d}});
   
    final int K = 10;

    final LogitRBCPGWFFilter plFilter =
View Full Code Here

    final KalmanFilter kf = prevState.getFilter().clone();

    /*
     * Update the filter parameters with the new psi.
     */
    final Matrix smplArTerms = MatrixFactory.getDefault().createDiagonal(
        priorPsiSmpl.subVector(
            priorPsiSmpl.getDimensionality()/2,
            priorPsiSmpl.getDimensionality() - 1));
    kf.getModel().setA(smplArTerms);

View Full Code Here

        /*
         * K many sub-samples of x_{t-1} 
         */
        final InverseGammaDistribution sigma2SS = particle.getSigma2SS();
        // TODO FIXME matrix inverse!!
        final Matrix postStatePrec = particle.getState().getCovarianceInverse().scale(
            sigma2SS.getShape()/sigma2SS.getScale());
        MultivariateStudentTDistribution postStateMarginal = new MultivariateStudentTDistribution(
            sigma2SS.getShape(),
            particle.getState().getMean(), postStatePrec);
        final Vector stateSample = postStateMarginal.sample(this.getRandom());
View Full Code Here

        final MultivariateGaussian sampledComponentDist =
            updatedComponentDists.get(adjComponentIndex);
        final Vector oldComponentMean = sampledComponentDist.getMean();
        final Vector updatedComponentMean =
            oldComponentMean.scale(oldComponentCount).plus(data).scale(1d / updatedComponentCount);
        final Matrix updatedComponentSS =
            sampledComponentDist
                .getCovariance()
                .plus(data.outerProduct(data))
                .plus(oldComponentMean.outerProduct(oldComponentMean).scale(oldComponentCount))
                .minus(
View Full Code Here

      final NormalInverseWishartDistribution centeringDist = particle.getCenteringDistribution();
      final double newComponentPriorPredDof =
          2d * centeringDist.getInverseWishart().getDegreesOfFreedom()
              - centeringDist.getInputDimensionality() + 1d;
      final double kappa = centeringDist.getCovarianceDivisor();
      final Matrix newComponentPriorPredPrecision =
          centeringDist.getInverseWishart().getInverseScale()
              .scale(2d * (kappa + 1d) / (kappa * newComponentPriorPredDof));
      final MultivariateStudentTDistribution newComponentPriorPred =
          new MultivariateStudentTDistribution(newComponentPriorPredDof, centeringDist
              .getGaussian().getMean(), newComponentPriorPredPrecision.inverse());

      final double newComponentLogLikelihood =
          Math.log(particle.getAlpha()) - Math.log(particle.getAlpha() + particle.getIndex())
              + newComponentPriorPred.getProbabilityFunction().logEvaluate(observation);
      componentPriorPredLogLikelihoods[0] = newComponentLogLikelihood;

      double totalLogLikelihood = newComponentLogLikelihood;

      /*
       * Now, evaluate log likelihood for the current mixture components
       */
      int n = 0;
      for (final MultivariateGaussian component : particle.getDistributions()) {

        final double componentN = particle.getCounts().getElement(n);
        final double componentPriorPredDof =
            2d * centeringDist.getInverseWishart().getDegreesOfFreedom() + componentN
                - centeringDist.getInputDimensionality() + 1d;
        final Vector componentPriorPredMean =
            centeringDist.getGaussian().getMean().scale(kappa)
                .plus(component.getMean().scale(componentN)).scale(1d / (kappa + componentN));


        final Vector componentCenteringMeanDiff =
            centeringDist.getGaussian().getMean().minus(component.getMean());
        final Matrix componentD =
            component.getCovariance().plus(
                componentCenteringMeanDiff.outerProduct(componentCenteringMeanDiff).scale(
                    kappa * componentN / (kappa + componentN)));

        final Matrix componentPriorPredCovariance =
            centeringDist
                .getInverseWishart()
                .getInverseScale()
                .plus(componentD.scale(1d / 2d))
                .scale(
                    2d * (kappa + componentN + 1d) / ((kappa + componentN) * componentPriorPredDof));

        // FIXME TODO avoid this inverse!
        final MultivariateStudentTDistribution componentPriorPred =
            new MultivariateStudentTDistribution(componentPriorPredDof, componentPriorPredMean,
                componentPriorPredCovariance.inverse());

        final double componentLogLikelihood =
            Math.log(componentN) - Math.log(particle.getAlpha() + particle.getIndex())
                + componentPriorPred.getProbabilityFunction().logEvaluate(observation);

View Full Code Here

TOP

Related Classes of gov.sandia.cognition.math.matrix.Matrix

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.