Mol(Math Object Library) fot .Net

The Stat type exposes the following members.

コンストラクター

  名前説明
Public methodStat
データ行列 M を処理する Stat オブジェクトを作成します。作成後の M は DataMatrix プロパティでアクセス可能です。 平均値ベクトルはこの時点で作成されますので改めて設定する必要はありません。 平均値等の統計量はデータ行列の各列ごとに作成されます。 例えば j 番目の平均値 μj = (ΣiM[i,j])/N となります(全ての重みを 1 とします)。

メソッド

  名前説明
Public methodComputePartialCovarianceCorrelationMatrix
部分分散行列と部分相関行列を計算します(本計算を実行する前に分散共分散行列(CovarianceMatrix)が計算されている必要があります)。 部分分散行列と部分相関行列の定義はリファレンスの「数式表記」の項を参照して下さい。
Public methodComputePooledGroupEstimates
整数ベクトル divider で指定されたグループ毎に平均(group_means)と分散共分散行列(group_cov)を計算します。 グループの計算は各グループ毎に(行サイズの小さい) DataMatrix(と Weight) が作成されて計算が 定義通りに実行されることと同じです。
さらにそれらをまとめて配分(Pool)した平均(pooled_mean)と分散共分散行列(pooled_cov)を計算します。 配分(Pool)は各グループの平均や分散共分散行列の各要素を、各グループの重み(グループに属する要素の重みの合計) を用いた加重平均として計算されます。
Public methodComputeProperties()()()()
指定された統計量計算を実行します。 ComputeProperties()メソッドは一度でデータ行列(DataMatrix)に入りきらないデータでも、データ行列の内容を 書き換え(またはデータ行列を置き換え)て繰り返し呼ぶことで必要な(プロパティに設定した)統計量を計算できます。
※本メソッドは最初の実行時にのみ使用できます(ComputeProperties(0) と同じです)。
Public methodComputeProperties(Int32)
指定された統計量計算を実行します。 ComputeProperties()メソッドは一度でデータ行列(DataMatrix)に入りきらないデータでも、データ行列の内容を 書き換え(またはデータ行列を置き換え)て繰り返し呼ぶことで必要な(プロパティに設定した)統計量を計算できます。
Public methodComputeQuantileMatrix
分位率(0<分位率<1)を格納したベクトル(QuantileOrder)に対応した分位値を格納した行列(QuantileMatrix)を計算します。
分位率とは DataMatrix の各列データを昇順に並べて、最小値の位置を 0 、最大値の位置を 1 に対応させた場合の値(0<分位率<1)です。 個々の分位率の位置にあたるデータの値を分位値といいます。
※中央値(メディアン:Median)は分位率 0.5 の時の分位値になります。
※DataMatrix の行数を n として、値((n-1)・分位率)の整数部を j、小数部を f とすると 分位値=y[j+1]+f・(y[j+2]-y[j+1]) で計算されます。
Public methodComputeRobustStat
ノイズ等の疑わしいデータ(外れ値DetectOutliers(VectorDenseDouble, Stat..::..BACON_INITILIZER, Double, Double))を含むデータ行列の平均値(Mean)と 分散共分散行列(CovarianceMatrix)を推定(ロバスト推定)します。 分散共分散行列プロパティが設定されていない場合、自動作成されます。
計算は、Maronna と TBS という 2 つのアルゴリズムから成ります。最初の Maronna は 2 つ目 TBS アルゴリズムの開始データ (共分散と平均) を計算します。 次に TBS アルゴリズムは、要求した精度(ACCURACY)が得られるか、最大反復回数(ITER_NUM)に達するまで反復します。 その他、最大降伏点 (BD_POINT:アルゴリズムで許容可能な外れ値の割合) と ARP (棄却率) を指定します。 TBS アルゴリズムを使用しない場案は反復数を 0 に設定します。
Public methodDetectOutliers
データ行列中の外れ値(outlier) を検出して、結果を引数 w に格納します。
外れ値は一群のデータの中からノイズのような疑わしいデータレコード(行)です。 データレコードが推定される分布(正規分布)に従っていないように見える場合、それらは外れ値とみなされます。
alphaにゼロまたは負の値を指定すると 0.05、deltaにゼロまたは負の値を指定すると0.005が仮定されます。
Public methodDispose
使用したメモリー資源などを解放します。
(Overrides _Mol..::..Dispose()()()().)
Public methodStatic memberIsMissingValue
double の値は欠測値(==非数値:NaN)かどうか判定します。 欠測値は非数値(NaN)ですので操作には注意が必要です。NaNを含む計算は全て NaN になります。 また自分(NaN)自身と比較しても一致しません(NaN==NaN の比較は false になります)。 従って、数値が NaN であるかどうかの判定は == や != を使用できません。代わりに Double.IsNaN() や 本メソッドを使用して判定します。
Public methodParameterizeCorrelationMatrix
元になる相関行列(プロパティ)とできる限り同じ内容で、かつ負の固有値を持たない新しい相関行列(半正定値)を計算します。
予め相関行列(プロパティ)を計算しておく必要があります。
Public methodReplaceMissingValues
データ行列中の欠測値(MissingValueプロパティで指定された値(==Double.NaN))を周囲の有効値から類推して(意味のある値に)置き換えます。 欠測データには指定された値(=Mol.MissingValue)をセットする必要があります。また欠測値は非数値(Double.NaN)ですので数値的な比較 (自分自身と比較しても等しくはなりません)は無意味です。欠測値かどうかの判定は IsMissingValue(Double) メソッドを使用してください。
欠測値を正しい(とある程度思われる)値に置き換えるには期待値最大化 (EM) とデータ拡大 (DA) の2つのアルゴリズムを用います。 この場合、まず m 個の正しそうな推定値を計算します(EM アルゴリズム)。 そしてそれぞれの推定値を用いて他の統計的推定値を計算し、m 個の推定値をまとめて最終的な推定値を計算します(DA アルゴリズム)。
EM アルゴリズムは EM_ITER_NUM 回反復して(またはEM_ACCURACYの精度が達成されると)、平均および共分散の推定値を計算します。 MeanCovarianceMatrixプロパティに初期値をセットすることができます。 CovarianceMatrixプロパティが null または全要素がゼロの場合、初期値に利用されません。 EM アルゴリズムが終了すると、DA アルゴリズムは DA_ITER_NUM 回反復して最終的な推定値を計算して DataMatrix 中の欠測値を置き換えます。

