/// <summary> /// Recalculates frequency statistics /// </summary> /// <param name="tasks">The tasks.</param> public override void reCalculate(preCalculateTasks tasks = preCalculateTasks.all) { if (blockReCall) { return; } blockReCall = true; Accept(); _sumOfValues = 0; _maxValue = int.MinValue; _minValue = int.MaxValue; foreach (var pair in items) { _sumOfValues = _sumOfValues + pair.Key; _maxValue = Math.Max(_maxValue, pair.Key); _minValue = Math.Min(_minValue, pair.Key); } base.reCalculate(tasks); _avgValue = (((double)_sumOfValues) / ((double)Count)); var valArray = items.Keys.getDoubleValues().ToArray(); // entropyFreq = Accord.Statistics.Measures.Entropy(valArray); varianceFreq = valArray.GetVariance(); // Accord.Statistics.Measures.Variance(valArray, false); standardDeviation = valArray.GetStdDeviation(); //Accord.Statistics.Measures.StandardDeviation(valArray, _avgValue, true); Accept(); blockReCall = false; }
/// <summary> /// Recalculates frequency statistics /// </summary> /// <param name="tasks">The tasks.</param> public virtual void reCalculate(preCalculateTasks tasks = preCalculateTasks.all) { if (blockReCall) { return; } blockReCall = true; double count = Convert.ToDouble(Count); doMinMaxSum(); Accept(); //List<T> rank = getSorted(); double _sumScore = Convert.ToDouble(totalScore); var valArray = items.Values.getDoubleValues().ToArray(); //if (tasks.HasFlag(preCalculateTasks.avgDiversity)) //{ avgFreq = _sumScore / count; _diversityAntiValue = _sumScore / (avgFreq * avgFreq); _diversityAntiRatio = (avgFreq * avgFreq) / _sumScore; _diversityRatio = 1 - _diversityAntiRatio; //} //if (tasks.HasFlag(preCalculateTasks.entropyCoVarDev)) //{ // //Measures.Entropy() var RFreqArray = GetRFreqArray(); entropyFreq = RFreqArray.GetEntropy(); varianceFreq = RFreqArray.GetVariance(false); //Accord.Statistics.Measures.Variance(valArray, true); standardDeviation = Math.Sqrt(varianceFreq); //RFreqArray.GetStdDeviation(false); // Accord.Statistics.Measures.StandardDeviation(valArray, avgFreq, true); //} Accept(); blockReCall = false; }