R 计算Hessian(最大似然)的尺寸误差
鉴于我正在通过for循环强制Hessian成为8x8,为什么我会得到错误,认为它是2x1R 计算Hessian(最大似然)的尺寸误差,r,matrix,hessian-matrix,R,Matrix,Hessian Matrix,鉴于我正在通过for循环强制Hessian成为8x8,为什么我会得到错误,认为它是2x1 在nx8回归器数据集上运行8x8 Hessian以生成maxLik。得到Hessian是2x1而不是8x8的错误,即使这是在Hessian[i,j]中强制的,也可以使问题重现。代码需要定义x和param。如果您收到的错误是抱怨您的hessian是2x1,可能是因为您正在执行返回(dim(moment))-您的hess的返回值。lik函数将只是时刻的维度,在运行完两个嵌套的for循环之后,当您可能想要返回He
在nx8回归器数据集上运行8x8 Hessian以生成maxLik。得到Hessian是2x1而不是8x8的错误,即使这是在Hessian[i,j]中强制的,也可以使问题重现。代码需要定义
x
和param
。如果您收到的错误是抱怨您的hessian是2x1
,可能是因为您正在执行返回(dim(moment))
-您的hess的返回值。lik
函数将只是时刻的维度,在运行完两个嵌套的for循环之后,当您可能想要返回Hessian
时。您是对的,Marius,这应该是print(dim(moment))
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)
}
}
}