集団自殺するレミングの謎 part2 | 科学アラカルト [実践] | 逆ポーランド電卓の実践ウェブ rpn hacks!

逆ポーランド電卓の実践ウェブ rpn hacks!

逆ポーランド電卓rpnの実践ウェブ   
rpn hacks! アールピーエヌ・ハックスサイトマップ

rpn | 実戦 | 科学アラカルト | 科学に関する話題をrpnで探求!調べて実験してみよう。

HOME > 実践 > 科学アラカルト > 集団自殺するレミングの謎 part2

hatena twitter facebook rss ソーシャルブックマーク

集団自殺するレミングの謎 part2

前のページに戻るLinkIcon

 レミングの個体数増減をモデル化した数式を使って、繁殖率が2倍のケースと3倍のケースを10世代に渡って計算してみました。結果は以下のとおりです。

  ^y 10
  |
  -
  |      +       +
  |                      +       +       +
  -
  |          +       +       +       +
  |  +       *   *   *   *   *   *   *   *
  -      *
  |
  |  *
  -
  |
  |                                      x
  |o                                    10
  +--|---|---|---|---|---|---|---|---|--->


"*"が繁殖率2倍で"+"が3倍のケースなのですが、これまでの結果から考察すると、繁殖率が上がると最終的な個体数は増え、ある一定の数で収束するような感じを受けます。

突如始まるカオス的な増減数

 では、ここで繁殖率を4にしてみましょう。

  >rpn 4 @n * @n 4 @n * * 10 / - #n @n -b 2 #n -r 10 >tmp
  >rpn 1 -c rownum <tmp | xyp -x,10 -y,10 -s1,2 -m
  ^y 10                  *           *
  |      *
  -              *
  |
  |
  -  *
  |                  *
  |
  -                              *
  |
  |          *
  -
  |                                      *
  |                          *           x
  |o                                    10
  +--|---|---|---|---|---|---|---|---|--->


今度は様相が一転します。世代毎に個体数が不規則に上下している気がします。数値を示すと以下のとおりです。

  >rpn 4 @n * @n 4 @n * * 10 / - #n @n -b 2 #n -r 10
  6.4
  9.216
  2.89014
  8.21939
  5.85421
  9.70813
  1.13339
  4.01974
  9.61563
  1.47837


最大は10匹に届かず、最小が1匹余りです。周期的な感じも受けません。このような個体数の推移でも最後はある数に収束するのでしょうか。30世代分を計算して、グラフ化してみましょう。

  >rpn 4 @n * @n 4 @n * * 10 / - #n @n -b 2 #n -r 30 >tmp
  >rpn 1 -c rownum <tmp | xyp -x,30 -y,10 -s5,2 -m
  ^y 10  *   *   *            *   *
  | *                                  *
  -    *                    *
  |
  |                       *
  -*                                  *
  |     *                    *
  |             *
  -         *                    *
  |
  |  *                                   *
  -                      *           *
  |            *
  |        *                   *         x
  |o              * *** *          *    30
  +-----|------|-----|------|------|----->


個体数は収束する素振りがありません。そして、興味深いことに15世代頃には絶滅しそうな個体数になっています。このような不規則さはその後も続くのでしょうか。今度は、一気に100世代まで計算して、グラフ化してみます。

  >rpn 4 @n * @n 4 @n * * 10 / - #n @n -b 2 #n -r 100 >tmp
  >rpn 1 -c rownum <tmp | xyp -x,100 -y,10 -s20,2 -m -w60
  ^y *0* *    * *    * *     *  **  *  *   *  *    * * *
  |*               **     *           *                     *
  - *        *             *              *       *
  |                                     **                 *
  |          *                            *               *
  *               *                               *        *
  | *         *                *    *      *        *
  |     *              *    *    *           *        *
  -   *         *   *
  |                       *          * *                     *
  |*               *       *                     *
  -         *    *                      *                 *
  |    *              *       * *  *         *      **
  |   *        *         *           *           *           x
  |o     ****    *    * **   **   **        * ***      *** 100
  +----------|-----------|-----------|-----------|----------->


どうもずっと続くようです。何か周期的なパターンも感じますが、目視ではよく分かりません。ただ、最大値と最小値が多く発生している感じは受けますね。

増減の周期を探索

 そこで、コレログラムで検証してみます。何らかの周期性があるならば自己相関するはずです。

  >rpn -c crlogram <tmp | rpn 0 -c rownum | xyp -x,100 -y-.5,.5 -m -w60
  ^y 0.5
  |
  |
  |
  |
  |      *                *           *         *
  |        ** * *   **  **  *    *      *
  **  **  *  **    *   * *   * *  ***  **     ** *  **  ****00
  +**----*--*--**--**-**---*-*---*-***---***-**-*-*******---*>
  |o* *          **   *   **  * *           *                x
  |    ** *  *
  |  *
  |
  |
  |
  |-0.5


