Python で
コーシー分布とは
コーシー分布 - Wikipedia の
連続確率分布の
一種 ローレンツ分布
とも呼ばれる。 物理学分野では ブライト・ウィグナー分布
と呼ばれる。 期待値も
分散も 存在しない。 株価の
分析に 使われる 計算式は
以下の 通り
$$ f(x) = \alpha / \pi { \alpha^2 + (x - \lambda)^2 } (\alpha > 0) $$
Python での コーシー分布の 計算方法
調べた
* numpy.random.standard_cauchy — NumPy v1.15 Manual
numpy.random.standard_cauchy を 使う
numpy の
import numpy as np import matplotlib.pyplot as plt s = np.random.standard_cauchy(1000000) s = s[(s>-25) & (s<25)] # グラフ描画できるように配列の範囲を切り出す plt.hist(s, bins=100) plt.show()
scipy.stats.cauchy を 使う
scipy.stats.cauchy — SciPy v1.2.1 Reference Guide
の
cauchy.stats
で
from scipy.stats import cauchy mean, var, skew, kurt = cauchy.stats(moments='mvsk') print(mean, var, skew, kurt)
nan nan nan nan
mean
平均、var
分散、skew
歪度、kurt
尖度 は
続いて、
import matplotlib.pyplot as plt fig, ax = plt.subplots(1, 1) # %点関数 0.01、0.99 を100等分した等間隔な配列を作成する x = np.linspace(cauchy.ppf(0.01),cauchy.ppf(0.99), 100) # lw :線の太さ 5、alpha: グラフの透過度 0.6 ax.plot(x, cauchy.pdf(x),'r-', lw=5, alpha=0.6, label='cauchy pdf') rv = cauchy() # lw :線の太さ 2 、pdf 確率密度関数 ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf')
[<matplotlib.lines.Line2D at 0x118514160>]
vals = cauchy.ppf([0.001, 0.5, 0.999]) # allclose 2つのarrayが近似的に同じか確認する cdf 累積分布関数 np.allclose([0.001, 0.5, 0.999], cauchy.cdf(vals))
True
グラフの
import matplotlib.pyplot as plt fig, ax = plt.subplots(1, 1) x = np.linspace(cauchy.ppf(0.01),cauchy.ppf(0.99), 100) ax.plot(x, cauchy.pdf(x),'r-', lw=5, alpha=0.6, label='cauchy pdf') rv = cauchy() ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf') r = cauchy.rvs(size=1000) # density=True で 密度プロット、線形の塗りつぶされたグラフを引く ax.hist(r, density=True, histtype='stepfilled', alpha=0.2) ax.legend(loc='best', frameon=False) plt.show()
tfp.distributions.Cauchy の 使い方が わからない
- tfp.distributions.Cauchy | TensorFlow Probability | TensorFlow
という Tensorflow の 確率分布関数が ありましたが、 以前と 同様で 使い方が わかりませんでした…
参考
以下、
以上です。
コメント