« プログラミング講座(110) 回路の判定 | トップページ | プログラミング(112) 階乗 »

2013/03/03

プログラミング講座(111) CSVコンバーター

久しぶりに囲碁の話に戻ります。
9路盤の棋譜を8175局作ったところまでお話しました。この棋譜を Excel で統計処理するために、CSV(コンマで区切られた値)形式に変換するプログラムを作成しました。プログラムID RGR694 で発行しました。
図108 CSVコンバーター
【図108 CSVコンバーター】

作成したCSVファイル (simulated.csv) を Excel で読み込んだのが以下の図です。
図109 Excel に読み込んだ CSV
【図109 Excel に読み込んだ CSV】

ここから先は Excel の話になります。
Excel のバージョンは 2007 を使っています。読み込んだデータを、このバージョンからの新機能「テーブル」に変換しました。[挿入][テーブル]で変換できます。テーブルに Score (スコア=点数)という欄を追加しました。CSVデータには Result (結果)という欄があり、黒1目勝ちなら B+1、白1目勝ちなら W+1 となっていますが、これを黒1目勝ちなら 1、白1目勝ちなら -1 に変換します。

ここまでデータの準備をして、今度は Excel のグラフ機能で Score 毎の度数分布図を作ってみました。まず、グラフのデータを集計します。Score の範囲を区切って棋譜の数を集計しました。例えば下図の-90< Score <=-80 つまり白89目勝ちから白80目勝ちまでの範囲の棋譜が 36 局ありました。
図110 データの集計
【図110 データの集計】

この集計には COUNTIFS 関数を使いました。複数の条件でデータの件数を集計できる関数でとても便利です。
ちなみにさきほどの例でセルC4には =COUNTIFS(テーブル1[Score],$A4,テーブル1[Score],$B4) という式を入れてあります。テーブルの参照は範囲を指定せずに欄の名前が使えます。

この集計をグラフにしたのが下図です。まずは全局の度数分布図です。横軸が Score で縦軸が度数(局数)です。Score ±80 付近は相手の石をすべて取って勝った対局のもので、それなりの局数があることがわかります。
図111 全局の度数分布図
【図111 全局の度数分布図】

また、最も黒の勝率が高かった、初手が天元の横(並び)の対局の度数分布が以下のようになりました。全局の分布より少し右にずれているはずです。
図112 初手天元並びの度数分布図
【図112 初手天元並びの度数分布図】

この勝率のずれが、偶然によるものか、そうでないかを統計の手法で今後検証していきたいと思います。

|

« プログラミング講座(110) 回路の判定 | トップページ | プログラミング(112) 階乗 »

囲碁」カテゴリの記事

Small Basic」カテゴリの記事

Excel」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: プログラミング講座(111) CSVコンバーター:

« プログラミング講座(110) 回路の判定 | トップページ | プログラミング(112) 階乗 »