いくつかの分布の標準偏差を計算し、2 つのパスから 2 つの異なる結果を得ようとしています。私にはあまり意味がありません-誰かがなぜこれが起こっているのか説明できますか?
scipy.stats.binom(189, 100/189).std()
6.8622115305451707
scipy.stats.tstd([1]*100 + [0]*89)
0.50047821327986164
これらの 2 つの数値が等しくないのはなぜですか?
基本的な理由は、2 つのまったく異なるものの標準偏差を取得していることです。あなたは何をするのか誤解していると思いますscipy.stats.binom
。ドキュメントから:
binom の確率質量関数は次のとおりです。
binom.pmf(k) = choose(n,k) * p**k * (1-p)**(n-k)
{0,1,...,n} の k に対して。
binom は形状パラメーターとして n と p を取ります。
を行うbinom(189, 100/189)
と、0 から 189 までの任意の値をとる分布を作成することになります。当然のことながら、この分布は、使用している他のサンプル データよりもはるかに大きな分散を持ち、0 または 1 の値に制限されています。
あなたが望むもののように見えますscipy.stats.binom(1, 100/189).std()
。ただし、サンプル データで取得した値とまったく同じ値を期待することはできません。これはbinom.std
、 が全体の分布の標準偏差を計算しているのに対し、他のバージョン ( scipy.stats.tstd([1]*100 + [0]*89)
) はサンプルのみの標準偏差を計算しているためです。 . サンプルのサイズを大きくすると (例: do scipy.stats.tstd([1]*1000 + [0]*890)
)、サンプルの標準偏差は取得元の値に近づきますbinom.std
。
の代わりにscipy.std
orを使用して、母集団 (サンプルではない) std を取得することもできます。には自由度を選択するオプションがなく、常にサンプルを計算します。numpy.std
scipy.stats.tstd
scipy.stats.tstd
ddof
std