Generator.standard_t – t分布から乱数配列を作成する方法

Generator.standard_tは、標準t分布(スチューデントのt分布)から乱数配列を生成するジェネレータメソッドです。

t分布は、双曲線分布の特別なケースです。自由度が大きくなるほど、標準正規分布に近づいていきます。標準正規分布については以下のページで解説しています。

t検定は、データが正規分布のものであるという仮定に基づいており、標本の平均が実際の平均に対する精度の高い予測となっているかを検証することができます。

このページでは標準t分布から乱数配列を生成するGenerator.standard_tについて解説します。

目次

1. 書式

Generator.standard_t

書き方:

Generator.standard_t(df, size=None)

パラメーター:

df: float or array_like of floats
自由度(>0)
size: int or tuple of ints, optional
出力する配列のshape。(m, n, k)を渡すと、shape(m, n, k)の乱数配列を生成する。デフォルト値Noneで、dfがスカラーの場合は1つの乱数の値を返す。それ以外の場合はnp.array(df).sizeの乱数配列を返す。

戻り値: 

out: ndarray or scalar
パラメータを設定した標準t分布から乱数配列を生成。

Notes

標準t分布の確率密度関数は次の通りです。

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

こうして作成したジェネレータオブジェクト rng に対して、Generator.standard_tを呼び出すことによって、標準t分布から乱数配列を取得することができます。

第一引数にdf(自由度)、第二引数にsizeを渡します。

In [2]:
rng.standard_t(10, 5)
Out[2]:
array([ 0.33112768, -0.47599315, -0.20256511, -0.97345674, -1.31429871])

応用例

11人の女性の1日当たりのエネルギー摂取量(kJ)が以下の通りだったとします。

In [3]:
intake = np.array([5260., 5470, 5640, 6180, 6390, \
                   6515, 6805, 7515, 7515, 8230, 8770])

彼女たちのエネルギーの摂取量は、推奨摂取量の7725kJから逸脱しているでしょうか。

ここでは自由度10とします。標本の平均は推奨摂取量の95%側に位置するでしょうか。

In [4]:
s = rng.standard_t(10, size=100000)
np.mean(intake)
Out[4]:
6753.636363636364
In [5]:
intake.std(ddof=1)
Out[5]:
1142.1232221373727

t統計量の計算のために、ddofパラメータを不偏値に設定します。つまり、標準偏差の除数が自由度N-1になります。

In [6]:
t = (np.mean(intake)-7725)/(intake.std(ddof=1)/np.sqrt(len(intake)))
import matplotlib.pyplot as plt
h = plt.hist(s, bins=100, density=True)

片側t検定において、t統計量は分布の中でどこまで離れているでしょうか。

In [7]:
np.sum(s<t) / float(len(s))
Out[7]:
0.00926

結果、p値は約0.009でした。つまり、帰無仮説は99%の確率で真であるということです。

3. まとめ

以上のように、Generator.standard_tは、t分布から乱数配列を生成するジェネレータメソッドです。

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

Python初心者におすすめのプログラミングスクール

「未経験からでもPythonを学べるプログラミングスクールを探しているけど、色々ありすぎてわからない」なら、次の3つのプログラミングスクールから選んでおけば間違いはありません。

Aidemy Premium:全くの初心者ができるだけ効率よく短期間で実務的に活躍できるAI人材になることを目的とした講座。キャリアカウンセリングや転職エージェントの紹介などの転職支援も充実しており、受講者の転職成功率が高い。

AIジョブカレPythonの基本をおさえた人が、実際に機械学習やディープラーニングを活用できるようになるための講座。転職補償型があるなどキャリア支援の内容が非常に手厚く、講師の質も最高クラス。コスパ最高。Python初心者用の対策講座もある。

データミックスプログラミング経験者のビジネスマンが、更なるキャリアアップのためにデータの処理方法を学んでデータサイエンティストになるための講座。転職だけでなく起業やフリーランスとして独立する人も多い。Python初心者用の対策講座もある。

特に、あなたが以下のような目標を持っているなら、この中から選んでおけば間違いはないでしょう。

・未経験からPythonエンジニアとして就職・転職したい
・AIエンジニアやデータサイエンティストとしてキャリアアップしたい
・起業やフリーランスを視野に入れたい

理由は「Python初心者のためのおすすめプログラミングスクール3選」で解説しています。



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

この記事を書いた人

コメント

コメントする

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

目次
閉じる