結果は、相関係数も高くなく、周期性も感じられません。駄目押しにフーリエ変換でスペクトルを確認してみます。

  >rpn -c fourier <tmp | rpn 0 -c rownum | xyp -x,100 -y,100 -m -w60
  ^y 100
  |
  |
  |             *                             *
  | *    *                                           *    *
  |                      *           *
  |    *            *       *     *       *            *
  |*           * *                           * *           *
  |  **             *  **             **  *             **
  |       *       *           * *           *       *
  |    *  ***   *  *  *  **  *   *  **  *  *  *   ***  *
  |   *  *   **    * **      *   *      ** *    **   *  *
  |**            *     *  *         *  *     *            **
  |         ***            *  ***  *            ***          x
  *o    *                                             *    1*0
  +---------------------------------------------------------->


ナイキスト周波数内でスペクトルの高い順に並べると24、5世代の周期があることになりますが、コレログラムを参照するに、やはり明白な周期性はなさそうです。

つまりは個体数の増減はまるでカオス的ということです。繁殖率を2倍、3倍と増やしてきて、個体数の増加傾向を捉えたつもりでしたが、4倍になると急に振る舞いが変わってしまいます。

周期は見当たりませんでしたが、突然に大繁殖が起こり、突然に絶滅の危機に陥るという振る舞いはうまくモデル化できています。ただ、このモデル化では実際のレミング個体数の推移と比べるとカオス過ぎる気がしますね。

今回使用した単純な数式ではなく、レミングの密度、冬季・夏季の成長率、天敵による捕食率など10程度のパラメータを使用した数式であれば現実のレミングの個体数の変動をかなり的確にシミュレートできています。

カオス的な個体数推移の概要

 さて、もう少しモデル化した個体数推移のデータ分析を続けてみましょう。改めて繁殖率が3倍の場合の100世代分の基本統計量を計算すると以下のとおりになります。

  >rpn -c statinfo <tmp
  デ ー タ        100
  最 小 値        0.00246305
  最 大 値        9.99938
  範    囲        9.99692
  合 計 値(Σ)    467.662
  平 均 値(μ)    4.67662
  分 散 値(σ2)   13.1315
  標準偏差(σ)    3.62374
  分 散 値(s2)   13.2641
  標準偏差(s)    3.642
  歪度(a3≒0)    0.136228
  尖度(a4≒3)    1.49935
  変動係数(ν)    0.778767


100世代のうち、最小は限りなく0匹、最大は10匹弱です。平均は4.7で最大・最小の中間くらいに位置します。では、世代毎の生息数分布を幹葉表示してみます。

  >rpn 10 * -c stemleaf <tmp
   0 | 0000000001111123344566799
   1 | 1234445788
   2 | 033488
   3 | 123567
   4 | 0447799
   5 | 01478999
   6 | 0445
   7 | 012379
   8 | 12236799
   9 | 11235666677889999999



グラフにも垣間見えたように、やはり0匹台と9匹台が最も多く発生しています。9匹台を大繁殖、0匹台を絶滅の危機と考えると、その間を行き来していることが分かります。

単純なレミングの数式なのに、その個体数は複雑怪奇でカオス的な振る舞いをしています。傍目には次の年に大繁殖するのか絶滅間近となるのか予想できません。数式の初期値である繁殖率がほんの少し違っただけで、これだけの増減の違いが見られるのです。

似た話にバタフライ効果があります。「北京の蝶が羽ばたけば、ニューヨークは嵐になる」のように初期状態の僅かな違い(蝶が羽ばたいたかどうか)が連鎖反応的に環境に影響を与え合い、最終的にどうなるか(嵐になるか平穏か)は予測不可能というわけです。
これは気象学者のローレンツが僅かな測定誤差や計算誤差が最後に大きな違いを引き起こすことを発見したのが始まりです。つまり、精度の高い観測データをどれだけ集めても気象予測の精度を上げることはできないのです。

カオス的事象を予測

 さて、一般的に不規則な事象を予測することは不可能です。時系列的な流れが全く感じられず、徐々に増える・減るわけでもなく、増減を繰り返す周期があるわけでもないものの予測は困難を極めます。カオス的な変動はそれに輪を掛けて予測ができない感じがします。

実際に予測できるかどうか試してみましょう。まず、カオス的な振る舞いをするデータ列を再度、計算します。

  >rpn 4 @n * @n 4 @n * * 10 / - #n @n -b 2 #n -r 100 >tmp
  >type tmp
  6.4
  9.216
  2.89014
  8.21939
  5.85421
    :
  (中略)
    :
  7.28259
  7.91592
  6.59898
  8.97731
  3.6724  


数値はバラバラで関連性がないような気がします。これらデータの最後の3.6724を除く99個を使って、100番目の数値(3.6724)を予測することにします。途中を略してありますが、予測する値と他との関係を示します。

  ^y *0* *    *               * * *
  |*                                   *
  - *        *
  |                                   *
  |          *                       *
  *                                   *
  | *         *                *
  |     *        ・・・ 中略 ・・・    *
  -   *
  |                                     * <-- この値を予測
  |*
  -         *                        *
  |    *                       **
  |   *        *                        x
  |o     ****                     *** 100
  +----|-----|--   ---||---   ----|----->


