etl/docs/maths/correlation.md
2026-04-15 13:02:52 +02:00

2.5 KiB

title
Correlation

{{< callout type="info">}} Header: correlation.h
Since: 20.9.0
{{< /callout >}}

Calculates the correlation of two sets of data.

template <bool Correlation_Type, typename TInput, typename TCalc = TInput>
class correlation : public etl::binary_function<TInput, TInput, void>

Correlation_Type Population or Sample.
TInput The input data type.
TCalc The type to use for internal calculations. By default, equal to TInput.

correlation_type
etl::correlation_type::Sample etl::correlation_type::Population

Construction

correlation()

Description
Default constructor.


template <typename TIterator>
correlation(TIterator first1, TIterator last1, TIterator first2)

Decsription
Construct from two iterator ranges.

void add(TInput value1, TInput value2)

Description
Add a pair of values.

Member functions

template <typename TIterator>
void add(TIterator first1, TIterator last1, TIterator first2)

Description Add a range of values.

void operator()(TInput value1, TInput value2)

Add a pair of values.


template <typename TIterator>
void operator()(TIterator first1, TIterator last1, TIterator first2)

Description Add a range of values.


double get_covariance() const

Decsription
Returns the calculated covariance for the data.


double get_correlation() const

Description
Returns the calculated correlation for the data.


operator double() const

Description
Returns the calculated correlation for the data.


size_t count() const

Description
Get the total number added entries.


void clear()

Description
Clear the correlation.

Example

std::array<char, 10> input_c
{
  0, 1, 2, 3, 4, 5, 6, 7, 8, 9
};

std::array<char, 10> input_c_inv
{
  0, -1, -2, -3, -4, -5, -6, -7, -8, -9
};

etl::correlation<etl::correlation_type::Population, char, int32_t> correlation(input_c.begin(),     
                                                                               input_c.end(), 
                                                                               input_c_inv.begin());

double correlation_result;
double covariance_result;

correlation_result = correlation;                  // correlation_result == -1.0
covariance_result  = correlation.get_covariance(); // covariance_result  == -8.25