for ループを介して Hessian を 8x8 に強制しているのに、2x1 であるというエラーが表示されるのはなぜですか?
8x8 Hessian を実行して、nx8 リグレッサー データセットで maxLik を生成します。Hessian[i,j]<- で強制されているにもかかわらず、Hessian が 8x8 ではなく 2x1 であるというエラーが発生します。
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 (推定量の最初の反復、maxLik の下の start= 引数) ベクトルは 8 個の数値文字列であるため、loglambda は (nxk)%*%(8x1) nx1 ベクトルです。右?
- モーメントはnx1 * nx1、つまり要素の乗算としてnx1です。右?
- ヘッセ行列の各要素は、合計された kx1 ベクトルであるため、スカラーである必要があります (瞬間 %*% ラムダからの結果)。コードのこの部分は準拠していません。
主な qn は、パーツが正しい次元でなくても (おそらく)、Hessian[i,j <- -sum(vector) はスカラーを形成する必要があり、1:8 ループの {i,j} を介して8x8。なぜそれが機能しないのですか?