public double proposeNewValueInLogSpace( QuietRealParameter proposal, double oldValue, ParametricDistribution distr, double upper, double lower) throws Exception { double sampleVal = distr.sample(1)[0][0]; double newValue = Math.exp(sampleVal + Math.log(oldValue)); proposal.setValueQuietly(0, newValue); proposal.setBounds(lower, upper); return distr.calcLogP(new QuietRealParameter(new Double[] {sampleVal})) - Math.log(newValue); }
private double proposeNewValue( QuietRealParameter proposal, Double[] oldValues, ParametricDistribution distr, double upper, double lower) throws Exception { Double[] sampleVals = distr.sample(1)[0]; for (int i = 0; i < sampleVals.length; i++) { // if(distr instanceof DiracDeltaDistribution) // System.out.println(distr.getClass()); proposal.setValueQuietly(i, oldValues[i] + sampleVals[i]); } proposal.setUpper(upper); proposal.setLower(lower); return distr.calcLogP(new QuietRealParameter(sampleVals)); }