Jak obliczyć wariancję zbiorczą dwóch lub więcej grup, biorąc pod uwagę znane wariancje grup, średnie i wielkości próbek?

32

Powiedzmy, że istnieje m+n elementów podzielonych na dwie grupy ( i ). Wariancja pierwszej grupy to a wariancja drugiej grupy to . Zakłada się, że same elementy są nieznane, ale znam środki i .mnσm2σn2μmμn

Czy istnieje sposób obliczenia łącznej wariancji ?σ(m+n)2

Wariancja nie musi być obiektywna, więc mianownik to a nie .(m+n)(m+n1)

użytkownik1809989
źródło
Kiedy mówisz, że znasz średnie i wariancje tych grup, czy są to parametry czy wartości próbek? Jeśli są to średnie próbki / wariancje, nie należy używać μ i σ ...
Jonathan Christensen
Właśnie użyłem symboli jako przedstawienia. W przeciwnym razie trudno byłoby wyjaśnić mój problem.
user1809989,
1
Dla przykładowych wartości zwykle używamy liter łacińskich (np. m i s ). Litery greckie są zwykle zarezerwowane dla parametrów. Użycie „poprawnych” (oczekiwanych) symboli pomoże ci wyraźniej komunikować się.
Jonathan Christensen
Nie martw się, odtąd będę to śledzić! Pozdrawiam
użytkownik1809989,
1
@Jathanathan Ponieważ nie jest to pytanie o próbki lub oszacowanie, można słusznie uznać, że i σ 2prawdziwą średnią i wariancją empirycznego rozkładu partii danych, tym samym uzasadniając konwencjonalne użycie liter greckich zamiast łacińskie litery, które się do nich odnoszą. μσ2
whuber

Odpowiedzi:

36

Użyj definicji średniej

μ1:n=1ni=1nxi

i wariancja próbki

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

(the last term in parentheses is the unbiased variance estimator often computed by default in statistical software) to find the sum of squares of all the data xi. Let's order the indexes i so that i=1,,n designates elements of the first group and i=n+1,,n+m designates elements of the second group. Break that sum of squares by group and re-express the two pieces in terms of the variances and means of the subsets of the data:

(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.

whuber
źródło
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.)

Reinstate Monica
źródło
-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
Dave Burton
źródło
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