计算Hessian的维度误差(最大可能性)

时间:2015-09-28 18:58:19

标签: r matrix hessian-matrix

鉴于我正在通过for循环强制使Hessian为8x8,为什么我会得到它是2x1的错误?

运行8x8 Hessian以在nx8回归数据集上生成maxLik。得到一个错误,即Hessian是2x1而不是8x8,即使这是在 Hessian [i,j]< - 中强制执行的。

x <- independent.variable.matrix.nby8
param <- c(1,1,1,1,1,1,1,1)

Hessian <- matrix(ncol=8,nrow=8)
hess.lik <- function(param) {
  loglambd <- x%*%param       
  lambd <- exp(loglambd)
  for (i in 1:8){
    for (j in 1:8){
      moment <- x[,i]*x[,j]
      return(dim(moment))
      Hessian[i,j] <- -sum(moment%*%lambd)
    } 
  }
}
  • 数据集x是nxk(4406x8)。
  • param(估计器的初始迭代,start = maxLik下的参数)向量是8个数字字符串,因此loglambda是(nxk)%*%(8x1)和nx1向量。正确?
  • 然后是nx1 * nx1,即nx1作为元素乘法。正确?
  • 并且Hessian的每个元素都应该是标量,因为它是一个求和的kx1向量(来自时刻%*%lambda的结果)。这部分代码是不一致的。

主要的qn是,即使部分不是正确的维度(可能),Hessian [i,j&lt; - -sum(vector)应该形成一个标量,通过{i,j}在1:8中循环应该强制8x8。为什么这不起作用?

0 个答案:

没有答案