2017-11-24 7 views
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 

答えて

0

このような簡単な解決策は、私はこれを掲載しているために少し恥ずかしいです。

par=c(0,0)は、データの列と一致するように変更する必要があります。ここでは1に変更されているはずです。

関連する問題