ベクトルの内積による相関係数の算出

CSVから$data[列][行]という2次元配列にいれたデータについて、1列目とその他の列とで相関係数を算出する。

<?php
        $norm = array();
        $innerProduct = array();
        for($col = 0; $col < count($data); $col++){
                $norm[$col] = 0;
                $ave[$col] = average($data[$col]);
                for( $row = 0; $row < count($data[$col]); $row++ ){
                        $data[$col][$row] = $data[$col][$row] - $ave[$col];
                        $norm[$col] += pow($data[$col][$row],2);
                }
                $norm[$col] = sqrt($norm[$col]);
        }
        for($col = 1; $col < count($data); $col++){
                $innerProduct[$col] = 0;
                foreach( $data[$col] as $key => $val ){
                        $innerProduct[$col] += $data["0"][$key]*$val;
                }
                $r[$col] = $innerProduct[$col] / ($norm["0"] * $norm[$col]);
                echo $col + 1 . "列目との相関係数は" . $r[$col] . "\n";
        }
        exit(0);
?>
The following two tabs change content below.
しゃちょー

しゃちょー

有限会社こだまシステム社長。18歳の時からIT業界で働く。趣味はモータースポーツ。マイブームはダイエット。

関連記事

シェルスクリプトで標準入力を一文字ずつ読み込む方法

シェルスクリプトで対話式のツールを作っていると、標準入力を一文字ずつ処理したくなることってありますよね。そんなときはこれを使えばOK!

lessで日本語を表示すると文字化けする

Solaris 9 環境でLANG=ja_JP.PCKにして使用しています。テキストファイルをviなどで編集(作成)すると、SJISで保存されます。lessで表示すると文字化けしてしまう、という問題です。

ウイルスにご注意ください

年末から年始にかけて、コンピュータウイルスGumblar(ガンブラー)の被害が急速に拡大しています。
このウイルスの感染力はかなり強いと感じています。

CentOS7からiptablesがfirewalldに変わったよ

先日どハマリしてしまったCentOS7のポートの解放について、語ります。

クライアントプロセスが使うポート

サーバプロセスはポートを指定してListenしますが、クライアントプロセスはOSから動的に割り当てられます。
Windows的には一時ポートとか動的ポートといいますが、ネットワーク屋さん的にはエフェメラルポートといいます。