ランダムウォークの学習

青山学院大学社会情報学部での1年生必修科目, 社会情報体験演習 での,ランダムウォークの実習の手順を示したウェブページです.

この実習の目的はランダム系列の性質(ふるまい)を理解することです. 世の中にはランダムな現象があふれています. ここでランダムとは,規則性がないこと,あるいは, 将来を確率的にしか予測できないことを意味します. コインを投げたときの表と裏の系列や,サイコロを投げて出る目の系列は, 規則性がなく,次にどのような事象が生じるかは確率的にしか予測できないので, ランダムな系列です. パスタを使った正規分布の学習 での目標値からの誤差は,やはりランダムな系列です. さまざまな社会的・経済的現象の背後にはランダム性がかくれています.

ランダムな現象は身の回りに多く存在するので. わわわれは直観的にはそのふるまいを理解できているように思います. ところが,多くの心理学的研究から,人間はランダムな現象のふるまいを誤解しており, ランダムな現象にだまされやすいことがわかっています. これについて書かれた書籍として, Taleb, N. N. (2007). Fooled by randomness (2nd Ed.). Penguin Books. はおすすめです. 日本語訳は『まぐれー投資家はなぜ運を実力と勘違いするのか』(ダイヤモンド社)です. 社会情報学部が始まったときの最初のカリキュラムにあった 社会情報演習 I でこの書籍を読んでいました. 現在のカリキュラムでは「認知心理学」の授業で読んでいます.

1.準備

Microsoft Excel を使うため,実習はPC教室で行います. 硬貨を投げて表と裏の系列を記録します. 1円硬貨から500円硬貨まで,どれでもかまわないので1枚用意してください.

コインを投げて1次元ランダムウォーク(random walk)を行います. 1次元とは直線上の移動を意味します. いま,数直線の上で,0 の位置にいると考えてください. そこがスタート地点です.コインを投げて,表が出たらプラス方向に 1 進みます. 裏が出たらマイナス方向に 1 進みます. これを100試行繰り返して(コインを100回投げます),移動の軌跡を観察します. 100回連続して表が出れば,数直線上をプラスの方向に移動することを続けて, 最後は +100 の位置にいることになります. 100回連続して裏が出れば,数直線上をマイナスの方向に移動することを続けて, 最後は -100 の位置にいることになります. ふつうのコインではこうしたことは起こらなくて, 数直線上を両方向に行ったり来たりすることでしょう. これがランダムウォークです. 左へ右へと酔っ払いのようにふらふらと歩くので, 「酔歩」という訳語があてられたこともありました.

ランダムウォークの軌跡をエクセル上で観察します. エクセルのシートを方眼紙上にして,コインを投げるたびに, 現在の位置から1歩移動する(右上あるいは右下のセルに移動する)ことを繰り返します.

エクセルのシートの左上([1] の上,[A] の左)にマウスのカーソルをあわせ,左クリックします エクセルのシート全体が選択された状態になります.

エクセルの準備1

列幅を変更します.PC のディスプレイよりますが, 20ピクセルから30ピクセルぐらいの幅にするとよいでしょう. 以下の記述では30ピクセルとします.

[A] という表示と [B] という表示の間にカーソルをあわせます. (列の境界ならどこでもかまいません.) カーソルが黒い十字(横棒は両端に矢印)に変わったら, マウスで左クリック(クリックしたまま,指を離さない)します. 横幅が表示されます.

エクセルの準備2

マウスを左クリックしたまま,左方向にマウスを移動させます. セルの横幅が変わります. 幅が 30 ピクセルになったらマウスから指を離します.

エクセルの準備3

続いて,行の高さを変更します. [1] という表示と [2] という表示の間にカーソルをあわせます. (行の境界ならどこでもかまいません.) カーソルが黒い十字(横棒は両端に矢印)に変わったら, マウスで左クリック(クリックしたまま,指を離さない)します. セルの高さが表示されます.

