2015-04-12 74 views
3

我有以下的值:如何计算两个值的差值,包括R中的标准偏差?

x <- c(20.00740, 38.108416, 56.832884) #x0 of peaks 
sx <- c(0.1435, 0.011667, 0.027201) # std. error of x0 

欲计算与错误传播各峰之间的差。我应该收到两个差异值与标准。错误。我如何在R中做到这一点?

干杯, 克里斯

回答

5

对于随机变量X和Y使用的事实,E(XY)= EX - EY,SD(X)= SQRT(VAR(X))和VAR(XY)= VAR (X)+ var(Y)。最后一个等式假设X和Y不相关。现在,如果我们标记峰A,B,C,则存在A-B,A-C和B-C这三个差值,而不是2(如果区分A-B和B-A等,则存在6个差值)。它们在下面的xxss矩阵的上(或下)三角形中计算。 xx[upper.tri(xx)]ss[upper.tri(xx)]会提取上三角值。

xx <- outer(x, x, "-"); xx 
##   [,1]  [,2]  [,3] 
## [1,] 0.00000 -18.10102 -36.82548 
## [2,] 18.10102 0.00000 -18.72447 
## [3,] 36.82548 18.72447 0.00000 

ss <- sqrt(outer(sx^2, sx^2, "+")) * !diag(length(sx)); ss 
##   [,1]  [,2]  [,3] 
## [1,] 0.0000000 0.14397350 0.14605528 
## [2,] 0.1439735 0.00000000 0.02959752 
## [3,] 0.1460553 0.02959752 0.00000000 
+0

谢谢,这很有帮助! – Kris