我得到了一个用 GAUSS 编写的 MLE 估计器,我正试图将它重新编码到 R 中。我不使用,也从未使用过 GAUSS 本身(也无权访问它)。在代码中,有一行让我有点困惑。
在经过验证的 GAUSS 代码中,“输入”(部分注释)下有一行说明:
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 中),这就是简单函数试图做的事情。
非常感谢任何意见或建议!