我正在尝试将Kruschke的某些代码改编成Stan,并且无法重现以下内容。
# JAGS code
for ( i in 1:NxBetweenLvl ) {
for ( j in 1:NxWithinLvl ) {
mBxW[i,j] <- ( sum( mSxBxW[1:NxSubjectLvl,i,j] ) / sum( mSxBxW[1:NxSubjectLvl,i,j]!=0 ) )
}
}
请注意,mSxBxW[,,]
是一个在上游定义的三维数组。
循环中的功能是什么?它是“ 1:NxSubectLvl
维度中的i
单元和j
中的mSxBxW[,,]
单元的总和除以非零单元总数 number 的总和在1:NxSubectLvl
和i
的{{1}}单元格中跨过?对吗?
我将如何在Stan中复制它?
如果我在Stan脚本的同一位置使用此代码...
j
...它引发错误
// Stan Code
for (i in 1:nGroup) {
for (j in 1:nCond) {
mGxC[i,j] = sum(mSxCxG[1:nSubj,i,j]) / sum( mSxCxG[1:nSubj,i,j]!=0 );
}
}
除了Binary infix operator != with functional interpretation logical_neq requires arguments or primitive type (int or real), found left type=real[], right arg type=int;
运算符可以在JAGS中使用而在Stan中不可用之外,对我而言这毫无意义。
答案 0 :(得分:1)
问题是0是整数,而矩阵中包含实数。
一种解决方法是将实变量定义为零并使用该变量:
class(DT$C) <- "list"
DT[, C := list(list(unlist(C))), iso]