[Libreoffice-commits] core.git: chart2/source
Philippe Jung
phil.jung at free.fr
Sun Jun 21 15:23:01 PDT 2015
chart2/source/tools/PotentialRegressionCurveCalculator.cxx | 15 ++-----------
1 file changed, 3 insertions(+), 12 deletions(-)
New commits:
commit d16e154c627ecc0cb21aaf4b28f7f5ae48ebbde1
Author: Philippe Jung <phil.jung at free.fr>
Date: Sun Jun 21 22:09:07 2015 +0000
Revert "tdf#92231 Potential regression curve calculation is wrong"
This reverts commit e0e285574244e855fd148ab7320b1aeb5914655a.
Wrong fix
Change-Id: Iddcbb84efbfc88013c6f2a217cb44061016c043b
Reviewed-on: https://gerrit.libreoffice.org/16405
Reviewed-by: Philippe Jung <phil.jung at free.fr>
Tested-by: Philippe Jung <phil.jung at free.fr>
diff --git a/chart2/source/tools/PotentialRegressionCurveCalculator.cxx b/chart2/source/tools/PotentialRegressionCurveCalculator.cxx
index 6f3d438..7495c91 100644
--- a/chart2/source/tools/PotentialRegressionCurveCalculator.cxx
+++ b/chart2/source/tools/PotentialRegressionCurveCalculator.cxx
@@ -51,14 +51,6 @@ void SAL_CALL PotentialRegressionCurveCalculator::recalculateRegression(
aXValues, aYValues,
RegressionCalculationHelper::isValidAndBothPositive()));
- // We try to get y =C * D^x
- // switching to neperian logs:
- // ln(y) = ln(C) + x ln(D)
- // So we make a linear regression and get
- // slope = ln(D) => D = exp(slope)
- // intercept = ln(C) => C = exp(intercept)
- // Warning: the linear regression is between
- // ln(y) and x. Not between ln(y) and ln(x)
const size_t nMax = aValues.first.size();
if( nMax == 0 )
{
@@ -72,7 +64,7 @@ void SAL_CALL PotentialRegressionCurveCalculator::recalculateRegression(
size_t i = 0;
for( i = 0; i < nMax; ++i )
{
- fAverageX += aValues.first[i] ;
+ fAverageX += log( aValues.first[i] );
fAverageY += log( aValues.second[i] );
}
@@ -83,7 +75,7 @@ void SAL_CALL PotentialRegressionCurveCalculator::recalculateRegression(
double fQx = 0.0, fQy = 0.0, fQxy = 0.0;
for( i = 0; i < nMax; ++i )
{
- double fDeltaX = aValues.first[i] - fAverageX;
+ double fDeltaX = log( aValues.first[i] ) - fAverageX;
double fDeltaY = log( aValues.second[i] ) - fAverageY;
fQx += fDeltaX * fDeltaX;
@@ -95,7 +87,6 @@ void SAL_CALL PotentialRegressionCurveCalculator::recalculateRegression(
m_fIntercept = fAverageY - m_fSlope * fAverageX;
m_fCorrelationCoeffitient = fQxy / sqrt( fQx * fQy );
- m_fSlope = exp( m_fSlope );
m_fIntercept = exp( m_fIntercept );
}
@@ -109,7 +100,7 @@ double SAL_CALL PotentialRegressionCurveCalculator::getCurveValue( double x )
if( ! ( ::rtl::math::isNan( m_fSlope ) ||
::rtl::math::isNan( m_fIntercept )))
{
- fResult = m_fIntercept * pow( m_fSlope, x );
+ fResult = m_fIntercept * pow( x, m_fSlope );
}
return fResult;
More information about the Libreoffice-commits
mailing list