このトピックでは Infragistics Math Calculators ライブラリの一部である MedianCalculator を紹介し、コード例と共に数の集合に対する中央値の計算方法を説明します。
中央値は、データセットの「中点」を決めるのに使われる数学的計算で、平均計算ほど外れ値に影響を受けません。つまり、データセットのいくつかの非常に高い値または非常に低い値にあまり影響されません。データ集合の値の半分は、中央値よりも上に分類され、半分は下に分類されます。中央値は代表値の測定のひとつで、他の計算としてはモードと平均があります (インフラジスティックスの平均計算トピックを参照) 。
中央値は数値の集合を並べ替え、集合のデータ ポイント数が奇数であれば真ん中の値を返します。集合に偶数のデータ ポイントがある場合、中央値は並べ替えた (昇順または降順で) 時に 2 つの中間データ ポイントの平均です。
図 1 - 中央値計算のための式
このセクションでは MedianCalculator クラスのプロパティのリストを提供します。
MedianCalculator を使用するためには、次のアセンブリを WPF プロジェクトに追加する必要があります。
MedianCalculator はデータ バインディングのための ItemsSource プロパティとデータ マッピングのための ValueMemberPath プロパティを使用します。次の要件に合致するオブジェクトはすべてこのプロパティにバインドできます。
データ モデルは IEnumerable インターフェイス (たとえば リスト、 コレクション、 キュー、 スタック) を実装しなければなりません。
データ モデルには中央値を計算するために少なくとも 1 つの数値データ列をもつ項目がなければなりません。
上記の条件を満たすオブジェクトの例が次のコード例に示されています。
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
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; }
}
この例は MedianCalculator を用いて数値の集合の中央値を計算する方法を説明しています。MedianCalculator は視覚的な要素で、データ ソースまたは変数を定義するのと同じようにアプリケーション、ページ、コントロール、またはコードビハインドに関してリソースセクションに定義する必要があります。MedianCalculator を xamDataChart コントロールに統合する方法についての例は 値オーバーレイ トピックを参照してください。
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 ' 中央値は 3
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; // 中央値は 3