言うがある要素は、二つのグループに分け(および)。第1グループの分散であり、及び第2グループの分散であり、。要素自体は不明であると想定されているが、私は知っている手段と。
複合分散計算する方法がある?
分散は不偏である必要はないので、分母はあり、ありません。
言うがある要素は、二つのグループに分け(および)。第1グループの分散であり、及び第2グループの分散であり、。要素自体は不明であると想定されているが、私は知っている手段と。
複合分散計算する方法がある?
分散は不偏である必要はないので、分母はあり、ありません。
回答:
平均の定義を使用する
および標本分散
(括弧内の最後の項は、統計ソフトウェアでデフォルトで計算されることが多い不偏分散推定量です)、すべてのデータx iの平方和を見つけます。i = 1 、… 、nが最初のグループの要素を示し、i = n + 1 、… 、n + mが2番目のグループの要素を示すように、インデックスiを並べてみましょう。その平方和をグループごとに分割し、データのサブセットの分散と平均に関して2つの部分を再表現します。
Algebraically solving this for in terms of the other (known) quantities yields
Of course, using the same approach, can be expressed in terms of the group means, too.
An anonymous contributor points out that when the sample means are equal (so that ), the solution for is a weighted mean of the group sample variances.
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.
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):
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.)
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,
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
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)