マウスを左クリックしたまま,上方向にマウスを移動させます. セルの高さが変わります. 高さが 30 ピクセルになったらマウスから指を離します. ワークシートが方眼紙のようになりました.

エクセルの準備4

20行目の [20] という表示の上にマウスのカーソルをあわせます. カーソルの形が右向きの矢印になったら,マウスを左クリックします. 20行目が選択された状態になります.

エクセルの準備5

20行目に色をつけます.[ホーム] タブの [フォント] で, バケツが描かれているアイコンを左クリックします. (バケツの右側に描かれている下向き矢印をクリックすると,色の選択ができます.)

エクセルの準備6

20行目に色(黄色)がつけられました. 20行目を ±0,その上側をプラス,下側をマイナスとします.

エクセルの準備7

A20 セルに半角数字の「1」を入力してください. ここがランダムウォークの出発点となります.

エクセルの準備8

2.実物のコインによるランダムウォーク

2.1 結果の予想

実物のコインによるランダムウォークを実行する前に,結果の予想を行います

実習で行うことを説明します. まだコイン投げを始めないでください. コインを投げて,表が出たらプラス方向に,裏が出たらマイナス方向に 1 移動します. これを1次元のランダムウォークと呼びます. 「1次元」ですから,本来はA列だけで上下に移動するのですが, 移動の軌跡を見るために,右方向にも1列ずつ移動することにします. したがって,表が出たら右上のセルに,裏が出たら右下のセルに移動します. 移動先のセルに半角数字の「1」を入力してください.これを100試行繰り返します.

エクセルの準備9

ノート課題1:コインを投げ始める前に,必ずこの課題を行ってください.

  1. 100試行のランダムウォークの軌跡はどのようになるでしょうか?
    • ノートの1ページで,線分を横方向に引きます.あるいは, ノート用 Word ファイル (randomwalk_note.docx)をダウンロードして印刷し. 「ノート課題(1)」というページを開いてください.線分が引いてあります. この線分がエクセルの20行目に引いた黄色い直線だと考えてください.
    • 数字の1が並んでゆく軌跡を曲線で描いてください.
    • 曲線は直線の左端上から始まります. ランダムウォークの終わりには,曲線の終端が直線上にあるとは限りません.
    • この予想に「正解」はありません.予測とぴったり一致した結果にはなりません. どのような軌跡を描くか,典型的なイメージを表現してください.
  2. 表(あるいは裏)の出る割合は,どれぐらいになるでしょうか? CoursePower で回答してください. この予想に「正解」はありません(たまたま当たるかもしれませんが). 典型的にはこれぐらいの割合になるだろうという予測をします.
  3. プラス側にいた時間(あるいは,マイナス側にいた時間)の割合は, どれくらいになるでしょうか? エクセルの20行目より上側(あるいは,下側)に, どれだけの数の「1」が並ぶかを考えます. この予想に「正解」はありません(たまたま当たるかもしれませんが), 典型的にはこれぐらいの割合になるだろうという予測をします. CoursePower で回答してください.

2.2 ランダムウォークの実行(実物コイン使用)

ほとんどの人は,エクセルの第1行によりも上に移動することにはならないと思います. しかし,もしそうなった場合には,上に行を挿入して続けてください. それでは,始めてください. B列が第1試行であり,CW列まで進むと100試行になります

ランダムウォークが終わったとき(CW列に到達したとき), 数直線上では必ず偶数の位置で終了します. 行の挿入を行っていなければ,20行目が ±0 であり,必ず偶数行で終わります. もしそうなっていなければどこかに入力ミスがあります. 探して修正してください.

CX列で,SUM関数を使って行方向(横方向)の合計を計算してください. 入力されている「1」を横方向に合計することで, その行に到達した回数がわかります.たとえば,CX20 セルでは,


= SUM(B20:CW20)

