4

いくつかの分布の標準偏差を計算し、2 つのパスから 2 つの異なる結果を得ようとしています。私にはあまり意味がありません-誰かがなぜこれが起こっているのか説明できますか?

scipy.stats.binom(189, 100/189).std()
6.8622115305451707

scipy.stats.tstd([1]*100 + [0]*89)
0.50047821327986164

これらの 2 つの数値が等しくないのはなぜですか?

4

1 に答える 1

7

基本的な理由は、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.stdorを使用して、母集団 (サンプルではない) std を取得することもできます。には自由度を選択するオプションがなく、常にサンプルを計算します。numpy.stdscipy.stats.tstdscipy.stats.tstdddofstd

于 2012-12-02T05:16:17.417 に答える