既知のグループ分散、平均、およびサンプルサイズを指定して、2つ以上のグループのプールされた分散を計算する方法は?


32

言うがあるm+n要素は、二つのグループに分け(mおよびn)。第1グループの分散であり、σm2及び第2グループの分散であり、σn2。要素自体は不明であると想定されているが、私は知っている手段μmμn

複合分散計算する方法があるσ(m+n)2

分散は不偏である必要はないので、分母は(m+n)あり、(m+n1)ありません。


これらのグループの平均と分散を知っていると言うとき、それらはパラメーターまたはサンプル値ですか?彼らはサンプルの手段がある場合は/あなたは使用しないでください差異σ ...μσ
ジョナサン・クリステンセン

シンボルを表現として使用しました。そうでなければ、私の問題を説明するのは難しいでしょう。
user1809989

1
サンプル値については、通常ラテン文字を使用します(例:およびs)。通常、ギリシャ文字はパラメーター用に予約されています。「正しい」(予想される)記号を使用すると、コミュニケーションがより明確になります。ms
ジョナサンクリステンセン

心配いりません、これからフォローします!乾杯
-user1809989

1
これはサンプルや見積もりについての質問ではありませんので@ジョナサン、1は合法的との見方を取ることができσ 2がある、それによってギリシャ文字の従来の使用を正当化するのではなく、平均値とデータのバッチの経験分布の分散それらを参照するラテン文字。μσ2
whuber

回答:


36

平均の定義を使用する

μ1:n=1ni=1nxi

および標本分散

σ1:n2=1ni=1n(xiμ1:n)2=n1n(1n1i=1n(xiμ1:n)2)

(括弧内の最後の項は、統計ソフトウェアでデフォルトで計算されることが多い不偏分散推定量です)、すべてのデータx iの平方和見つけますi = 1 nが最初のグループの要素を示し、i = n + 1 n + mが2番目のグループの要素を示すように、インデックスiを並べてみましょう。その平方和をグループごとに分割し、データのサブセットの分散と平均に関して2つの部分を再表現します。xiii=1,,ni=n+1,,n+m

(m+n)(σ1:m+n2+μ1:m+n2)=i=11:n+mxi2=i=1nxi2+i=n+1n+mxi2=n(σ1:n2+μ1:n2)+m(σ1+n:m+n2+μ1+n:m+n2).

Algebraically solving this for σm+n2 in terms of the other (known) quantities yields

σ1:m+n2=n(σ1:n2+μ1:n2)+m(σ1+n:m+n2+μ1+n:m+n2)m+nμ1:m+n2.

Of course, using the same approach, μ1:m+n=(nμ1:n+mμ1+n:m+n)/(m+n) can be expressed in terms of the group means, too.


An anonymous contributor points out that when the sample means are equal (so that μ1:n=μ1+n:m+n=μ1:m+n), the solution for σm+n2 is a weighted mean of the group sample variances.


4
The "homework" tag doesn't mean the question is elementary or stupid: it's used for self-study questions that can even include research-level queries. It distinguishes routine, more or less context-free questions (of the sort that might ordinarily grace the math forum) from specific applied questions.
whuber

I cannot understand your first passage: n(σ2+μ2)=(xμ)2+nμ2=?x2 In particular I get [(xμ)2+μ2]=[x22xμ] which requires μ=0 Am I missing something? Could you please explain this?
DarioP

2
@Dario
(xμ)2+nμ2=(x22μx+nμ2)+nμ2=x22nμ2+2nμ2=x2.
whuber

Oh yes, I did a stupid sign mistake in my derivation, now is clear, thanks!!
DarioP

4
I guess this can be extended to an arbitrary number of samples as long as you have the mean and variance for each. Calculating pooled (biased) standard deviation in R is simply sqrt(weighted.mean(u^2 + rho^2, n) - weighted.mean(u, n)^2) where n, u and rho are equal-length vectors. E.g. n=c(10, 14, 9) for three samples.
Jonas Lindeløv

3

I'm going to use standard notation for sample means and sample variances in this answer, rather than the notation used in the question. Using standard notation, another formula for the pooled sample variance of two groups can be found in O'Neill (2014) (Result 1):

spooled2=1n1+n21[(n11)s12+(n21)s22+n1n2n1+n2(x¯1x¯2)2].

This formula works directly with the underlying sample means and sample variances of the two subgroups, and does not require intermediate calculation of the pooled sample mean. (Proof of result in linked paper.)


-3

Yes, given the mean, sample count, and variance or standard deviation of each of two or more groups of samples, you can exactly calculate the variance or standard deviation of the combined group.

This web page describes how to do it, and why it works; it also includes source code in Perl: http://www.burtonsys.com/climate/composite_standard_deviations.html


BTW, contrary to the answer given above,

n(σ2+μ2)    i=1nxi2

See for yourself, e.g., in R:

> x = rnorm(10,5,2)
> x
 [1] 6.515139 8.273285 2.879483 3.624233 6.199610 3.683164 4.921028 8.084591
 [9] 2.974520 6.049962
> mean(x)
[1] 5.320502
> sd(x)
[1] 2.007519
> sum(x**2)
[1] 319.3486
> 10 * (mean(x)**2 + sd(x)**2)
[1] 323.3787

it's because you forgot the n-1 factor, e.g. try with n*(mean(x)**2+sd(x)**2/(n)*(n-1))
user603

user603, what on earth are you talking about?
Dave Burton

3
Dave, mathematics is a more reliable teacher than software. In this case R computes the unbiased estimate of the standard deviation rather than the standard deviation of the set of numbers. For instance, sd(c(-1,1)) returns 1.414214 rather than 1. Your example needs to use sqrt(9/10)*sd(x) in place of sd(x). Interpreting "σ" as the SD of the data and "μ" as the mean of the data, your BTW remark is wrong. A program demonstrating this is n <- 10; x <- rnorm(n,5,2); m <- mean(x); s <- sd(x) * sqrt((n-1)/n); m2 <- sum(x^2); c(lhs=n * (m^2 + s^2), rhs=m2)
whuber
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.