と入力します.A20セルに入力されている「1」をカウントしないように注意してください. 計算結果が ## と表示されてしまうかもしれません. これは列幅が狭くて数値が表示されていないだけなので,CX列だけ列幅を広げてください.

ここで一度,ファイルに適当な名前を付けて保存してください.

実物コインでの予測と結果の比較

2.3 結果の検討

ランダムウォークを実行した結果を検討します. 予想との比較を行います.

  1. 100試行のランダムウォークの軌跡は,予想とあっていましたか? もちろん,ぴったり一致するはずはありませんが, 予想で描いた曲線と,実際の曲線で,以下の点について一致が見られるかどうか検討してください.
    • 軌跡が20行目(±0 の地点)を横切った回数を, 予想と実際で比較してください. この回数はそれぞれ数えてください. 第20行に到達した回数ではなく,横切った回数であることに注意してください. たとえば,上から降りてきて20行目に到達し,また上に戻っていった場合は,カウントしません. プラス領域からマイナス領域へ,あるいは, マイナス領域からプラス領域へ移動した回数をカウントします.
    • 軌跡が ±0 の地点を横切ったタイミングや,グラフの周期性について, 予想と実際を比較してみましょう.
  2. 表(あるいは裏)の出る割合は,予想とあっていましたか? これはCW列での最終的な位置からわかります. たとえば,最終的な位置が +4(行を挿入していなければ第16行)だったすると, これは表の方が裏より4回多く出たということを意味します. 表と裏をあわせて100回ですから,表が52回,裏が48回となります. よって,表裏の比率は 52:48 となります. 小学校4年生で学習する「和差算」ですね.
  3. プラス側にいた時間(あるいは,マイナス側にいた時間)の割合は, 予想とあっていましたか? これはCX列で計算した行方向の合計からわかります. 上図では,プラス側にいた時間は, 5 + 9 + 14 + 17 + 13 = 58 で,マイナス側にいた時間は 10 + 10 + 7 + 4 + 1 = 32 です.よって,時間比率は 58:32 となります.

ノート課題2: コイン投げのランダムウォーク実験からわかったこと,気がついたこと,疑問に思ったことをまとめましょう. CoursePower で「ノート課題2」を行ってください. 必ずこれを行ってから次に進むこと.

3.エクセルの乱数を利用したランダムウォーク

コインを100回投げることはなかなか大変だったと思います. コインを投げるという仕事をエクセルにやってもらいましょう. エクセルの 乱数(random number)を利用します. 乱数とは規則性のない数の並びです. たとえば,サイコロを振って出た目を記録していけば, 1 から 6 の整数をランダムに生成することができます. エクセルの rand 関数を用いると, 0 から 1 の範囲の実数をランダムに生成することができます.

3.1 結果の予想

自分でコインを投げずにエクセルに投げてもらうということ以外は, コインの実物を用いたときと同じランダムウォークの実験を行います. ここでも実験の前に結果の予想をしましょう.これがノート課題3になります. 一度実験を経験しているので,最初とは異なった予想になる人が多いと思います. (まったく同じ予想ではいけないということはありません.)

ノート課題3:実験を始める前に,必ずこの課題を行ってください.

  1. 100試行のランダムウォークの軌跡はどのようになるでしょうか?
    • ノートの1ページで,線分を横方向に引きます.あるいは, ノート用 Word ファイル (randomwalk_note.docx)をダウンロードして印刷し. 「ノート課題(3)」というページを開いてください.線分が引いてあります. この線分がエクセルの20行目に引いた黄色い直線だと考えてください.
    • 数字の1が並んでゆく軌跡を曲線で描いてください.
    • 曲線は直線の左端上から始まります. ランダムウォークの終わりには,曲線の終端が直線上にあるとは限りません.
    • この予想に「正解」はありません.予測とぴったり一致した結果にはなりません. どのような軌跡を描くか,典型的なイメージを表現してください.
  2. 表(あるいは裏)の出る割合は,どれぐらいになるでしょうか? CoursePower で回答してください. この予想に「正解」はありません(たまたま当たるかもしれませんが). 典型的にはこれぐらいの割合になるだろうという予測をします.
  3. プラス側にいた時間(あるいは,マイナス側にいた時間)の割合は, どれくらいになるでしょうか? エクセルの20行目より上側(あるいは,下側)に, どれだけの数の「1」が並ぶかを考えます. この予想に「正解」はありません(たまたま当たるかもしれませんが), 典型的にはこれぐらいの割合になるだろうという予測をします. CoursePower で回答してください.