フィールド

  名前説明
Public fieldTag
ユーザが自由に設定・使用できるオブジェクトです。 Mol が内部で参照することはありません。
(Inherited from _Mol.)

プロパティ

  名前説明
Public propertyComputed
計算したい各種プロパティ(基本統計量)を指定します(複数ある場合は | で組み合わせます)
Public propertyCorrelationMatrix
相関行列を格納する実対称行列(デフォルトはnull)です。 計算する必要が無い場合は null を設定します。
Public propertyCovarianceMatrix
分散共分散行列を格納する実対称行列(デフォルトはnull)です。 計算する必要が無い場合は null を設定します。
Public propertyDataMatrix
データ行列。統計対象データの入れ物です。データ量が大きいときは順にデータを満たしながら複数回に分けて処理を実行(分割処理)できます。 複数回に分けて処理を実行する場合はデータ行列の各要素を書き換えるか、新しいデータ行列を作成して DataMatrix に設定します。 各行がレコードですので新しいデータ行列を作成する場合、行数は変更可能ですが列数を変更することはできません。
※重み(Weight)を定義している場合は、重みの変更も必要です。
Public propertyKurtosis
各列の尖度を格納するベクトル(デフォルトはnull)です。 尖度の計算には2次、3次、4次の積率が必要(ベクトルが設定されていなければ自動作成されます)です。 計算する必要が無い場合は null を設定します。
Public propertyMax
データの最大値を保持するベクトル(デフォルトは null)です。 計算する必要が無い場合は null を設定します。
Public propertyMean
Compute()メソッド終了時には(各列に対応する)平均値が格納されます。 平均値は必ず計算されるので、本ベクトルを置き換えることはできません。
Public propertyMin
データの最小値を保持するベクトル(デフォルトは null)です。 計算する必要が無い場合は null を設定します。
Public propertyStatic memberMissingValue
Statで使用する欠測値(==Double.NaN)です。DataMatrix 中の欠測値は ReplaceMissingValues(Int32, Double, Int32, Int32) によって意味のある値に置き換えることができます。
欠測値は非数値(NaN)ですので操作には注意が必要です。NaNを含む計算は全て NaN になります。 また自分(NaN)自身と比較しても一致しません(NaN==NaN の比較は false になります)。 従って、数値が NaN であるかどうかの判定は == や != を使用できません。代わりに Double.IsNaN() や IsMissingValue(Double)を使用して判定します。
Public propertyMolHandle
Mol.C++.dll(ネイティブDLL)と Mol.Net.Dll(.Net 用マネージドDLL)間の情報を管理するハンドル。 NativeDll クラスでユーザ作成のネイティブDLLを作成する場合等に利用できます。
(Inherited from _Mol.)
Public propertyMolType
Molオブジェクトの属性(_Mol..::..MOL_TYPE)。
(Inherited from _Mol.)
Public propertyMoment2
2次の(代数)積率を格納するベクトル(デフォルトはnull)です。 計算する必要が無い場合は null を設定します。
Public propertyMoment3
3次の(代数)積率を格納するベクトル(デフォルトはnull)です。 計算する必要が無い場合は null を設定します。
Public propertyMoment3C
3次の中心積率を格納するベクトル(デフォルトはnull)です。 計算には2次と3次の積率が必要(ベクトルが設定されていなければ自動作成されます)です。 計算する必要が無い場合は null を設定します。
Public propertyMoment4
4次の(代数)積率を格納するベクトル(デフォルトはnull)です。 計算する必要が無い場合は null を設定します。
Public propertyMoment4C
4次の中心積率を格納するベクトル(デフォルトはnull)です。 計算には2次、3次、4次の積率が必要(ベクトルが設定されていなければ自動作成されます)です。 計算する必要が無い場合は null を設定します。
Public propertyQuantileMatrix
分位率(0<分位率<1)ベクトル(QuantileOrder)の各要素に対応した分位値を保持する行列です。 分位率とは DataMatrix の各列データを昇順に並べて、最小値の位置を 0 、最大値の位置を 1 に対応させた場合の値(0<分位率<1)です。 個々の分位率の位置にあたるデータの値を分位値といいます。 分位値は、分位率が与えられている場合にのみ計算されます。分位率が与えられていれば、設定されていなくても ComputeProperties()()()() メソッド実行時に作成されます。 本行列(QuantileMatrix)を定義する前に分位率ベクトルが定義されている必要があります。
※分位値行列の各行が分位率ベクトルの各要素の値に対応します。分位値行列の各列は DataMatrix 行列の各列に対応します。
※中央値(メディアン:Median)は分位率 0.5 の時の分位値になります。
※DataMatrix の行数を n として、値((n-1)・分位率)の整数部を j、小数部を f とすると 分位値=y[j+1]+f・(y[j+2]-y[j+1]) で計算されます。
Public propertyQuantileOrder
分位率(0<分位率<1)を格納したベクトルです。 分位率とは DataMatrix の各列データを昇順に並べて、最小値の位置を 0 、最大値の位置を 1 に対応させた場合の値(0<分位率<1)です。 個々の分位率の位置にあたるデータの値を分位値といいます。分位値は、分位率が与えられている場合に、QuantileMatrix に格納されます。 ※中央値(メディアン:Median)は分位率 0.5 の時の分位値になります。
※DataMatrix の行数を n として、値((n-1)・分位率)の整数部を j、小数部を f とすると 分位値=y[j+1]+f・(y[j+2]-y[j+1]) で計算されます。
Public propertySkewness
各列の歪度を格納するベクトル(デフォルトはnull)です。 歪度の計算には2次と3次の積率が必要(ベクトルが設定されていなければ自動作成されます)です。 計算する必要が無い場合は null を設定します。
Public propertySum
データの和を保持するベクトル(デフォルトは null)です。 計算する必要が無い場合は null を設定します。
Public propertyUserType
Molオブジェクトの追加属性(_Mol..::..USER_TYPE)。 例えば一般行列でも要素が対称なら、その属性を積極的にセットすることでソルバーは最適な手法を選択することができます。 当然ながら、間違った設定は間違った値や計算不能な状態に陥りますので注意して設定してください。
(Inherited from _Mol.)
Public propertyVariance
分散(不偏分散)を格納するベクトル(デフォルトはnull)です。 分散の計算には2次の積率が必要(ベクトルが設定されていなければ自動作成されます)です。 計算する必要が無い場合は null を設定します。
※不偏分散は、全ての重みが1の場合、自由度 N-1 になります(Nはサンプルデータレコードの数)。2次の中心積率(自由度 N)とは一致しません。
Public propertyVariation
各列の変動係数を格納するベクトル(デフォルトはnull)です。 変動係数の計算には2次の積率が必要(ベクトルが設定されていなければ自動作成されます)です。 計算する必要が無い場合は null を設定します。
Public propertyWeight
各標本データの重みです(デフォルトは null で重みは 1.0 が仮定されます)です。 設定する場合、ベクトルのサイズは DataMatrix の行数に一致する必要があります。
※ null を設定することはできません。

参照