はじめMath! Javaでコンピュータ数学

第56回統計の数学 統計とは

情報を最大限に活用して勝負に勝つ、というと、野球では野村克也監督のデータ野球が有名です。野球ではたくさんの選手がゲームに関係するため、データの処理・活用は大変なことでしょう。野球に限らず、相手のあるスポーツ、勝負事ではデータの活用が大きな力となります。相手の得意技・苦手を知っているのといないのでは、天と地の差があります。古くから「敵を知り、己を知れば百戦危うからず」※1と言われます。試合の前には、せめて最近の相手の勝ち手、負け手ぐらいはチェックしておきたいものです。

さて、勝負事、すなわち実利に深く関わりのある数学が統計の数学です。客観的にデータを調査・理解したいとき、強力なツールとなります。これからしばらくの間、基本的で簡単な統計の数学を学び、Java言語で活用していきましょう。

図56.1 データから戦略を練る
図56.1 データから戦略を練る

統計とは

統計[2]とは、実験や調査で得られたデータ(統計の用語で標本[3]⁠)から、得られたデータ全体の特徴標本特性値[4]⁠)を得ることを目的とします。このような統計の考え方を記述統計[5]といいます。

標本特性値を使って、値の得られていないその他大勢の特徴母集団特性値[6]⁠)を数学的に推定するのが推測統計[7]です。

高校までで学習するのが記述統計だと思えばおよそ良いでしょう。

グラフを描こう

統計の数学で最も基本的で効果的なことは、グラフを描くことです。得られたデータを図にすることで、数字を見ているだけでは見取ることの出来なかった傾向が浮き上がることがあります。

サンプルとなるデータを作ってみましょう。ちょうどよいのでこれを練習問題としましょう。先ずは問題に取り組み、その後ここに戻ってきてグラフ作成に取り組んでください。


さて、プログラムを使ってst_sample001.csvなるデータを作成しましたね。これを表計算ソフトウエアに読み込みます。今回はOpenOfficeのCalcを利用します。

OpenOffice日本語版のサイト
http://ja.openoffice.org/

OpenOfficeのCalcを起動します。ファイルメニューから、作成したst_sample001.csvを読み込みましょう図56.2⁠。

図56.2 CSVファイルを読み込む
図56.2 CSVファイルを読み込む

次に、セルA1をクリックし、選択状態にします。シフトキーと矢印キーを使って、セルB101まで選択状態にしましょう図56.3⁠。

図56.3 グラフに出力したい部分を選択状態にする
図56.3 グラフに出力したい部分を選択状態にする

メニューバーにあるグラフ作成アイコンをクリックします図56.4⁠。

図56.4 グラフ作成アイコンをクリックする
図56.4 グラフ作成アイコンをクリックする

起動したグラフウィザードで散布図を選択します図56.5⁠。

図56.5 グラフウィザードで散布図を選択します
図56.5 グラフウィザードで散布図を選択します

今回はこのまま「完了」ボタンを押しましょう。これでst_sample001.csvの散布図が得られました図56.6⁠。

図56.6 作成された散布図
図56.6 作成された散布図

お手軽ですね。Javaのグラフィック命令を使ってもグラフが描けるのですが、先ずは出来るだけツールを生かすことを考えるべきでしょう。何しろ、私たちがゼロから作るより、はるかに美しい出力が得られるのですから。

問題・解説 ある傾向を持ったランダムなデータを作るプログラムを作りましょう

Java言語で、ある傾向をもつランダムなデータを作りましょう。ある傾向とは、一次関数y=2x+5とし、この関数の右辺に乱数を加えましょう。乱数は±20の範囲で発生させましょう。0≦x≦100の範囲で、xは整数(int⁠⁠、yは倍精度実数型(double)でデータを発生させてください。

ソースコード:Sample GenerateRandomData.java
//サンプルコード
//ある傾向を持ったランダムなデータを作るプログラム
//を作りましょう
//filename : Sample_GenerateRandomData.java

class Sample_GenerateRandomData {

  static final int BARA = 20;

  private static double func(int x) {
    Dice d2 = new Dice(2);
    Dice dBARA = new Dice(BARA);
    int pm = 0;
    if (d2.roll(1) == 1) {pm = -1;} else {pm = 1;}
    double y = 2*x + 5 + pm * dBARA.roll(1);
    return y;
  }

  public static void main(String[] args) {

    for (int i=0 ; i<= 100; ++i){
      System.out.println(i + "," + func(i) );
    }

  }// end of main


}// end of class Sample_GenerateRandomData

次のように実行してデータファイルを作成します。

C:\>java Sample_GenerateRandomData > st_sample001.csv

こうして作成したデータファイルを、今回の記事で使ってみてください。

今回はここまで

今回はOpenOfficeのCalcを利用しました。Excelでも同じように実行できますので、Excelをご利用の方は適宜読みかえてください。世の中には多くの優れたツールがありますから、先ずはそれを利用することを検討し、どうしてもツールの性能では物足りない、あるいは必要な機能がない場合に自分で作るようにしましょう。

おすすめ記事

記事・ニュース一覧