[ DATT-A9D > データで遊ぶ ]

ゲームで追体験する鉄道工学と鉄道史:フリーの統計解析環境「R」を使用して「データを対象とした実験」に取り組ませ、「理数探究」につなげます。(最終更新:2020年5月17日)


統計数理研究所のミラーサイトから「R」を入手しよう

データで遊ぶ

※このページの一部は横長です。横にもスクロールしてご覧ください。

Experiment

*プロフェッショナルなツールで実現されていて新規性はないが、統計解析環境「R」や自作のプログラムで追体験しよう

ゲームのプログラムから離れて
実験環境を用意しよう

「R」を対話的に使おう
「R」と同じ計算をするプログラムを書いてみよう

地形の特徴・地形の複雑度


片栗粉R


府中のメソッド

▲この実験より前に(人手で)
 ゲーム内で引いた路線網
「平地」を抽出
TSVファイル
「平地」を分割
(k-means法)
▲k=3(21+1) ▲k=5(22+1)
▲k=9(23+1) ▲k=17(24+1)
「k=17」を使う
ことにする

クラスター3個を除外
「最近隣法」
「ウォード法」
「最小全域木」
を見比べる
▲最近隣法
(single)
▲ウォード法
(ward.D2)
▲最小全域木
(spantree)
▲この実験より前に(人手で)
 このマップにつけた町名
(との対応を見比べる)

ベクトル円海山

▲このマップを入力とする かくかくしてしかじかした結果
▲Rでボロノイ図が描ける ▲マップの画像と重ねてみる
ごにょごにょして描いた等高線 ▲すべて重ねてみる

新浦安オンザアイス

▼最終的にこのような図を描きたい

※以下の手順は続けて行ないます。途中で「R」を閉じてしまうと、最初からやり直しになります。やむを得ず中断するときは「作業スペース(現在の状態)を保存」しますが、これを常用してはなりません。あらかじめ考えておいた手順を一続きで実行するのが基本です。
※クラスタリングは乱数を使うアルゴリズムです。実行のたびに結果が異なることを理解しましょう。クラスターの番号は同じにはならず、このためプロットの色分けも実行のたびに変わります。

「ベクトル円海山」する

  1. 海と山の点を主成分分析(回転)
  2. クラスタリング(k=17)して重心を得る
  3. 重心を使って平地の微地形を復元
  4. 等高線を描く

ボロノイ図を描く

  • 「ベクトル円海山」で得た重心(17個)に
    4隅の点を加えた21個の点を母点とする
  • GIMP」などのグラフィックソフトを用意して、
    レイヤー機能を使って重ねてみよう(「乗算」67%)
    • 赤枠のところでトリミングして、
      マップの画像と同じサイズにリサイズします
    • 「R」のプロットは縦横比がおかしい場合もあるので、
      縦横比を無視してリサイズしましょう
    • 拡大するとぼやけますが…気にしな~い!
      そもそもおおざっぱな計算なので厳密さを求めないこと

  • ここで描いたボロノイ図は、
    海と山も含め、マップ全体を指定した数の領域に分割したもの
  • 与えた母点の散らばり一様でないので、
    変化に富んだ形状の領域が形成される
  • ここで引かれた線をボロノイ境界という。
    線の交点をボロノイ点という
  • ボロノイ点に分岐駅や立体交差駅を置けるか考えてみよう

「府中のメソッド」する

  1. 平地の点をクラスタリング(k=17)する
  2. 得られた重心を番号付きでプロットする
  • 平地のみを、
    重心が互いによく離れるように、
    指定した数の領域に分割したもの
  • 「駅間距離」を1つの路線だけで
    (1次元で:直線上で)考えるのでなく、
    マップ全体で(2次元で:平面上で)
    どの駅も互いにじゅうぶんな距離を空けたい
  • 等高線・ボロノイ図とは異なる分割をするので、
    さらに補間するヒントになるだろう

単回帰分析

Excelでの実行例


References


Descriptions and More

  • このページのもとになった記事(※ただし口語で長文です)がフォーラムで読めますので、詳しいことが知りたいときは参照してください。

  • All Rights Reserved. ©2018-2020, tht.