グラフからは何の傾向も読み取れない感じですが、果たして最後の数値を予測することができるでしょうか。線形予測が無理なことはグラフで分かります。周期も確認できないので三角関数の合成も難しそうです。

そこで、カオス状態でも次の数値を予測するchaosプログラムを使って、予測してみましょう。

  >rpn 99 -c head <tmp | rpn -c chaos
  3.08595


グラフに示すと以下のとおりです。

  ^y *0* *    *               * * *
  |*                                   *
  - *        *
  |                                   *
  |          *                       *
  *                                   *
  | *         *                *
  |     *        ・・・ 中略 ・・・    *
  -   *
  |                                     * <-- 実際の値
  |*                                    + <-- 予測した値
  -         *                        *
  |    *                       **
  |   *        *                        x
  |o     ****                     *** 100
  +----|-----|--   ---||---   ----|----->


見事に予測できています。その誤差は15.9%。カオス的な増減を考えれば及第点と考えられますね。

レミングサイクルの謎解き

 最後にレミングサイクルの謎解きですが、ドイツとフィンランドが15年に渡って追跡・研究し、その謎がついに解明されました。彼らは論文の中でレミングサイクルは食物連鎖で説明できると結論付けています。

レミングを捕食する動物は北極キツネ、シロフクロウなど複数確認されています。そのうちでレミングの個体数の変動と非常に似た変動を持つ捕食動物がオコジョです。正に天敵でレミングが主食。オコジョの個体数とレミングの個体数は非常にピッタリと相関しています。

つまり、オコジョを筆頭にキツネやフクロウなどの天敵が少ないとレミングが大発生し、天敵が多くなるとレミングを食べつくして絶滅寸前まで追い込んでいるというのが現在、真相に一番近い説のようです。

食べられてばかりでかわいそうなレミングですが(寿命は2年あるのですが、自然界では2ヶ月程度)、もしかしたら逆に当該環境におけるキーストーン(レミングが絶滅してしまうと生態系全体が崩壊)なのかもしれません。

実践科学アラカルトに戻るLinkIcon

警告rpnプログラムを実行するには、rpn試用版かrpn標準版が必要です(バージョンの違いはこちら)。

情報rownumはカンタン分析パッケージに同梱されています。statinfo, stemleaf, headはrpnマイスターパッケージに同梱されています。crlogram, chaosはビジネス統計(トレンド編)に同梱されています。xypとnpdはrpnの姉妹ソフトウェアです。詳しくはプロダクトを参照ください。

科学アラカルト

調べて実験してみよう

※実践コーナーのTOP

紹介 rpnの利用シーンはこちら…

講座初めての人のrpn基礎もどうぞ
講座しっかり学べるrpn入門もどうぞ
講座すぐに使えるdos入門もどうぞ
物語データを見抜くojt物語もどうぞ

実践他の分野への挑戦は実践TOP

応用rpnアプリケーションは応用TOP

part2

調べて実験してみよう

※実践コーナーのTOP

講座初めての人のrpn基礎もどうぞ
講座しっかり学べるrpn入門もどうぞ
講座すぐに使えるdos入門もどうぞ
物語データを見抜くojt物語もどうぞ

実践他の分野への挑戦は実践TOP

応用rpnアプリケーションは応用TOP

書籍紹介

記事に関連した書籍

本ウェブサイトで扱った話題に関連した書物で、スタッフが実際に読了したものを紹介。

書籍数学の書籍
数の世界は思ったよりもエキサイティング

書籍投資の書籍
失敗しない投資には広範囲で実践的な知識が必要

警告バックスラッシュはエンマークに読み替えて下さい(IE)。
バックスラッシュとエンマーク

警告文字で作られた図表や式が崩れることがあります。ブラウザによっては固定幅フォントをMSゴシックにするときれいに表示されます。それでも崩れる場合は図表や式をメモ帳にコピー後、閲覧下さい。

警告rpn試用版と標準版(2kリビジョン)はダブルクォートで囲って下さい。

rpn 1 2 + ⇒ rpn "1 2 +"
rpn 1 -c foo ⇒ rpn "1" -c "foo"

ダブルクォートは省略できることが多いのですが、慣れない間は囲んだほうが無難です。なお、本ウェブサイトの記事ではrpn標準版(98リビジョン)を使用しているため囲っていません。詳しくは技術サポートの「rpn TIPS参照ください。

注意rpnの障害情報はこちら

警告rpn試用版の場合、複雑なプログラムや処理時間のかかるプログラムの一部には動作しないものがあるかもしれません。あくまで無料提供であることを勘案・了承ください。rpn標準版は、すべてのプログラムが動作します。