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