У меня есть оценка MLE, написанная в GAUSS, которую я пытаюсь перекодировать в R. Я не использую и не использую сам GAUSS (и не имею доступа к Это). В коде есть строка, которая немного запутывает меня.Преобразование кода GAUSS в R
В проверенном коде 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), и это то, что пытается выполнить простая функция.
Любые комментарии или предложения приветствуются!
Это не проблема, о которой вы спрашиваете, но в GAUSS это выглядит так: 'm' определяется как количество строк в' y', но в R вы делаете 'm' количество строк в' x '. – Gregor
Спасибо, да, функция выборки является адаптацией кода GAUSS (не слова для слова реплики). Они имеют несколько разных матриц, подобных этому в большой программе, поэтому я случайно смешанные переменные, но проблема остается, если я вернусь и изменил ее обратно с x на y. – Tony