summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLaurent Balland-Poirier <laurent.balland-poirier@laposte.net>2014-03-01 00:20:53 +0100
committerTomaž Vajngerl <quikee@gmail.com>2014-03-03 11:15:05 -0600
commit00cb825ab3f16a94f1e8311ba0c24f72588e788e (patch)
tree3df796c5e9182730c69d29380d641faf2f052072
parent6a71b8d902ae24db1251ea65841dd0f7bfa5e9b3 (diff)
fdo#75538 R^2 calculation for trendline similar to LINEST function
Modify for forced intercept of trendline, calculation of R^2 in the same way as LINEST function does calculation Change-Id: Ic943b1ca1bbe30b1a4b88e2a338eb9dc34d848b6 Reviewed-on: https://gerrit.libreoffice.org/8402 Reviewed-by: Tomaž Vajngerl <quikee@gmail.com> Tested-by: Tomaž Vajngerl <quikee@gmail.com>
-rw-r--r--chart2/source/tools/PolynomialRegressionCurveCalculator.cxx8
1 files changed, 3 insertions, 5 deletions
diff --git a/chart2/source/tools/PolynomialRegressionCurveCalculator.cxx b/chart2/source/tools/PolynomialRegressionCurveCalculator.cxx
index 90be5a163af5..9b39e01b25f9 100644
--- a/chart2/source/tools/PolynomialRegressionCurveCalculator.cxx
+++ b/chart2/source/tools/PolynomialRegressionCurveCalculator.cxx
@@ -168,7 +168,6 @@ void SAL_CALL PolynomialRegressionCurveCalculator::recalculateRegression(
double aSumError = 0.0;
double aSumTotal = 0.0;
double aSumYpred2 = 0.0;
- double aSumYactual2 = 0.0;
for( sal_Int32 i = 0; i < aNoValues; i++ )
{
@@ -177,15 +176,14 @@ void SAL_CALL PolynomialRegressionCurveCalculator::recalculateRegression(
double yPredicted = getCurveValue( xValue );
aSumTotal += (yActual - yAverage) * (yActual - yAverage);
aSumError += (yActual - yPredicted) * (yActual - yPredicted);
- aSumYpred2 += yPredicted * yPredicted;
- aSumYactual2 += yActual * yActual;
+ if(mForceIntercept)
+ aSumYpred2 += (yPredicted - mInterceptValue) * (yPredicted - mInterceptValue);
}
double aRSquared = 0.0;
if(mForceIntercept)
{
- if(aSumYactual2 != 0.0)
- aRSquared = aSumYpred2 / aSumYactual2;
+ aRSquared = aSumYpred2 / (aSumError + aSumYpred2);
}
else
{