@Override public DiscreteMixture.Component M(int[] x, double[] posteriori) { double alpha = 0.0; double mean = 0.0; for (int i = 0; i < x.length; i++) { alpha += posteriori[i]; mean += x[i] * posteriori[i]; } mean /= alpha; DiscreteMixture.Component c = new DiscreteMixture.Component(); c.priori = alpha; c.distribution = new GeometricDistribution(1 / mean); return c; } }
@Override public DiscreteMixture.Component M(int[] x, double[] posteriori) { double alpha = 0.0; double mean = 0.0; for (int i = 0; i < x.length; i++) { alpha += posteriori[i]; mean += x[i] * posteriori[i]; } mean /= alpha; DiscreteMixture.Component c = new DiscreteMixture.Component(); c.priori = alpha; c.distribution = new GeometricDistribution(1 / (1 + mean)); return c; } }
@Override public DiscreteMixture.Component M(int[] x, double[] posteriori) { double alpha = 0.0; double mean = 0.0; for (int i = 0; i < x.length; i++) { alpha += posteriori[i]; mean += x[i] * posteriori[i]; } mean /= alpha; DiscreteMixture.Component c = new DiscreteMixture.Component(); c.priori = alpha; c.distribution = new PoissonDistribution(mean); return c; }