0

给定变量向量 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 |

可以使用项 a 和 b 的一阶泰勒级数近似来估计添加 x[5] 的协方差矩阵:

H =

| 1 0 0 0 | 
| 0 1 0 0 |
| 0 0 1 0 |
| 1 1 0 0 |
| 0 0 a b |

在概念上,我知道算法应该如何工作。但这需要大量的编码,特别是如果我在用户界面中尝试某种通用方程解析器。

是否有任何现有的 R 库可以解决这个问题?

4

1 回答 1

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)

包括粗麻布将提供更好的近似值。

于 2013-07-28T14:54:43.740 回答