Example usage for org.apache.commons.math3.fitting WeightedObservedPoint getX

List of usage examples for org.apache.commons.math3.fitting WeightedObservedPoint getX

Introduction

In this page you can find the example usage for org.apache.commons.math3.fitting WeightedObservedPoint getX.

Prototype

public double getX() 

Source Link

Document

Gets the abscissa of the point.

Usage

From source file:edu.ucsf.valelab.saim.calculations.SaimErrorFunction.java

public SaimErrorFunction(SaimData data, Collection<WeightedObservedPoint> observedPoints) {
    data_ = data;/*  w  ww  .  ja v a 2s .  c om*/
    observedPoints_ = observedPoints;
    fresnelTE_ = new HashMap<Double, Complex>(observedPoints_.size());
    // pre-calculate all the fresnel coefficients
    for (WeightedObservedPoint observedPoint : observedPoints_) {
        double angle = observedPoint.getX();
        Complex val = SaimCalc.fresnelTE(data_.wavelength_, angle, data_.dOx_, data_.nSample_);
        fresnelTE_.put(angle, val);
    }
}

From source file:edu.ucsf.valelab.saim.calculations.SaimErrorFunction.java

/**
 * For each observedPoint.getX calculates the predicted intensity
 * Returns the sum of absolute errors//w  ww. ja  va2s. co m
 * @param point {A, B, h}
 * @return sum of absolute errors
 */
@Override
public double value(double[] point) {
    if (point.length != 3) {
        throw new DimensionMismatchException(point.length, 3);
    }

    double A = point[0];
    double B = point[1];
    double h = point[2];

    double error = 0.0;
    for (WeightedObservedPoint observedPoint : observedPoints_) {
        double angle = observedPoint.getX();
        Complex rTE = fresnelTE_.get(angle);
        double phaseDiff = SaimCalc.PhaseDiff(data_.wavelength_, angle, data_.nSample_, h);
        double c = rTE.getReal();
        double d = rTE.getImaginary();
        double val = 1 + 2 * c * Math.cos(phaseDiff) - 2 * d * Math.sin(phaseDiff) + c * c + d * d;
        error += Math.abs(A * val + B - observedPoint.getY());
    }
    return error;
}

From source file:edu.washington.gs.skyline.model.quantification.RegressionFit.java

public Double computeRSquared(CalibrationCurve curve, List<WeightedObservedPoint> points) {
    SummaryStatistics yValues = new SummaryStatistics();
    SummaryStatistics residuals = new SummaryStatistics();
    for (WeightedObservedPoint point : points) {
        Double yFitted = curve.getY(point.getX());
        if (yFitted == null) {
            continue;
        }/*from  w  w w.jav a 2  s . c  o m*/
        yValues.addValue(point.getY());
        residuals.addValue(point.getY() - yFitted);
    }
    if (0 == residuals.getN()) {
        return null;
    }
    double yMean = yValues.getMean();
    double totalSumOfSquares = points.stream().mapToDouble(p -> (p.getY() - yMean) * (p.getY() - yMean)).sum();
    double sumOfSquaresOfResiduals = residuals.getSumsq();
    double rSquared = 1 - sumOfSquaresOfResiduals / totalSumOfSquares;
    return rSquared;
}

From source file:eu.tango.energymodeller.energypredictor.CpuAndAcceleratorEnergyPredictor.java

/**
 * This performs a calculation to determine how close the fit is for a given
 * model./*w w  w  . j a  v a  2 s  .  c om*/
 *
 * @param function The PolynomialFunction to assess
 * @param observed The actual set of observed points
 * @return The sum of the square error.
 */
private double getSumOfSquareError(PolynomialFunction function, List<WeightedObservedPoint> observed) {
    double answer = 0;
    for (WeightedObservedPoint current : observed) {
        double error = current.getY() - function.value(current.getX());
        answer = answer + (error * error);
    }
    return answer;
}

From source file:eu.tango.energymodeller.energypredictor.CpuAndBiModalAcceleratorEnergyPredictor.java

/**
 * This performs a calculation to determine how close the fit is for a given
 * model.// w  w w .j  a  v  a 2s .com
 *
 * @param function The PolynomialFunction to assess
 * @param observed The actual set of observed points
 * @return The sum of the square error.
 */
private double getSumOfSquareError(GroupingFunction function, List<WeightedObservedPoint> observed) {
    double answer = 0;
    for (WeightedObservedPoint current : observed) {
        double error = current.getY() - function.value(current.getX());
        answer = answer + (error * error);
    }
    return answer;
}

From source file:edu.ucsf.valelab.saim.calculations.TestSaimErrorFunction.java

public void test() throws Exception {
    SaimData data = new SaimData();

    data.wavelength_ = 488.0;/* w  ww  .  j  av a2  s.c o m*/
    data.nSample_ = 1.36;
    data.dOx_ = 500.0;
    data.A_ = 1000.0;
    data.B_ = 5000.0;
    data.heights_ = new double[] { 75.0 };

    double maxError = 0.0000000001;

    // make a collection of "observed" points
    ArrayList<WeightedObservedPoint> points = new ArrayList<WeightedObservedPoint>();
    for (int i = -50; i <= 50; i += 1) {
        double angle = Math.toRadians(i);
        double I = data.A_
                * SaimCalc.fieldStrength(data.wavelength_, angle, data.nSample_, data.dOx_, data.heights_[0])
                + data.B_;
        WeightedObservedPoint point = new WeightedObservedPoint(1.0, angle, I);
        points.add(point);
    }
    // calculate the error with these ideal points (shoudle be 0)
    SaimErrorFunction sef = new SaimErrorFunction(data, points);
    double[] parameters = { data.A_, data.B_, data.heights_[0] };
    double error = sef.value(parameters);

    System.out.println("SaimError error: " + error);
    assertEquals(0.0, error, maxError);

    // now add 1 to all the data points.  Error should be number of data points
    ArrayList<WeightedObservedPoint> newPoints = new ArrayList<WeightedObservedPoint>();
    for (WeightedObservedPoint point : points) {
        newPoints.add(new WeightedObservedPoint(1.0, point.getX(), point.getY() + 1.0));
    }
    SaimErrorFunction sef2 = new SaimErrorFunction(data, newPoints);
    error = sef2.value(parameters);

    System.out.println("SaimError error: " + error);
    assertEquals(points.size(), error, maxError);

}