パッケージ org.opengion.penguin.math.statistics

## クラス HybsMahalanobis

- java.lang.Object
- - org.opengion.penguin.math.statistics.HybsMahalanobis

-     public class HybsMahalanobis
      extends Object

  apache.commons.mathを利用した、マハラノビス距離関係の処理クラスです。 相関を考慮した距離が求まります。 教師無し学習的に、異常値検知に利用可能です。 閾値は95%区間の2.448がデフォルトです。(3なら99%) 「Juan Francisco Quesada-Brizuela」氏の距離計算PGを参照しています。 学術的には様々な改良が提案されていますが、このクラスでは単純なマハラノビス距離を扱います。

- - ### コンストラクタの概要

    コンストラクタ
    コンストラクタ | 説明
    --- | ---
    `HybsMahalanobis​(double[][] matrix)` | 距離計算がtrueの形の簡易版コンストラクタです。
    `HybsMahalanobis​(double[][] matrix, boolean calc)` | コンストラクタ。
    `HybsMahalanobis​(double[][] covarianceData, double[] averageData)` | コンストラクタ。

  - ### メソッドの概要

    すべてのメソッド staticメソッド インスタンス・メソッド concreteメソッド
    修飾子とタイプ | メソッド | 説明
    --- | --- | ---
    `boolean` | `check​(double[] vec)` | 与えたベクトルが閾値を超えたマハラノビス距離かどうかを判定します。
    `double` | `distance​(double[] vec)` | マハラノビス距離を計算します。
    `double[]` | `getAverage()` | 平均配列を返します。
    `double[][]` | `getCovariance()` | 共分散配列を返します。
    `double[]` | `getDataDistance()` | コンストラクタで元データを与え、計算させた場合のマハラノビス距離の配列を返します。
    `double` | `getLimen()` | 閾値を返します。
    `static void` | `main​(String[] args)` | ここからテスト用mainメソッド。
    `void` | `setAverage​(double[] ave)` | 平均配列をセットします。
    `void` | `setCovariance​(double[][] cvr)` | 共分散配列をセットします。
    `void` | `setLimen​(double lim)` | 閾値をセットします。

    - ### クラスから継承されたメソッド java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### コンストラクタの詳細

    - #### HybsMahalanobis

          public HybsMahalanobis​(double[][] matrix,
                                 boolean calc)

      コンストラクタ。 与えたデータマトリクスを元にマハラノビス距離を求めるための準備をします。 (平均と共分散を求めます） 引数calcにtrueをセットすると各点のマハラノビス距離を計算します。 データ = { { 90 ,60 }, { 70, 80 } } のような形としてデータを与えます。
      パラメータ:
        `matrix` - 値のデータ
        `calc` - 距離計算を行うかどうか

    - #### HybsMahalanobis

          public HybsMahalanobis​(double[][] matrix)

      距離計算がtrueの形の簡易版コンストラクタです。
      パラメータ:
        `matrix` - 値データ

    - #### HybsMahalanobis

          public HybsMahalanobis​(double[][] covarianceData,
                                 double[] averageData)

      コンストラクタ。 計算済みの共分散と平均、閾値を与えるパターン。
      パラメータ:
        `covarianceData` - 共分散
        `averageData` - 平均配列

  - ### メソッドの詳細

    - #### getAverage

          public double[] getAverage()

      平均配列を返します。
      戻り値:
        平均

    - #### getCovariance

          public double[][] getCovariance()

      共分散配列を返します。
      戻り値:
        共分散

    - #### getLimen

          public double getLimen()

      閾値を返します。
      戻り値:
        閾値

    - #### setAverage

          public void setAverage​(double[] ave)

      平均配列をセットします。
      パラメータ:
        `ave` - 平均

    - #### setCovariance

          public void setCovariance​(double[][] cvr)

      共分散配列をセットします。
      パラメータ:
        `cvr` - 共分散

    - #### setLimen

          public void setLimen​(double lim)

      閾値をセットします。 距離の二乗がカイ2乗分布となるため、 初期値は2.448で、95%区間を意味します。 2が86%、3が99％です。
      パラメータ:
        `lim` - 閾値

    - #### getDataDistance

          public double[] getDataDistance()

      コンストラクタで元データを与え、計算させた場合のマハラノビス距離の配列を返します。
      戻り値:
        各点のマハラノビス距離の配列

    - #### distance

          public double distance​(double[] vec)

      マハラノビス距離を計算します。
      パラメータ:
        `vec` - 判定する点（ベクトル）
      戻り値:
        マハラノビス距離

    - #### check

          public boolean check​(double[] vec)

      与えたベクトルが閾値を超えたマハラノビス距離かどうかを判定します。 閾値以下ならtrue、超えている場合はfalseを返します。 （異常値判定）
      パラメータ:
        `vec` - 判定する点（ベクトル）
      戻り値:
        閾値以下かどうか

    - #### main

          public static void main​(String[] args)

      ここからテスト用mainメソッド。
      パラメータ:
        `args` - ****************************************