3.2 ランダムウォークの実行(乱数使用)

コインの実物で行ったランダムウォークのワークシート名を「RW(コイン)」に変えましょう. シート名をダブルクリックすれば名前を変更できます 新たに2つワークシートを追加します.

エクセルの乱数を用いたランダムウォーク1

追加した2つのワークシート名を「乱数」と「RW(乱数)」にしましょう,

エクセルの乱数を用いたランダムウォーク2

「RW(乱数)」ワークシートは, 実物のコインを使用したランダムウォークのワークシート「RW(コイン)」と同じように, 方眼紙状にして20行目に色を付けてください.

「乱数」ワークシートで,A1 セルに


=RAND()

と入力してください.RAND 関数は0から1までの実数をランダムに発生させます.

エクセルの乱数を用いたランダムウォーク3

A1 セルを A2 セルから A100 セルまでコピーしてください. これらのセルすべてに = RAND() という式を入力したことになります. コピーなど,何らかの操作を行うたびに乱数は再計算されて,別の値になります. よって,A1 セルの値は変化します.気にしないでください.

エクセルの乱数を用いたランダムウォーク4

コイン投げのランダムウォークでは, 表および裏の出る確率はいずれも 1/2 であると考えられます. そこで,乱数の値が 0.5 以下なら表,0.5より大きければ裏ということにします. B1 セルに,


=IF(A1<=0.5,1,0)

と入力して,[Enter] キーを押してください.表を1,裏を0で表します.

エクセルの乱数を用いたランダムウォーク5

B1 セルを B2 セルから B100 セルまでコピーしてください. これで,コインを100回投げたとみなすことのできる系列ができました.

エクセルの乱数を用いたランダムウォーク6

「乱数」ワークシートで生成した1(表)と0(裏)の系列を, 「RW(乱数)」ワークシートの B1 セルから CW1 セルにコピーします. 方法が少しややこしいです.

「乱数」ワークシートの B1 セルから B100 セル(100個の1と0)をコピーします.

「RW(乱数)」ワークシートで,B1 セル(A1 セルではありません)を選択します.

[ホーム] タブの「貼り付け」の下にある矢印をクリックし, 「形式を選択して貼り付け」を選んでください.

エクセルの乱数を用いたランダムウォーク7

貼り付けは [値] とします. [行列を入れ替える] にチェックを入れてください. [OK] ボタンを押します.

エクセルの乱数を用いたランダムウォーク8

エクセルの乱数から構成したコイン投げの系列がコピーされました. 数字の 1 は表,0 は裏を表します. この系列を用いて,実物のコインを使ったランダムウォークと同じことを行ってください.

エクセルの乱数を用いたランダムウォーク9

ファイル提出:エクセルの乱数を用いたランダムウォーク実験を終えたら, ファイルを保存し,CoursePower から提出してください.

3.3 結果の検討

