はじめに
この記事では、matplotlibのFuncAnimationを使用して1次元ランダムウォークのアニメーションを作成する方法を解説します。ランダムウォークは確率過程の一種で、各ステップでランダムな方向に移動するモデルです。Pythonを使って簡単にこのランダムウォークを視覚化する方法を示します。
コード
解説
モジュールのインポート
データの生成
Wはステップ回数を表し、この例では500に設定しています。
stepはnp.random.choice([-1,1],W)を使用して、-1または1のいずれかの値を500回ランダムに選択した配列です。
positionはnp.cumsum(step)で計算された累積和であり、これによってランダムウォークの位置が逐次更新されていきます。
1次元のランダムウォークデータの表示
上記で作成したデータを表示すると以下のようになります。

アニメーションの表示
まず、p1で空のプロットを作成し、そこにデータを流し込んでいきます。データの設定には、set_data関数を使用します。データが更新されるにつれてx軸の表示範囲も変化させる必要があり、ax.set_xlim(0,x[i+1])を使用することでx軸の表示範囲を徐々に拡大できます。
animation.FuncAnimation関数でaniオブジェクトを作成し、このaniをHTML形式(ani.to_html5_video())に変換することで、Jupyter Lab(Notebookも同様)上でアニメーションを表示できます。
コードをダウンロード(.pyファイル) コードをダウンロード(.ipynbファイル)まとめ
Matplotlibを使った1次元ランダムウォークのアニメーション作成は、確率過程の視覚的理解に役立ちます。FuncAnimationを活用することで、動的なデータ可視化が可能になり、統計的な現象をより直感的に把握できるようになります。
参考

Numpyによる乱数生成まとめ - Qiita
Python標準にも random というモジュールがあるが、ベクトル演算の可能な numpy のほうが「大量に乱数を生成してなんかの処理をする」という場合に高速に動く。あと分布関数が山ほど用意されている。 一様乱数 numpy.rando...
numpy.random.choice — NumPy v1.15 Manual
numpy.cumsum — NumPy v2.3 Manual
コメント