Package gov.sandia.cognition.statistics.distribution

Examples of gov.sandia.cognition.statistics.distribution.UnivariateGaussian


      LogitMixParticle priorParticle, ObservedValue<Vector, Matrix> data) {

    final LogitMixParticle updatedParticle = priorParticle.clone();
    final KalmanFilter filter = updatedParticle.getRegressionFilter();

    final UnivariateGaussian evComponent = updatedParticle.EVcomponent;

    final boolean isOne = !data.getObservedValue().isZero();

    final int smplLowerIdx = DiscreteSamplingUtil.sampleIndexFromProportions(
        getRandom(), updatedParticle.getComponentLikelihoods());
//    final int smplLowerIdx = DiscreteSamplingUtil.sampleIndexFromProbabilities(
//        getRandom(), this.evDistribution.getPriorWeights());

    final UnivariateGaussian partComponent =
        this.evDistribution.getDistributions().get(smplLowerIdx);

    final double dsampledAugResponse = sampleAugResponse(
        updatedParticle.getPriorPredMean(),
        updatedParticle.getPriorPredCov(), isOne,
        partComponent);

    // TODO we should've already set this, so it might be redundant.
    filter.setMeasurementCovariance(
        MatrixFactory.getDefault().copyArray(new double[][] {{
          evComponent.getVariance() + partComponent.getVariance()}}));

    final Vector sampledAugResponse =
        VectorFactory.getDefault().copyValues(
            dsampledAugResponse
            - evComponent.getMean().doubleValue()
            - partComponent.getMean().doubleValue());

    updatedParticle.setAugResponseSample(sampledAugResponse);

    final MultivariateGaussian posteriorState = updatedParticle.getLinearState().clone();
    filter.update(posteriorState, sampledAugResponse);
View Full Code Here


  protected GaussianArTransitionState propagate(
      GaussianArTransitionState prevState, int predClass, ObservedValue<Double,Void> data) {
    /*
     * Perform the filtering step
     */
    final UnivariateGaussian priorDist = prevState.getSuffStat();
    final double priorPredMean = a[predClass] * priorDist.getMean();
    final double priorPredCov = a[predClass] * a[predClass] * priorDist.getVariance() + sigma2[predClass];
   
    final StandardHMM<Double> newHmm = prevState.getHmm();

    final GaussianArTransitionState newTransState =
        new GaussianArTransitionState(prevState, newHmm,
            predClass, data, null);

    newTransState.setPriorPredSuffStats(new UnivariateGaussian(priorPredMean, priorPredCov));
   
    return newTransState;
  }
View Full Code Here

      final double postCovariance = 1d/(1d/priorPredCov + 1d/sigma_y2);
      final double postMean = (priorPredMean/priorPredCov
          + priorParameter.getObservation().getObservedValue()/sigma_y2)
          * postCovariance;

      final UnivariateGaussian postDist =
          new UnivariateGaussian(postMean, postCovariance);
 
      final GaussianArTransitionState postState =
          priorParameter.clone();
      postState.setSuffStat(postDist);

View Full Code Here

      final double upperVar = particle.getPriorPredCov();
      double logLikelihood = Double.NEGATIVE_INFINITY;
      double[] componentLikelihoods = new double[10];
      for (int i = 0; i < 10; i++) {

        final UnivariateGaussian partComponent =
            this.evDistribution.getDistributions().get(i);

        // TODO FIXME: do this in log scale...
        double partLogLik =
            ExtStatisticsUtils.normalCdf(0d,
            upperMean - partComponent.getMean(),
            Math.sqrt(upperVar + partComponent.getVariance()),
            true);
        if (observation.getObservedValue().getElement(0) > 0d) {
//        if (!observation.getObservedValue().isZero()) {
          partLogLik = LogMath.subtract(0d, partLogLik);
        }
View Full Code Here

      for (int i = 0; i < numParticles; i++) {
       
        final MultivariateGaussian initialPriorState = initialPrior.clone();
        final KalmanFilter kf = this.initialFilter.clone();
        final int componentId = this.rng.nextInt(10);
        final UnivariateGaussian evDist = this.evDistribution.
            getDistributions().get(componentId);
       
        final LogitMixParticle particleMvgDPDist =
            new LogitMixParticle(null,
                kf, initialPriorState, evDist);
View Full Code Here

          predictiveParticle.setPreviousParticle(particle);
          predictiveParticle.setBetaSample(betaMean);
          predictiveParticle.setLinearState(predictivePrior);

          final UnivariateGaussian componentDist =
              filter.evDistribution.getDistributions().get(j);

          predictiveParticle.setEVcomponent(componentDist);
         
          /*
           * Update the observed data for the regression component.
           */
          predictiveParticle.getRegressionFilter().getModel().setC(F);

          final Matrix compVar = MatrixFactory.getDefault().copyArray(
              new double[][] {{componentDist.getVariance()}});
          predictiveParticle.getRegressionFilter().setMeasurementCovariance(compVar);
         
          final double compPredPriorObsMean =
               F.times(betaMean).getElement(0)
               + componentDist.getMean();
          final double compPredPriorObsCov =
               F.times(predictivePrior.getCovariance()).times(F.transpose()).getElement(0, 0)
               + componentDist.getVariance();
          predictiveParticle.setPriorPredMean(compPredPriorObsMean);
          predictiveParticle.setPriorPredCov(compPredPriorObsCov);

          final double logLikelihood =
              filter.updater.computeLogLikelihood(predictiveParticle, data);
View Full Code Here

          predictiveParticle.setPreviousParticle(particle);
          predictiveParticle.setBetaSample(betaSample);
          predictiveParticle.setAugResponseSample(sampledAugResponse);
          predictiveParticle.setLinearState(predictivePrior);

          final UnivariateGaussian componentDist =
              this.evDistribution.getDistributions().get(j);

          predictiveParticle.setEVcomponent(componentDist);
         
          /*
           * Update the observed data for the regression component.
           */
          predictiveParticle.getRegressionFilter().getModel().setC(F);

          // TODO would be great to have a 1x1 matrix class here...
          final Matrix compVar = MatrixFactory.getDefault().copyArray(
              new double[][] {{componentDist.getVariance()}});
          predictiveParticle.getRegressionFilter().setMeasurementCovariance(compVar);
         
          final double compPredPriorObsMean =
               F.times(betaSample).getElement(0)
               + componentDist.getMean();
          final double compPredPriorObsCov =
               F.times(predictivePrior.getCovariance()).times(F.transpose()).getElement(0, 0)
               + componentDist.getVariance();
          predictiveParticle.setPriorPredMean(compPredPriorObsMean);
          predictiveParticle.setPriorPredCov(compPredPriorObsCov);

          final double logLikelihood =
              this.updater.computeLogLikelihood(predictiveParticle, data);
View Full Code Here

  private LogitMixParticle sufficientStatUpdate(
      LogitMixParticle priorParticle, ObservedValue<Vector, Matrix> data) {
    final LogitMixParticle updatedParticle = priorParticle.clone();
   
    final KalmanFilter filter = updatedParticle.getRegressionFilter();
    final UnivariateGaussian evComponent = updatedParticle.EVcomponent;
    // TODO we should've already set this, so it might be redundant.
    filter.setMeasurementCovariance(
        MatrixFactory.getDefault().copyArray(new double[][] {{
          evComponent.getVariance()}}));

    final Vector sampledAugResponse = priorParticle.getAugResponseSample();
    final Vector diffAugResponse =
        sampledAugResponse.minus(VectorFactory.getDefault().copyArray(
        new double[] {
            evComponent.getMean().doubleValue()
            }));
    final MultivariateGaussian posteriorState = updatedParticle.getLinearState().clone();
    filter.update(posteriorState,
        diffAugResponse);
    updatedParticle.setLinearState(posteriorState);
View Full Code Here

      final double upperMean = particle.getPriorPredMean();
      final double upperVar = particle.getPriorPredCov();
      double logLikelihood = Double.NEGATIVE_INFINITY;
      for (int i = 0; i < 10; i++) {

        final UnivariateGaussian partComponent =
            this.evDistribution.getDistributions().get(i);

        // TODO FIXME: do this in log scale...
        double partLogLik =
            ExtStatisticsUtils.normalCdf(0d,
            upperMean - partComponent.getMean(),
            Math.sqrt(upperVar + partComponent.getVariance()),
            true);
        if (!observation.getObservedValue().isZero()) {
          partLogLik = LogMath.subtract(0d, partLogLik);
        }
View Full Code Here

      for (int i = 0; i < numParticles; i++) {
       
        final MultivariateGaussian initialPriorState = initialPrior.clone();
        final KalmanFilter kf = this.initialFilter.clone();
        final int componentId = this.rng.nextInt(10);
        final UnivariateGaussian evDist = this.evDistribution.
            getDistributions().get(componentId);
       
        final LogitMixParticle particleMvgDPDist =
            new LogitMixParticle(null,
                kf, initialPriorState, evDist);
View Full Code Here

TOP

Related Classes of gov.sandia.cognition.statistics.distribution.UnivariateGaussian

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.