ポイント: NumPyはさまざまな統計関数と分布を提供し、実用的なアプリケーションのためのサンプルを生成します。主要な分布には、正規、ワイブル、ポアソン、二項、一様が含まれ、それぞれ特定の統計分析に合わせて調整されています。
- NumPyはサイコロを振ったり、行列の長さをシミュレートするなど、現実世界のイベントをシミュレートできます。
- 統計関数は、定義された分布からのサンプリングを通じて現象の分析を容易にします。
NumPyは多くの統計分布をサポートしています。これは、さまざまな使用ケースからサンプルを生成できることを意味します。たとえば、NumPyは統計的に以下のことを予測するのに役立ちます:
- サイコロのゲームで7が出る確率(つまり、勝つ)
- 誰かが車にひかれる可能性
- あなたの車が故障する可能性
- チェックアウトカウンターで並ぶ人数
私たちは例を通じて説明します。
ランダム性と実世界
NumPyの関数は確率を計算するものではありません。代わりに、統計の確率分布からサンプルを引き出し、曲線を生成します。曲線は急で狭いものから広いものまで、または時間とともに小さな値に迅速に到達することがあります。
そのパターンは統計の種類によって異なります:
- 正規
- ワイブル
- ポアソン
- 二項
- 一様
- その他
現実世界のほとんどの現象は真にランダムです。たとえば、近視、不器用さ、物忘れを除外すると、誰かが車にひかれる確率はすべての人に対して等しくなります。
正規分布はこれを反映しています。
プログラミング言語でrandom() 関数を使用すると、正規分布から選択することを意味します。サンプルは平均として知られるいくつかの中間点の周りをうろうろする傾向があります。そして、観察の変動性は分散と呼ばれます。名前が示すように、変動が大きい場合は分散が大きくなります。
これらの分布を見てみましょう。
正規
正規分布の引数は:
- locは平均です
- scaleは分散の平方根、つまり標準偏差です
- sizeはサンプルサイズまたは試行回数です。400は400のランダム数を生成することを意味します。私たちは(400,)と書きますが、400と書いてもよいです。これは、値が1次元以上である可能性があることを示しています。ここでは単に数字を選んでおり、立方体や他の次元のいかなる種類でもありません。
ワイブル
ポアソン
二項
一様
import numpy as np
import matplotlib.pyplot as plt
arr = np.random.normal(loc=0,scale=1,size=(400,))
plt.plot(arr)
この中で、数字は平均0の周りをうろうろしています。
ワイブルは予防保守アプリケーションで最も頻繁に使用されます。基本的には時間に対する故障率です。トラック部品のような機械に関しては、これは故障までの時間と呼ばれます。製造業者は計画目的で公表します。
ワイブル分布には形状とスケールのパラメータがあります。トラックの例を続けると:
- 形状は、時間の経過とともにコンポーネントが故障する可能性の高さ、または曲線の急さです。
- NumPyはスケール分布を必要としません。代わりに、単純にワイブル値をスケールで掛けてスケール分布を決定します。
import numpy as np
import matplotlib.pyplot as plt
shape=5
arr = np.random.weibull(shape,400)
plt.hist(arr)
このヒストグラムはユニークな観察の数、または頻度分布を示しています:
ポアソンは、ある期間内に行列にいる人々の特定の数の確率です。
たとえば、スーパーマーケットの行列の長さはポアソン分布によって支配されています。それを知っていれば、行列が短くなるまで買い物を続けることができ、待っている必要はありません。それは、行列の長さが変動し、時間とともに大きく変動するからです。1日中同じ長さではありません。だから、買い物をするか、列で待つのではなく店をうろうろしてください。
import matplotlib.pyplot as plt
arr = np.random.poisson(2,400)
plt.plot(arr)
ここでは、行列の長さが8と0の間で変動しています。数の関数は確率を返しません。これは観察を返し、つまりワイブル統計曲線の対象となる数を選択することを意味します。
二項はサイコロを振るような離散的な結果です。
クラップスのゲームを見てみましょう。サイコロを2つ振り、7が出ると勝ちます。次のように7を出すことができます:
- 1,6
- 2,5
- 3,4
- 4,3
- 5,2
- 6,1
したがって、勝つ方法は6通りです。6*6*36の可能性があります。したがって、勝つ確率は6/16=⅙です。
サイコロを400回振るシミュレーションを行うには、次のようにします:
import numpy as np
import matplotlib.pyplot as plt
arr = np.random.binomial(36,1/6,400)
plt.hist(arr)
400回の試行で、2つの6が約3回振られました。
一様分布は高い範囲と低い範囲の間で均等な確率で変動します。
import numpy as np
import matplotlib.pyplot as plt
arr = np.random.uniform(-1,0,1000)
plt.hist(arr)
関連する読み物
Pandasガイド
これらの投稿は私自身の見解であり、必ずしもBMCの立場、戦略、または意見を代表するものではありません。