Em R, c (3,1,0) * c (2,0,1) == c (6,0,0). Este não é um produto escalar e não é um produto cruzado. Primeiro, qual é o nome desse produto e, segundo, ele funciona no WinBUGS, OpenBUGS e / ou JAGS?
Em R, c (3,1,0) * c (2,0,1) == c (6,0,0). Este não é um produto escalar e não é um produto cruzado. Primeiro, qual é o nome desse produto e, segundo, ele funciona no WinBUGS, OpenBUGS e / ou JAGS?
Respostas:
Martyn Plummer ressalta que isso é implementado no JAGS, que eu perdi ao ler o manual. Do capítulo 5:
Funções escalares que recebem argumentos escalares são automaticamente vetorizadas. Eles também podem ser chamados quando os argumentos são matrizes com dimensões ou escalares conformes. Assim, por exemplo, o escalar pode ser adicionado à matriz usando
B <- A + c
em vez da forma mais detalhada
D <- dim(A) for (i in 1:D[1]) for (j in 1:D[2]) { B[i,j] <- A[i,j] + c } }
Para fazer a multiplicação por elementos, basta fazer um loop for nessas linguagens e pronto! Eu usei para loops no WinBUGS sem problemas.
Aliás, a multiplicação por elementos de dois vetores de comprimento igual é chamada de produto Hadamard (também conhecido como produto de Schur).