给定变量向量x [1:3]及其协方差矩阵V [1:3,1:3]的估计值,我寻求一种将线性或非线性函数应用于两个或更多变量的效用,例如:如
x [4] = x [1] + x [2]
x [5] = x [4] / x [3]。
x [4]和x [5]的估计值需要简单的代数。
包含线性变换x [4]的协方差矩阵简单地为(H * V * H'),其中
H =
| 1 0 0 |
| 0 1 0 |
| 0 0 1 |
| 1 1 0 |
增加x [5]的协方差矩阵可以用a和b的一阶泰勒级数近似估计:
H =
| 1 0 0 0 |
| 0 1 0 0 |
| 0 0 1 0 |
| 1 1 0 0 |
| 0 0 a b |
在概念上,我知道算法应该如何工作。但是需要大量的编码,特别是如果我在用户界面中尝试某种通用的方程解析器。
是否存在适用于此问题的现有R库?
答案 0 :(得分:0)
您可以使用numDeriv
包来数值估算渐变,
或者Ryacas
如果你想要一个准确的值。
library(numDeriv)
f <- function(x) c( x, x[1] + x[2], ( x[1] + x[2] ) / x[3] )
x0 <- c(1,1,1)
V <- diag(1:3)
J <- jacobian(f, x0)
J
# [,1] [,2] [,3]
# [1,] 1 0 0
# [2,] 0 1 0
# [3,] 0 0 1
# [4,] 1 1 0
# [5,] 1 1 -2
f(x0) # (Biased) estimator of the mean of f(X)
J %*% V %*% t(J) # Estimator of the variance of f(X)
包括粗麻布将给出更好的近似值。