|
|
@@ -4,11 +4,16 @@ import com.lc.ibps.components.verification.regression.PolynomialRegression;
|
|
|
import org.apache.commons.math3.stat.StatUtils;
|
|
|
import org.apache.commons.math3.stat.descriptive.DescriptiveStatistics;
|
|
|
|
|
|
+import java.util.Arrays;
|
|
|
+
|
|
|
public class EP6ALinearRangeVO extends CalcVO{
|
|
|
|
|
|
private double[][] data;
|
|
|
|
|
|
private double[] means;
|
|
|
+ private double[][] diffs;
|
|
|
+ private double[][] dli;
|
|
|
+ private double maxDli;
|
|
|
private double mean;
|
|
|
private double[] standardDeviations;
|
|
|
|
|
|
@@ -21,6 +26,11 @@ public class EP6ALinearRangeVO extends CalcVO{
|
|
|
private PolynomialRegression pr1 = new PolynomialRegression();
|
|
|
private PolynomialRegression pr2 = new PolynomialRegression();
|
|
|
private PolynomialRegression pr3 = new PolynomialRegression();
|
|
|
+ private PolynomialRegression prBest;
|
|
|
+
|
|
|
+
|
|
|
+ private double sdr;
|
|
|
+ private double cvr;
|
|
|
|
|
|
public EP6ALinearRangeVO(double[][] data, double high, double low){
|
|
|
this.data = data;
|
|
|
@@ -29,6 +39,8 @@ public class EP6ALinearRangeVO extends CalcVO{
|
|
|
this.specimensNum = data.length;
|
|
|
this.repeatNum = data[0].length;
|
|
|
this.means = new double[this.specimensNum];
|
|
|
+ this.diffs = new double[5][this.specimensNum];
|
|
|
+ this.dli = new double[5][this.specimensNum];
|
|
|
this.standardDeviations = new double[this.specimensNum];
|
|
|
this.targetValues = new double[this.specimensNum];
|
|
|
calculate();
|
|
|
@@ -40,20 +52,50 @@ public class EP6ALinearRangeVO extends CalcVO{
|
|
|
DescriptiveStatistics stat = new DescriptiveStatistics(data[i]);
|
|
|
means[i] = format(stat.getMean(),2);
|
|
|
standardDeviations[i] = stat.getStandardDeviation();
|
|
|
+ if(repeatNum == 2){
|
|
|
+ diffs[1][i] = data[i][0] - data[i][1]; //diff
|
|
|
+ diffs[2][i] = Math.pow(diffs[1][i],2) /2; //diff * diff / 2
|
|
|
+ diffs[3][i] = diffs[1][i] / means[i] ; //%diff
|
|
|
+ diffs[4][i] = Math.pow(diffs[3][i],2) /2; //%diff * %diff /2
|
|
|
+ }
|
|
|
|
|
|
}
|
|
|
+ diffs[0] = means;
|
|
|
mean = StatUtils.mean(means);
|
|
|
+ sdr = Math.sqrt(StatUtils.mean(diffs[2]))*100;
|
|
|
+ cvr = Math.sqrt(StatUtils.mean(diffs[4]))*100;
|
|
|
+ //TODO: check cvr
|
|
|
|
|
|
pr1.addData(targetValues, means, repeatNum,1);
|
|
|
pr2.addData(targetValues, means, repeatNum,2);
|
|
|
pr3.addData(targetValues, means, repeatNum,3);
|
|
|
- double d = getT(pr1.getDfDependent(),0.05);
|
|
|
- double d2 = getT(pr2.getDfDependent(),0.05);
|
|
|
- double d3 = getT(pr3.getDfDependent(),0.05);
|
|
|
- double s1 = pr1.getStdError() / mean;
|
|
|
- double s2 = pr2.getStdError() /mean;
|
|
|
- double s3 = pr3.getStdError() /mean;
|
|
|
- pr1.getParameters();
|
|
|
+
|
|
|
+ if(pr2.isNonlinear() && pr3.isNonlinear()){
|
|
|
+ if(pr2.getStdError() > pr3.getStdError()) prBest = pr3;
|
|
|
+ else prBest = pr2;
|
|
|
+ } else if(pr2.isNonlinear()) {
|
|
|
+ prBest = pr2;
|
|
|
+ }
|
|
|
+ else if (pr3.isNonlinear()) {
|
|
|
+ prBest = pr3;
|
|
|
+ }
|
|
|
+ //calc dli
|
|
|
+ if(prBest != null) {
|
|
|
+ dli[0] = targetValues;
|
|
|
+ for (int i = 0; i < specimensNum; i++) {
|
|
|
+ dli[1][i] = prBest.calcFunc(targetValues[i]);
|
|
|
+ dli[2][i] = pr1.calcFunc(targetValues[i]);
|
|
|
+ dli[3][i] = dli[1][i] - dli[2][i];
|
|
|
+ dli[4][i] = 100 * dli[3][i] / dli[0][i];
|
|
|
+ }
|
|
|
+
|
|
|
+ maxDli = Arrays.stream(dli[4]).max().getAsDouble();
|
|
|
+ }
|
|
|
+//
|
|
|
+// double s1 = pr1.getStdError() / mean;
|
|
|
+// double s2 = pr2.getStdError() /mean;
|
|
|
+// double s3 = pr3.getStdError() /mean;
|
|
|
+// pr1.getParameters();
|
|
|
}
|
|
|
|
|
|
private void calcTarget(){
|