This topic introduces the MedianCalculator which is part of the Infragistics Math Calculators™ library and explains, with code examples, how to use it to calculate median for a set of numbers.
The topic is organized as follows:
Assembly Requirements
Data Requirements
Median is a mathematical calculation used to determine the “midpoint” of the data set and is not as sensitive to outliers as the mean calculation. In other words, it is less affected by a few very high or very low values in the data set. Half of the values in the set of data fall above the median and half fall below it. Median is one the measures of central tendency where other calculations include Mode and Mean (refer to the Infragistics Mean Calculator topic).
Median is computed by sorting a set of numbers and returning the middle number if there is an odd number of data points in the set. If there is an even number of data points in the set, the median is the average of the two middle data points when they are sorted (either in ascending or descending order).
Figure 1 – Formula for Median Calculation
This section provides a list of properties of the MedianCalculator class.
In order to use the MedianCalculator, the following NuGet package must be added to a WPF project.
Infragistics.WPF.Math.Calculators
For more information on setting up the NuGet feed and adding NuGet packages, you can take a look at the following documentation: NuGet Feeds.
The MedianCalculator uses ItemsSource property for data binding and ValueMemberPath property for data mapping. Any object that meets the following requirements can be bound to this property:
The data model must implement IEnumerable interface (e.g. List, Collection, Queue, Stack)
The data model must contain items that have at least one numeric data column for calculating the Median value.
An example of object that meets above criteria is presented in the following code snippet:
In Visual Basic:
Imports System.Collections.Generic
'...
Public Class DataPointList
Inherits List(Of DataPoint)
Public Sub New(dataValues As IEnumerable(Of Double))
For Each value As Double In dataValues
Me.Add(New DataPoint() With { Key .Value = value })
Next
End Sub
End Class
Public Class DataPoint
Public Property Value() As Double
Get
Return _value
End Get
Set
_value = Value
End Set
End Property
Private _value As Double
End Class
In C#:
using System.Collections.Generic;
//...
public class DataPointList : List<DataPoint>
{
public DataPointList(IEnumerable<double> dataValues)
{
foreach (double value in dataValues)
{
this.Add(new DataPoint { Value = value});
}
}
}
public class DataPoint
{
public double Value { get; set; }
}
This example demonstrates how to calculate Median value for a set of numbers using the MedianCalculator. The MedianCalculator is a non-visual element and it should be defined in resources section on application, page, control level, or in code-behind, the same way as you would define a data source or a variable. Refer also to the Value Overlay topic for examples on how to integrate the MedianCalculator with the xamDataChart™ control.
In Visual Basic:
Imports Infragistics.Math.Calculators
'...
Dim data As New DataPointList(New List(Of Double)() From { 5.0, 1.0, 2.0, 3.0, 4.0 })
Dim calculator As New MedianCalculator()
calculator.ValueMemberPath = "Value"
calculator.ItemsSource = data
Dim median As Double = calculator.Value ' median equals 3
In C#:
using Infragistics.Math.Calculators;
//...
DataPointList data = new DataPointList(new List<double> { 5.0, 1.0, 2.0, 3.0, 4.0 });
MedianCalculator calculator = new MedianCalculator();
calculator.ValueMemberPath = "Value";
calculator.ItemsSource = data;
double median = calculator.Value; // median equals 3