パッケージ 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)`
  コンストラクタ。

- ## メソッドの概要

  修飾子とタイプ
  メソッド
  説明
  `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` - ****************************************