エクセルの乱数を用いたランダムウォーク実験の結果を検討します. この実験の直前に行った予想との比較を行います.

  1. 100試行のランダムウォークの軌跡は,予想とあっていましたか? もちろん,ぴったり一致するはずはありませんが, 予想で描いた曲線と,実際の曲線で,以下の点について一致が見られるかどうか検討してください.
    • 軌跡が20行目(±0 の地点)を横切った回数を, 予想と実際で比較してください. この回数はそれぞれ数えてください. 第20行に到達した回数ではなく,横切った回数であることに注意してください.
    • 軌跡が ±0 の地点を横切ったタイミングや,グラフの周期性について, 予想と実際を比較してみましょう.
  2. 表(あるいは裏)の出る割合は,予想とあっていましたか? これはCW列での最終的な位置からわかります. たとえば,最終的な位置が +4(行を挿入していなければ第16行)だったすると, これは表の方が裏より4回多く出たということを意味します. 表と裏をあわせて100回ですから,表が52回,裏が48回となります. よって,表裏の比率は 52:48 となります.
  3. プラス側にいた時間(あるいは,マイナス側にいた時間)の割合は, 予想とあっていましたか? これはCX列で計算した行方向の合計からわかります.

ノート課題4: コイン投げのランダムウォーク実験からわかったこと,気がついたこと,疑問に思ったことをまとめましょう. 疑問に思ったことについて,何かわかったことや気がついたことはありませんか? 「こうだ」と思っていたけど,実は違うかもしれないことはありませんか? CoursePower で「ノート課題4」を行ってください. 必ずこれを行ってから次に進むこと.

4.エクセルVBAを用いたランダムウォーク

コイン投げ,および,エクセルの乱数を用いたランダムウォークは, それぞれ1回の実験にすぎません. 実験を何度も繰り返さないと,観察された現象は珍しいことなのか, よくあることなのか,わかりません. しかし,これまでの手順で何度も実験を行うことは手間がかかりすぎます

そこで,エクセル VBA というプログラミング言語を用いて, 何度もシミュレーションを行うことのできるワークシートを作成します. 今はみなさんに VBA の知識がないので,寺尾があらかじめ作成したファイルを配布します. 社会情報学部でプログラミングを学べば, これぐらいのプログラムは簡単に作成できるようになるはずです.

4.1 結果の予想

これまで手で行っていたことをプログラムで行うということ以外は, 実物のコインおよびエクセルの乱数を用いて行ったのと同じランダムウォークの実験を行います. ここでも実験の前に結果の予想をしましょう.これがノート課題5になります. これまで2度の実験を経験しているので,これまでとは異なった予想になる人が多いと思います. (まったく同じ予想ではいけないということはありません.)

ノート課題5:実験を始める前に,必ずこの課題を行ってください.

  1. 100試行のランダムウォークの軌跡はどのようになるでしょうか?
    • ノートの1ページで,線分を横方向に引きます.あるいは, ノート用 Word ファイル (randomwalk_note.docx)をダウンロードして印刷し. 「ノート課題(5)」というページを開いてください.線分が引いてあります. この線分がエクセルの20行目に引いた黄色い直線だと考えてください.
    • 数字の1が並んでゆく軌跡を曲線で描いてください.
    • 曲線は直線の左端上から始まります. ランダムウォークの終わりには,曲線の終端が直線上にあるとは限りません.
    • この予想に「正解」はありません.予測とぴったり一致した結果にはなりません. どのような軌跡を描くか,典型的なイメージを表現してください.
  2. 表(あるいは裏)の出る割合は,どれぐらいになるでしょうか? CoursePower で回答してください. この予想に「正解」はありません(たまたま当たるかもしれませんが). 典型的にはこれぐらいの割合になるだろうという予測をします.
  3. プラス側にいた時間(あるいは,マイナス側にいた時間)の割合は, どれくらいになるでしょうか? エクセルの20行目より上側(あるいは,下側)に, どれだけの数の「1」が並ぶかを考えます. この予想に「正解」はありません(たまたま当たるかもしれませんが), 典型的にはこれぐらいの割合になるだろうという予測をします. CoursePower で回答してください.

4.2 ランダムウォークの実行(エクセルVBA)

