|
|
|
@ -104,6 +104,36 @@ namespace MathNet.Numerics.UnitTests.StatisticsTests |
|
|
|
AssertHelpers.AlmostEqual(corr, corr2, 14); |
|
|
|
} |
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// Correlation between two identical data sets should always equal one,
|
|
|
|
/// regardless of the weights used.
|
|
|
|
/// </summary>
|
|
|
|
[Test] |
|
|
|
public void WeightedPearsonCorrelationEqualsOneTest() |
|
|
|
{ |
|
|
|
int n = 5; |
|
|
|
double maxWeight = 1e5; |
|
|
|
var dataA = Generate.LinearRange(1, n); |
|
|
|
var dataB = Generate.LinearRange(1, n); |
|
|
|
var weights1 = Generate.LinearRange(1, n); |
|
|
|
var weights2 = Generate.LogSpaced(n, 1, 5); |
|
|
|
var weights3 = Generate.LogSpaced(n, 5, 1); |
|
|
|
var weights4 = Generate.Repeat(n, maxWeight); |
|
|
|
var weights5 = Generate.Repeat(n, 1/maxWeight); |
|
|
|
|
|
|
|
var corr1 = Correlation.WeightedPearson(dataA, dataB, weights1); |
|
|
|
var corr2 = Correlation.WeightedPearson(dataA, dataB, weights2); |
|
|
|
var corr3 = Correlation.WeightedPearson(dataA, dataB, weights3); |
|
|
|
var corr4 = Correlation.WeightedPearson(dataA, dataB, weights4); |
|
|
|
var corr5 = Correlation.WeightedPearson(dataA, dataB, weights5); |
|
|
|
|
|
|
|
AssertHelpers.AlmostEqual(corr1, 1, 14); |
|
|
|
AssertHelpers.AlmostEqual(corr2, 1, 14); |
|
|
|
AssertHelpers.AlmostEqual(corr3, 1, 14); |
|
|
|
AssertHelpers.AlmostEqual(corr4, 1, 14); |
|
|
|
AssertHelpers.AlmostEqual(corr5, 1, 14); |
|
|
|
} |
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// Pearson correlation test fail.
|
|
|
|
/// </summary>
|
|
|
|
|