• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar

HEADBOOST

  • Python
  • NumPy
  • 線形代数
  • 文法
  • お問い合わせ
現在の場所:ホーム / NumPy / numpy配列の作成 / 乱数配列の作成 / Generator.noncentral_chisquare – 非心カイ二乗分布から乱数配列を作成する方法

Generator.noncentral_chisquare – 非心カイ二乗分布から乱数配列を作成する方法

このエントリーをはてなブックマークに追加
Tweet

Generator.noncentral_chisquareは、NumPyで非心カイ二乗分布から乱数配列を生成するための、randomモジュールのジェネレータメソッドです。

非心カイ二乗分布は、カイ二乗分布を拡張した確率分布です。後でヒストグラムで示しますが、非心度が小さいほどカイ二乗分布に近くなり、非心度が大きいほど正規分布に近づきます。

なおカイ二乗分布については以下で解説しています。

  • Generator.chisquare – カイ二乗分布から乱数配列を生成

このページでは、この非心カイ二乗分布から乱数配列を取得するGenerator.noncentral_chisquareについて解説します。

目次

  • 1. 書式
  • 2. サンプルコード
  • 3.まとめ

1. 書式

Generator.noncentral_chisquare

書き方:

Generator.noncentral_chisquare(df, nonc, size=None)

パラメーター:

df: float or array_like of floats
自由度(>0)
nonc: float or array_like of floats
非心度
size: int or tuple of ints, optioal
出力する配列のshape。例えば、(m, n, k)を渡せば、shape(m, n, k)の乱数配列を生成。デフォルト値のNoneで、dfとnoncが共にスカラーの場合は乱数を1つ返す。その他の場合は、np.broadcast(df, nonc).sizeの乱数配列を取得。

戻り値: 

out: ndarray or scalar
指定したパラメータの非心カイ二乗分布から乱数を取得

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 0x7FF3AD39A318

こうして作成したジェネレータオブジェクト rng に対して、Generator.noncentral_chisquareを呼び出します。

In [2]:
rng.noncentral_chisquare(3, 20, 5)
Out[2]:
array([ 9.55565346, 21.20280344, 24.31675248, 18.87213734, 17.68534281])

ヒストグラムでこの分布を描いてみましょう。

In [3]:
import matplotlib.pyplot as plt
values = plt.hist(rng.noncentral_chisquare(3, 20, 100000),
                  bins=200, density=True)
plt.show()

以下のヒストグラムで示している通り、非心度が非常に小さい場合、分布はカイ二乗分布とほとんど同じになります。

In [4]:
plt.figure()
values = plt.hist(rng.noncentral_chisquare(3, .0000001, 100000),
                  bins=np.arange(0., 25, .1), density=True)
values2 = plt.hist(rng.chisquare(3, 100000),
                   bins=np.arange(0., 25, .1), density=True)
plt.plot(values[1][0:-1], values[0]-values2[0], 'ob')
plt.show()

以下のヒストグラムでは、非心度が非常に大きい場合のものです。左右対象の正規分布に近いものになっていることがわかります。

In [5]:
plt.figure()
values = plt.hist(rng.noncentral_chisquare(3, 100, 100000),
                  bins=200, density=True)
plt.show()

3.まとめ

以上のように、Generator.noncentral_chisquareは、非心カイ二乗分布から乱数配列を生成するジェネレータメソッドです。

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

このエントリーをはてなブックマークに追加
Tweet

Filed Under: 乱数配列の作成

moriyama

Previous Post: « Generator.negative_binomial – 負の二項分布から乱数を作成
Next Post: Generator.noncentral_f – 非心F分布から乱数配列を作成する方法 »

Reader Interactions

コメントを残す コメントをキャンセル

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

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

最初のサイドバー

サイト内検索

コンテンツ

  • Python
  • NumPy
  • 線形代数

目次

  • 1. 書式
  • 2. サンプルコード
  • 3.まとめ

Copyright © 2021 ·