/** * Returns <a href="http://mathworld.wolfram.com/CorrelationCoefficient.html"> * Pearson's product moment correlation coefficient</a>, * usually denoted r. * <p> * <strong>Preconditions</strong>: <ul> * <li>At least two observations (with at least two different x values) * must have been added before invoking this method. If this method is * invoked before a model can be estimated, <code>Double,NaN</code> is * returned. * </li></ul></p> * * @return Pearson's r */ public double getR() { double b1 = getSlope(); double result = FastMath.sqrt(getRSquare()); if (b1 < 0) { result = -result; } return result; }
@Procedure(name = "apoc.math.regr", mode = Mode.READ) @Description("apoc.math.regr(label, propertyY, propertyX) - It calculates the coefficient " + "of determination (R-squared) for the values of propertyY and propertyX in the " + "provided label") public Stream<Output> regr(@Name("label") String label, @Name("propertyY") String y, @Name("propertyX") String x) { SimpleRegression regr = new SimpleRegression(false); double regrAvgX = 0; double regrAvgY = 0; int count = 0; try (ResourceIterator it = db.findNodes(Label.label(label))) { while (it.hasNext()) { Node node = (Node) it.next(); Number propX = (Number) node.getProperty(x, null); Number propY = (Number) node.getProperty(y, null); if (propX != null && propY != null) { regrAvgX = regrAvgX + propX.doubleValue(); regrAvgY = regrAvgY + propY.doubleValue(); regr.addData(propX.doubleValue(), propY.doubleValue()); count++; } } } regrAvgX = regrAvgX / count; regrAvgY = regrAvgY / count; return Stream.of(new Output(regr.getRSquare(), regrAvgX, regrAvgY, regr.getSlope())); } }
@Override public double getRSquaredOfFit() { return regressionChosen.getRSquare(); }
@Test public void testCalculateRegr() throws Throwable { db.execute("CREATE " + "(:REGR_TEST {x_property: 1 , y_property: 2 })," + "(:REGR_TEST {x_property: 2 , y_property: 3 })," + "(:REGR_TEST {y_property: 10000 })," + "(:REGR_TEST {x_property: 3 , y_property: 6 })").close(); SimpleRegression expectedRegr = new SimpleRegression(false); expectedRegr.addData(new double[][]{ {1, 1}, {2, 3}, //{3, 10000}, {3, 6} }); TestUtil.testCall(db, "CALL apoc.math.regr('REGR_TEST', 'y_property', 'x_property')", result -> { assertEquals(expectedRegr.getRSquare(), (Double)result.get("r2"), 0.1); assertEquals(2.0, (Double)result.get("avgX"), 0.1); assertEquals(3.67, (Double)result.get("avgY"), 0.1); assertEquals(expectedRegr.getSlope(), (Double)result.get("slope"), 0.1); }); }
@Test public void testRegrR2isOne() throws Throwable { db.execute("CREATE " + "(:REGR_TEST2 {x_property: 1 , y_property: 1 })," + "(:REGR_TEST2 {x_property: 1 , y_property: 1 })," + "(:REGR_TEST2 {y_property: 10000 })," + "(:REGR_TEST2 {x_property: 1 , y_property: 1 })").close(); SimpleRegression expectedRegr = new SimpleRegression(false); expectedRegr.addData(new double[][]{ {1, 1}, {1, 1}, //{3, 10000}, {1, 1} }); TestUtil.testCall(db, "CALL apoc.math.regr('REGR_TEST2', 'y_property', 'x_property')", result -> { assertEquals(expectedRegr.getRSquare(), (Double)result.get("r2"), 0.1); assertEquals(expectedRegr.getSlope(), (Double)result.get("slope"), 0.1); }); } }
/** * Returns <a href="http://mathworld.wolfram.com/CorrelationCoefficient.html"> * Pearson's product moment correlation coefficient</a>, * usually denoted r. * <p> * <strong>Preconditions</strong>: <ul> * <li>At least two observations (with at least two different x values) * must have been added before invoking this method. If this method is * invoked before a model can be estimated, <code>Double,NaN</code> is * returned. * </li></ul></p> * * @return Pearson's r */ public double getR() { double b1 = getSlope(); double result = Math.sqrt(getRSquare()); if (b1 < 0) { result = -result; } return result; }
/** * Returns <a href="http://mathworld.wolfram.com/CorrelationCoefficient.html"> * Pearson's product moment correlation coefficient</a>, * usually denoted r. * <p> * <strong>Preconditions</strong>: <ul> * <li>At least two observations (with at least two different x values) * must have been added before invoking this method. If this method is * invoked before a model can be estimated, <code>Double,NaN</code> is * returned. * </li></ul></p> * * @return Pearson's r */ public double getR() { double b1 = getSlope(); double result = FastMath.sqrt(getRSquare()); if (b1 < 0) { result = -result; } return result; }
map.put("R", regression.getR()); map.put("N", regression.getN()); map.put("RSquared", regression.getRSquare()); map.put("regressionSumSquares", regression.getRegressionSumSquares()); map.put("slopeConfidenceInterval", regression.getSlopeConfidenceInterval());
public NormalizedProfileStats(final Profile profile, final int normalizationFlag, final int methodFlag) { super(profile, true); normType = normalizationFlag; if (profile.is2D() && is3Dnormalization()) throw new IllegalArgumentException("3D normalization specified on a 2D profile"); countsLogNorm = new double[nPoints]; normalizeCounts(); radiiLog = Arrays.stream(inputRadii).map(r -> Math.log(r)).toArray(); regressionSemiLog = new SimpleRegression(); regressionLogLog = new SimpleRegression(); for (int i = 0; i < nPoints; i++) { regressionSemiLog.addData(inputRadii[i], countsLogNorm[i]); regressionLogLog.addData(radiiLog[i], countsLogNorm[i]); } determinationRatio = regressionSemiLog.getRSquare() / Math.max(Double.MIN_VALUE, regressionLogLog.getRSquare()); assignMethod(methodFlag); }
private void annotateNormalizedProfile(final SimpleRegression regression) { if (!annotate || regression == null) return; // mark slope final double xCenter = (xMin + xMax) / 2; final double ySlope = regression.predict(xCenter); drawDottedLine(xMin, ySlope, xCenter, ySlope); drawDottedLine(xCenter, yMin, xCenter, ySlope); // mark intercept if (regression.hasIntercept()) markPoint(new UPoint(0, regression.getIntercept()), DOT, 8); // assemble legend final double rsqred = regression.getRSquare(); final double k = -regression.getSlope(); tempLegend.append("k= ").append(ShollUtils.d2s(k)); tempLegend.append(" (R\u00B2= ").append(ShollUtils.d2s(rsqred)).append(")\n"); }
regressionRSquare = regression.getRSquare();
/** * Computes regression analysis for all data set at once (all measured values). */ //regression analysis over the entire dataset. private void performRAOverEntireDataset(){ // cely vzorek regression = new SimpleRegression(); addDataSet(10,dataSet.size()); intercept = regression.getIntercept(); slope = regression.getSlope(); r = regression.getR(); rSquare = regression.getRSquare(); p = regression.getSignificance(); }
/** * Computes regression with the given data set values. */ public void run(){ regression = new SimpleRegression(); addDataSet(); slope = regression.getSlope(); r = regression.getR(); rSquare = regression.getRSquare(); p = regression.getSignificance(); issueType = analyzeResults(); if(!PerformanceIssueType.OK.equals(issueType)){ if(PerformanceIssueType.DEGRADATION.equals(issueType)) degradation = true; if(PerformanceIssueType.REGULAR_SPIKES.equals(issueType)) regularSpikes = true; if(PerformanceIssueType.TRAFIC_SPIKE.equals(issueType)) trafficSpike = true; } System.out.println("."); System.out.println("' slope result is '" + slope + "'."); System.out.println("' R is '" + r + "'."); System.out.println("' R square is '" + rSquare + "'."); System.out.println("' significance is '" + p + "'."); }
double sr = sqrt((1-regression.getRSquare()),((Object)(regression.getN()-2))); double pearson = regression.getR()/sr; rSquare = regression.getRSquare(); t = regression.getSlope()/regression.getSlopeStdErr();
rSquare = regression.getRSquare(); t = regression.getSlope()/regression.getSlopeStdErr(); p = regression.getSignificance();
@Override LR.ModelResult asResult() { LR.ModelResult r = new LR.ModelResult(name, framework, hasConstant(), getNumVars(), state, getNTrain(), getNTest()); if (state != State.created) { List<Double> params = new ArrayList<>(); params.add(R.getIntercept()); params.add(R.getSlope()); r.withTrainInfo("parameters", params, "RSquared", R.getRSquare(), "significance", R.getSignificance(), "slope confidence interval", R.getSlopeConfidenceInterval(), "intercept std error", R.getInterceptStdErr(), "slope std error", R.getSlopeStdErr(), "SSE", R.getSumSquaredErrors(), "MSE", R.getMeanSquareError(), "correlation", R.getR(), "SSR", R.getRegressionSumSquares(), "SST", R.getTotalSumSquares()); } if (tester.isReady()) r.withTestInfo(tester.getStatistics()); return r; }
@Override public void run() throws NullContextException { final Logger logger = new Logger(context()); logger.log("\n*** Comparing", profile1.identifier(), "vs", profile2 .identifier(), "***"); logger.log("KS-test: " + getKStest()); logger.log("Reg R: " + regression.getR()); logger.log("Reg R^2: " + regression.getRSquare()); }