Corrcoef.java
/*
* $Id: Corrcoef.java,v 1.11 2008/04/13 23:43:23 koga Exp $
*
* Copyright (C) 2004 Koga Laboratory. All rights reserved.
*/
package org.mklab.tool.matrix;
import org.mklab.nfc.matrix.DoubleMatrix;
import org.mklab.nfc.scalar.DoubleNumber;
/**
* 相関係数を求めるクラスです。
*
* <p> Correlation coefficients
*
* @author koga
* @version $Revision: 1.11 $
* @see org.mklab.tool.matrix.Cov
*/
public class Corrcoef {
/**
* 全ての成分の相関係数を返します。
*
* @param x 行列
* @return 全ての成分の相関係数
*/
public static DoubleNumber corrcoef(DoubleMatrix x) {
return corrcoefColumnWise(x.reshape(1, x.getRowSize() * x.getColumnSize())).getElement(1, 1);
}
/**
* [x y]の全ての成分の相関係数を返します。
*
* @param x データ1
* @param y データ2
* @return 全ての成分の相関係数
*/
public static DoubleNumber corrcoef(DoubleMatrix x, DoubleMatrix y) {
DoubleMatrix z = Makecolv.makecolv(x).appendRight(Makecolv.makecolv(y));
return corrcoefColumnWise(z.reshape(1, z.getRowSize() * z.getColumnSize())).getElement(1, 1);
}
/**
* 行列<code>x</code>(列毎に各変数のデータ並ぶ)の成分の相関係数を返します。
*
* @param x データ
* @return 自己相関係数 (correlation coefficients)
*/
public static DoubleMatrix corrcoefColumnWise(DoubleMatrix x) {
DoubleMatrix cv = Cov.covColumnWise(x);
DoubleMatrix dv = cv.diagonalToVector();
DoubleMatrix cc = cv.divideElementWise(dv.multiply(dv.conjugateTranspose()).sqrtElementWise());
return cc;
}
/**
* <code>corrcoef_col([x y])</code>と同じです。
*
* @param x データ1
* @param y データ2
* @return 相互相関係数 (correlation coefficients)
*/
public static DoubleMatrix corrcoefColumnWise(DoubleMatrix x, DoubleMatrix y) {
DoubleMatrix cv = Cov.covColumnWise(x, y);
DoubleMatrix dv = cv.diagonalToVector();
DoubleMatrix cc = cv.divideElementWise(dv.multiply(dv.conjugateTranspose()).sqrtElementWise());
return cc;
}
/**
* 行列<code>x</code>(行毎に各変数のデータ並ぶ)の成分の相関係数を返します。
*
* @param x データ
* @return 自己相関係数 (correlation coefficients)
*/
public static DoubleMatrix corrcoefRowWise(DoubleMatrix x) {
return corrcoefColumnWise(x.transpose()).transpose();
}
/**
* <code>corrcoef_row([x y])</code>と同じです。
*
* @param x データ1
* @param y データ2
* @return 相互相関係数 (correlation coefficients)
*/
public static DoubleMatrix corrcoefRowWise(DoubleMatrix x, DoubleMatrix y) {
return corrcoefColumnWise(x.transpose(), y.transpose()).transpose();
}
}