您将随机变量的添加与样本的串联混淆了(很容易做到,我花了一段时间才意识到为什么您的代码不起作用!)。所以对于独立随机变量和你可以写,注意系数是平方。这将(大约)适用于以下样本XYVar(aX+bY)=a2Var(X)+b2Var(Y)
set.seed(1)
n <- 100
mu = 1
sigma = 1
a<-rnorm(n,mu,sigma)
b<-rnorm(n,mu,sigma)
weight_a <- 1/4
weight_b <- 3/4
sqrt(sd(a)^2*weight_a^2+sd(b)^2*weight_b^2)
[1] 0.7526849
sd(weight_a*a + weight_b*b)
[1] 0.7524718
对于样本的串联,您需要应用方差公式,针对您使用样本的事实进行适当调整,即乘以。下面用 R 代码说明了这一点。Var(X)=E(X2)−(E(X))2n/(n−1)
suma2 = sum(a^2)
sumb2 = sum(b^2)
suma = sum(a)
sumb = sum(b)
sumc2 = suma2 + sumb2
sumc = suma + sumb
nc = n + n
(sumb2/n - (sumb/n)^2) * n/(n-1)
[1] 0.9175323
sd(b)^2
[1] 0.9175323
sumc2 = suma2 + sumb2
sumc = suma + sumb
(sumc2/nc - (sumc/nc)^2) * nc/(nc-1)
[1] 0.8632217
sd(c(a,b))^2
[1] 0.8632217
当您连接加权系列时,可以自然地合并权重以给出公式。
Var(w)=(w2aSaa+w2bSbbna+nb−(waSa+wbSbna+nb)2)×na+nbna+nb−1,
其中是加权的长度为 a} 和由加权的长度为的系列形成的系列。的平方和,是系列的和,对于也是如此。wanawabnbwbSaaaSaab
这在以下 R 代码中进行了说明。
sumw2 = weight_a^2*suma2 + weight_b^2*sumb2
sumw = weight_a*suma + weight_b*sumb
(sumw2/nc - (sumw/nc)^2) * nc/(nc-1)
[1] 0.3314697
sd(c(weight_a*a, weight_b*b))^2
[1] 0.3314697
请注意,在第一种情况下,除此之外,我必须使用相同大小的系列。为方便起见,我继续使用同一系列。但是用于第二种情况的代码,连接,应该适用于不同大小的系列。
但是,正如@Peter Ellis 在他的回答中所说,您最终试图解决的问题可能类似于双样本 t 检验,您假设这两个样本来自同一个总体,因此每个样本的潜在方差样品是一样的。在这种情况下,您想要估计总体方差。合并方差的公式是众所周知的,可以在维基百科上找到(维基百科也提供了 对多个样本的概括)。