Multiplicação de vetor em erros e JAGS


9

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?


2
isso é apenas multiplicação por elementos. Não tenho certeza se ele funciona no WinBUGS, OpenBUGS ou JAGS.
assumednormal

Respostas:


3

Diferentemente do JAGS, o WinBUGS e o OpenBUGS não fazem essa forma de vetorização; você precisa escrever um loop e calcular cada elemento 'manualmente', como descrito acima.


4

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 c pode ser adicionado à matriz A 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
  }
}

2

Para fazer a multiplicação por elementos, basta fazer um loop for nessas linguagens e pronto! Eu usei para loops no WinBUGS sem problemas.


Que pergunta esta resposta responde? Não parece ser relevante aqui.
whuber

@whubber, por quê? É perfeitamente relevante. Ok, mudei o post um pouco para ficar mais claro.
Curioso

Sim, um loop for é o que tenho feito até agora; Eu apenas me perguntei se uma versão vetorizada era possível.
Jack Tanner

Enviei uma solicitação de recurso ao JAGS: sourceforge.net/tracker/…
Jack Tanner

Obrigado, Tomas. Agora vejo a conexão: você não está respondendo à pergunta como indicado, mas está oferecendo uma solução alternativa.
whuber

2

Aliás, a multiplicação por elementos de dois vetores de comprimento igual é chamada de produto Hadamard (também conhecido como produto de Schur).

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.