0
Rを使用して間接的な比較を行うためにいくつかの重みを計算しようとしています。私は平均を中心にしていることを反映するためにコードを少し変更しました。ただし、このコードは実行されません。行列の次元が最適化されているR
私はこれがa1
の2つの列を1つではなく持っていると考えていますが、これを変更する方法は実際にはありません。私は行列に0と1の列を追加しようとしましたが、これで正しい結果が得られるかどうかはわかりません。
もちろん、これはまったく問題ではないかもしれませんが、他に何が原因か分かりません。私はコードを含んでおり、どんなアドバイスも感謝します。
# Objective function
objfn <- function(a1, X){
sum(exp(X %*% a1))
}
# Gradient function
gradfn <- function(a1, X){
colSums(sweep(X, 1, exp(X %*% a1), "*"))
}
X.EM.0 = data$A-age.mean
# Estimate weights
print(opt1 <- optim(par = c(0,0), fn = objfn, gr = gradfn, X = X.EM.0, method = "BFGS"))
a1 <- opt1$par