エクセル VBA で書いたランダムウォークのプログラムが含まれる エクセルファイル(rw.xlsm)をダウンロードしてください. CoursePower でも公開しています(資料:VBAを用いたランダムウォーク).

ファイルを開くとおそらくセキュリティの警告が出ます.[編集を有効にする] [コンテンツの有効化] をクリックしてください..

エクセルVBAを用いたランダムウォーク1

エクセルVBAを用いたランダムウォーク2

[スタート] ボタン(2か所にあります)を押すと, 100試行の1次元ランダムウォークが始まります. 軌跡は自動的に描かれ,表と裏の回数が集計されます.

エクセルVBAを用いたランダムウォーク3

エクセルVBAを用いたランダムウォーク4

シミュレーションは何回も繰り返してください. そうすると,どういう結果がどれぐらいの頻度で生じるのかわかります.

ノート課題6: コイン投げのランダムウォーク実験からわかったこと,気がついたこと,疑問に思ったことをまとめましょう. 疑問に思ったことについて,何かわかったことや気がついたことはありませんか? 「こうだ」と思っていたけど,実は違うかもしれないことはありませんか? CoursePower で「ノート課題6」を行ってください.

ノート課題6の最後に,提出物をデータとして使用することへの同意をたずねる質問が3つあります. ノートとエクセルファイルは, 「ランダム性についての人間の理解と学習」に関する心理学研究に使用させてもらう可能性があります. データは統計的に処理しますので,個人を特定できる情報が明らかにされることは決してありません. ノートの記述内容がどのように研究に使用されるかの具体例として, 2014年度の1年生が作成したノートを用いた 研究論文(本仲・太田・寺尾,2015)を公開します.

これで実習は終わりです.余力のある人は次の解説を読んでください.

5.解説

反直観的と思われる,ランダムウォークの2つの性質について解説します

5.1 歩いている領域の偏り

ランダムウォークの実験を繰り返し行いました. 実験を通して,表と裏の回数はほぼ半々なのに, 軌跡はプラスあるいはマイナス領域のいずれかに偏っていることが多いということに気づいた人は多いと思います. これはランダムウォークの顕著な性質のひとつです. バスケットボールのように,たくさん得点が入るスポーツで, 実力の変わらない2チーム(競技によっては2人)が対戦することを考えてください. 試合が終わったとき,得点差はわずかでも, 一方のチームがリードしていた時間がずっと長くなりがちです.

下のグラフは,ランダムウォークでプラスの領域を歩いている時間の割合について, その生じやすさを表したものです. 縦軸は確率密度ですが,これは確率のようなものだと思ってください. 横軸での 0.5 という割合は, プラスの領域とマイナスの領域に同じだけの時間いたことを意味します. この近辺はグラフの高さが低いので,こうした結果はあまり生じないことがわかります. 時間の割合が 0 および 1 に近いところではグラフの高さが高くなっていて, 歩く領域が大きく偏ることは高い確率で起こることがわかります.

正の部分にいる割合の確率密度関数

図中の数式はグラフの式です.社会情報学部では多くの数学科目が用意されています. 熱心に学習すれば,これぐらいの数式は扱えるようになります.

5.2 表と裏の交代

おそらく多くの人にとって,表あるいは裏が思ったより連続したのではないでしょうか. ひとつ前の試行と結果が異なる(たとえば,表の次に裏が出る)確率は 0.5 です, 交代確率が 0.5 だとランダムな系列に見えず, 交代確率が 0.7 ぐらいの系列がランダムに見えるようです. ランダムな系列がランダムに見えないのは,人の認識の弱点でしょう.

株価や,ドルやユーロの為替チャートは,ランダムに変動するのでしょうか? (参考: 三井住友銀行為替チャート) これらの価値はコインを投げて決めているわけではありませんが, 動きとしてはランダムだと考えられています. チャートを見て,ランダムに見えるでしょうか?