WANtaroHP (Py3: Statistics)

説明

重回帰分析

連立方程式の解法の使用事例として,重回帰分析プログラムを作成してみました. 計算のメイン部分は以下の5行です. [xd] は入力データが格納された行列,ベクトル {c} が求める偏回帰係数,{ye} は入力データに偏回帰係数を乗じて求めた回帰推定値,rr が重相関係数です.

a=np.dot(xd.T,xd)
b=np.dot(yd,xd)
c=np.linalg.solve(a,b)
ye=np.dot(xd,c)
rr=np.corrcoef(yd,ye)[0][1]

プログラムの使い方は以下のとおり.

python3 py_sta_MRA.py fnameR fnameW
fnameR入力データファイル名 (csv)
fnameW出力データファイル名 (csv)

主成分分析

固有値解析の使用事例として,主成分分析プログラムを作成してみました. 計算のメイン部分は以下の3行です. [xd] は入力データが格納された行列,[a] は相関行列,{ev} および [vec] が固有値計算により求まる固有値と固有ベクトルです. [xx] は入力データに固有ベクトルを乗じたものであり,スコアになります.

a=np.corrcoef(xd.T)     # correlation matrix
ev,vec=np.linalg.eig(a) # Eigenvalue analysis
xx=np.dot(xd,vec)       # score

プログラムの使い方は以下のとおり.

python3 py_sta_PCA.py fnameR fnameW
fnameR入力データファイル名 (csv)
fnameW出力データファイル名 (csv)

クラスター分析 (k−means++法)

行列・ベクトル演算の練習としてクラスター分析のプログラムを作って見ました. ここでは,クラスタの初期値選定方法を改良した k−means++ 法を用いており,距離計算には Mahalanobis 距離を用いています.計算のメイン部分は主成分分析と同じです. 得られた分類結果は,主成分分析結果で用いたスコア相関図において,分類されたグループ別に色分けして表示しています.

k-means 法の手順

(1)各データにクラスタを割り振る
(2)割り振ったデータでクラスタの中心を計算する
(3)各データとクラスタ中心の距離を計算し,最短距離となるクラスタに各データを割り当て直す
(4)上記を繰り返し,分類が変化しなくなったら計算を終了する

k-means++ 法における初期値の与え方

(1)クラスタ数 k を定め,3個の距離を格納するベクトル {D1},{D2},{DR} を準備する
(2)1個目の中心点 c1 を,乱数を用いて設定する
(3)ベクトル {D1} に大きな数値をダミーとしてセットする
(4)中心点 c1 から全点までの距離を計算し,それらをベクトル {D2} に格納する
(5){D1} と {D2} の要素を比較し,小さい方の値を {DR} に格納する
(6)2個目の中心点を {DR} の中で最大の距離を有する点として設定する
(7){D1} = {DR} とおいて,(3) から (6) までのステップを k 個の中心点を得るまで繰り返す

プログラムの使い方は以下のとおり.

python3 py_sta_KMP.py kk mds itmax fnameR fnameW
kkクラスタ数
mdsクラスタ内最小要素数
itmax最大繰り返し数
fnameR入力データファイル名 (csv)
fnameW出力データファイル名 (csv)


プログラム・入出力データ事例

FilenameDescription
a_py_sta.txtプログラム実行シェルスクリプト
inp_sta_MRA.csv重回帰分析入力データサンプル
inp_sta_PCA.csv主成分分析入力データサンプル
inp_sta_KMP.csvクラスター分析入力データサンプル
out_sta_MRA.csv重回帰分析出力データサンプル
out_sta_PCA.csv主成分分析出力データサンプル
out_sta_KMP.csvクラスター分析出力データサンプル
py_sta_MRA.py重回帰分析プログラム
py_sta_PCA.py主成分分析プログラム
py_sta_KMP.pyクラスター分析プログラム (k-means++法)


出力画像事例

png
fig_sta_MRA1.png
png
fig_sta_MRA2.png
png
fig_sta_PCA.png
png
fig_sta_KMP.png


inserted by FC2 system