Comment calculer la variance regroupée de deux groupes ou plus à partir des variances de groupe connues, des moyennes et de la taille des échantillons?

32

Supposons qu'il existe éléments divisés en deux groupes ( et ). La variance du premier groupe est et la variance du deuxième groupe est . Les éléments eux-mêmes sont supposés inconnus, mais je connais les moyens et .m+nmnσm2σn2μmμn

Existe-t-il un moyen de calculer la variance combinée ?σ(m+n)2

La variance ne doit pas nécessairement être impartiale, le dénominateur est donc et non .(m+n)(m+n1)

utilisateur1809989
la source
Lorsque vous dites connaître les moyennes et les variances de ces groupes, s'agit-il de paramètres ou de valeurs d'échantillon? Si ce sont des moyennes / variances d'échantillon, vous ne devriez pas utiliser μ et σ ...
Jonathan Christensen
Je viens d'utiliser les symboles comme une représentation. Sinon, il aurait été difficile d'expliquer mon problème.
user1809989
1
Pour les exemples de valeurs, nous utilisons généralement des lettres latines (par exemple, et s ). Les lettres grecques sont généralement réservées aux paramètres. L'utilisation des symboles "corrects" (attendus) vous aidera à communiquer plus clairement. ms
Jonathan Christensen
Pas de soucis, je vais suivre ça à partir de maintenant! À la vôtre
user1809989
1
@ Jonathan Comme il ne s’agit ni d’échantillons ni d’estimations, on peut légitimement penser que et σ 2 sont la moyenne réelle et la variance de la distribution empirique d’un lot de données, justifiant ainsi l’utilisation classique des lettres grecques lettres latines pour se référer à eux. μσ2
whuber

Réponses:

36

Utilisez les définitions de moyenne

μ1:n=1ni=1nxi

et variance d'échantillon

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

(le dernier terme entre parenthèses est l’ estimateur de variance non biaisé souvent calculé par défaut dans un logiciel statistique) pour trouver la somme des carrés de toutes les données . Ordonnons les indices i pour que i = 1 , , n désigne les éléments du premier groupe et i = n + 1 , , n + m désigne les éléments du deuxième groupe. Casser cette somme de carrés par groupe et reformuler les deux éléments en termes de variance et de moyenne des sous-ensembles de données: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).

Résoudre algébriquement ceci pour en fonction des autres quantités (connues)σm+n2

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

Bien sûr, en utilisant la même approche, peut également être exprimé en termes de moyenne de groupe.μ1:m+n=(nμ1:n+mμ1+n:m+n)/(m+n)


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
la source
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
la source
-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
la source
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