ドキュメントには、混乱を招く可能性のある間違いがあるようです。
通常、コール シグネチャのパラメータ名は次のとおりです。
numpy.random.pareto(a, size=None)
指定された詳細とパラメーター名を一致させます。
Parameters
----------
shape : float, > 0.
Shape of the distribution.
size : tuple of ints
Output shape. If the given shape is, e.g., ``(m, n, k)``, then
``m * n * k`` samples are drawn.
a
しかし、最初のパラメーターは両方と呼ばれていることがわかりますshape
。目的の形状を関数の最初の引数として渡して、数値の分布を取得しsize
ます (それらはtuple
ではなく numpyarray
です)。
2 番目のパラメーター (ウィキペディアでは x mと呼ばれる) を変更する必要がある場合は、ドキュメントの例のように、すべての値に追加するだけです。
Examples
--------
Draw samples from the distribution:
>>> a, m = 3., 1. # shape and mode
>>> s = np.random.pareto(a, 1000) + m
したがって、下限を実装するのは簡単です: に下限を使用するだけですm
:
lower = 10 # the lower bound for your values
shape = 1 # the distribution shape parameter, also known as `a` or `alpha`
size = 1000 # the size of your sample (number of random values)
下限のある分布を作成します。
x = np.random.pareto(shape, size) + lower
ただし、パレート分布は上からの境界ではないので、切り捨てようとすると本当に切り捨てられた分布になってしまい、まったく同じものではないので注意が必要です。形状パラメーターが 1 よりはるかに大きい場合、分布は x – (a+1)のように代数的に減衰するため、大きな値はそれほど多くありません。
上限を実装することを選択した場合、簡単な方法は、通常のサンプルを生成してから、制限を超える値を削除することです。
upper = 20
x = x[x<upper] # only values where x < upper
しかし、サンプルのサイズは (おそらく) 小さくなっています。必要なサイズになるまで、新しい値を追加し続ける (そして大きすぎる値を除外する) こともできますが、最初に十分な大きさにしてからsize
、それらのみを使用する方が簡単です。
x = np.random.pareto(shape, size*5/4) + lower
x = x[x<upper][:size]