Digamos que há elementos divididos em dois grupos ( e ). A variância do primeiro grupo é e a variância do segundo grupo é . Os próprios elementos são assumidas ser desconhecido mas sei os meios e .
Existe uma maneira de calcular a variância combinada ?
A variância não precisa ser imparcial, portanto o denominador é e não .
Respostas:
Use as definições de média
e variação da amostra
(o último termo entre parênteses é o estimador de variância imparcial, geralmente calculado por padrão no software estatístico) para encontrar a soma dos quadrados de todos os dados . Vamos ordenar os índices i para que i = 1 , … , n designe elementos do primeiro grupo e i = n + 1 , … , n + m designe elementos do segundo grupo. Divida a soma dos quadrados por grupo e expresse novamente as duas partes em termos de variações e médias dos subconjuntos dos dados:xi i i=1,…,n i=n+1,…,n+m
A solução algébrica para em termos de outras quantidades (conhecidas) produzσ2m+n
fonte
sqrt(weighted.mean(u^2 + rho^2, n) - weighted.mean(u, n)^2)
wheren
,u
andrho
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.)
fonte
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:
fonte
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))
returns1.414214
rather than1
. Your example needs to usesqrt(9/10)*sd(x)
in place ofsd(x)
. Interpreting "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)