GAUSS で書かれた MLE 推定器を入手しましたが、これを R に再コーディングしようとしています。GAUSS 自体は使用していませんし、使用したこともありません (アクセス権もありません)。コードには、少し混乱する行があります。
検証済みの GAUSS コードには、「inputs」(コメントの一部) の下に次のような行があります。
invsig: scalar or m-by-m matrix with inverse of sigma
私はコードを少しずつ動作させることに取り組んでいますが、最初の質問は比較的単純なものです。
私を混乱させるGAUSSスニペットは次のとおりです。
...
local m, k, tobs, invsig
m = rows(y);k = rows(x); tobs = rows(dat)
invsig= eye(m)*invsig
...
これは単位行列に「入力」invsig を乗算したものであることは理解していますが、(コードに添付されたログ ファイルから) 動作するシミュレートされた例では、invsig のスカラー値を使用してプログラムを開始できます。IE: 初期値を invsig = 1 に設定
R では、これは機能しません。これを取得するための簡単な「テスト」コードを次に示します。
y.mat <- rep(rexp(3))
x.mat <- matrix(rexp(36), 12, 3)
myfct <- function(x,invsig){
m <- nrow(x)
invsig <- diag(m)%*%invsig
return(invsig)
}
t1 <- myfct(x.mat, 1) ##Non-conformable error
t2 <- myfct(x.mat, y.mat) ##Works
R で発生している不適合エラーを理解しています。問題は、GAUSS と R の間の変換で何か不足しているのでしょうか? オンラインのヘルプ マニュアルを読むと、GAUSS は個々の記号 (*/+-) を使用して行列演算を実行し、要素ごとに実行するには、「.」を追加します。各操作の前に。だから私には、GAUSS コードは ( %*%
R で) 行列乗算を行うように言っており、それが単純な関数がやろうとしていることです。
コメントや提案は大歓迎です!