mirror of
https://github.com/OPM/ResInsight.git
synced 2026-10-26 15:10:22 -05:00
Replaced all references to RiaStatisticsTools with RigStatisticsTools across the codebase, including header includes, static method calls, and test files. Updated CMake configuration to remove RiaStatisticsTools and add RigStatisticsTools. Renamed and updated related unit tests. No changes to logic or algorithms; this is a namespace and organizational refactor for consistency. Also added ApplicationLibCode include directories as PRIVATE to relevant targets.
66 lines
2.5 KiB
C++
66 lines
2.5 KiB
C++
/////////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Copyright (C) 2011- Statoil ASA
|
|
// Copyright (C) 2013- Ceetron Solutions AS
|
|
// Copyright (C) 2011-2012 Ceetron AS
|
|
//
|
|
// ResInsight is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU General Public License as published by
|
|
// the Free Software Foundation, either version 3 of the License, or
|
|
// (at your option) any later version.
|
|
//
|
|
// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
// FITNESS FOR A PARTICULAR PURPOSE.
|
|
//
|
|
// See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
|
|
// for more details.
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////////////
|
|
|
|
#include "RigStatisticsTools.h"
|
|
|
|
#include "RigStatisticsMath.h"
|
|
|
|
//--------------------------------------------------------------------------------------------------
|
|
///
|
|
//--------------------------------------------------------------------------------------------------
|
|
double RigStatisticsTools::pearsonCorrelation( const std::vector<double>& xValues, const std::vector<double>& yValues )
|
|
{
|
|
const double eps = 1.0e-8;
|
|
double rangeX = 0.0, rangeY = 0.0;
|
|
RigStatisticsMath::calculateBasicStatistics( xValues, nullptr, nullptr, nullptr, &rangeX, nullptr, nullptr );
|
|
RigStatisticsMath::calculateBasicStatistics( yValues, nullptr, nullptr, nullptr, &rangeY, nullptr, nullptr );
|
|
if ( rangeX < eps || rangeY < eps ) return 0.0;
|
|
|
|
if ( xValues.size() != yValues.size() ) return 0.0;
|
|
if ( xValues.empty() ) return 0.0;
|
|
|
|
size_t sampleSize = xValues.size();
|
|
|
|
double meanX = 0.0, meanY = 0.0;
|
|
for ( size_t i = 0; i < sampleSize; ++i )
|
|
{
|
|
meanX += xValues[i];
|
|
meanY += yValues[i];
|
|
}
|
|
meanX /= sampleSize;
|
|
meanY /= sampleSize;
|
|
|
|
double sumNumerator = 0.0;
|
|
double sumxDiffSquared = 0.0, sumyDiffSquared = 0.0;
|
|
for ( size_t i = 0; i < sampleSize; ++i )
|
|
{
|
|
double xDiff = xValues[i] - meanX;
|
|
double yDiff = yValues[i] - meanY;
|
|
sumNumerator += xDiff * yDiff;
|
|
sumxDiffSquared += xDiff * xDiff;
|
|
sumyDiffSquared += yDiff * yDiff;
|
|
}
|
|
|
|
if ( sumxDiffSquared < eps && sumyDiffSquared < eps ) return 1.0;
|
|
if ( sumxDiffSquared < eps || sumyDiffSquared < eps ) return 0.0;
|
|
|
|
return sumNumerator / ( std::sqrt( sumxDiffSquared ) * std::sqrt( sumyDiffSquared ) );
|
|
}
|