gpt4 book ai didi

r - GAUSS 到 R 代码转换

转载 作者:行者123 更新时间:2023-12-02 09:14:15 24 4
gpt4 key购买 nike

我得到了一个用 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 中的%*%),而这就是简单函数尝试执行的操作。

非常感谢任何意见或建议!

最佳答案

你的问题是你不能将 3x3 矩阵与 1x1 矩阵进行矩阵乘法。我会推荐类似的东西

myfct <- function(x,invsig){
if (is.matrix(invsig)) return(invsig)
m <- nrow(x)
return(diag(invsig, nrow = m))
}

已编辑 在第一种情况下,我留下了乘以 diag(m) 的内容,但是如果 invsig 已经存在,当然这是不必要的一个矩阵。

关于r - GAUSS 到 R 代码转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16802256/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com