このトピックでは Infragistics Math Calculators™ ライブラリの一部である MedianCalculator を紹介し、コード例と共に数の集合に対する中央値の計算方法を説明します。
中央値は、データセットの「中点」を決めるのに使われる数学的計算で、平均計算ほど外れ値に影響を受けません。つまり、データセットのいくつかの非常に高い値または非常に低い値にあまり影響されません。データ集合の値の半分は、中央値よりも上に分類され、半分は下に分類されます。中央値は代表値の測定のひとつで、他の計算としてはモードと平均があります (インフラジスティックスの平均計算トピックを参照)。
中央値は数値の集合を並べ替え、集合のデータ ポイント数が奇数であれば真ん中の値を返します。集合に偶数のデータ ポイントがある場合、中央値は並べ替えた (昇順または降順で) 時に 2 つの中間データ ポイントの平均です。
図 1 - 中央値計算のための式
このセクションでは MedianCalculator クラスのプロパティのリストを提供します。
MedianCalculator を使用するためには、次の NuGet パッケージ参照を WPF プロジェクトに追加する必要があります。
Infragistics.WPF.Math.Calculators
NuGet フィードのセットアップと NuGet パッケージの追加の詳細については、NuGet フィード ドキュメントを参照してください。
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