Generator.vonmises – フォン・ミーゼス分布から乱数配列を作成する方法

Generator.vonmisesは、フォン・ミーゼス分布から乱数配列を生成するジェネレータメソッドです。

フォン・ミーゼス分布(円周正規分布としても知られる)は、円周上の連続確率分布です。正規分布が円周状になったものとして考えられます。

このページではフォン・ミーゼス分布から乱数配列を生成するGenerator.vonmisesについて解説します。

目次

1. 書式

Generator.vonmises

書き方:

Generator.vonmises(mu, kappa, size=None)

パラメーター:

mu: float or array_like of floats
最頻値
kappa: float or array_like of floats
分布のばらつき(>=0)
size: int or tuple of ints, optional
出力する配列のshape。(m, n, k)を渡すと、shape(m, n, k)の乱数配列を生成する。デフォルト値Noneで、mu, kappaがスカラーの場合は1つの乱数の値を返す。それ以外の場合はnp.broadcast(mu, kappa).sizeの乱数配列を返す。

戻り値: 

out: ndarray or scalar
パラメータを設定したフォン・ミーゼス分布から乱数配列を生成。

Notes

フォン・ミーゼス分布の確率密度関数は次の通りです。

2. サンプルコード

それでは、サンプルコードを見ていきましょう。

まずは、random.default_rng コンストラクタでジェネレータオブジェクトを作成します。『numpy.random.default_rng – 乱数生成のためのジェネレータオブジェクトの作成』に目を通しておいてください。

In [1]:
import numpy as np
rng = np.random.default_rng()
rng
Out[1]:
Generator(PCG64) at 0x7FB83225EE58

こうして作成したジェネレータオブジェクト rng に対して、Generator.vonmisesを呼び出すことによって、フォン・ミーゼス分布から乱数配列を取得することができます。

第一引数に最頻値μ、第二引数にばらつきκ、第三引数に配列のsizeを渡します。

In [3]:
rng.vonmises(0.0, 4.0, 5)
Out[3]:
array([ 0.47944696, -0.73318747,  0.5465408 , -0.47186506, -0.08067826])

確率密度関数と共に、取得した乱数配列のヒストグラムを描いてみます。

In [4]:
mu, kappa = 0.0, 4.0 # mean and dispersion
s = rng.vonmises(mu, kappa, 10000)

import matplotlib.pyplot as plt
from scipy.special import i0  
plt.hist(s, 50, density=True)
x = np.linspace(-np.pi, np.pi, num=51)
y = np.exp(kappa*np.cos(x-mu))/(2*np.pi*i0(kappa))  
plt.plot(x, y, linewidth=2, color='r')  
plt.show()

3. まとめ

以上、Generator.vonmisesはフォン・ミーゼス分布から乱数配列を生成するジェネレータメソッドです。

以前は、numpy.random.vonmises関数が使われていましたが、ジェネレータメソッドを使うようにしましょう。こちらの方が、処理が高速で、大量のデータを扱う科学技術計算に適しているからです。



よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次
閉じる