Multiplicación de vectores en BUGS y JAGS


9

En R, c (3,1,0) * c (2,0,1) == c (6,0,0). Este no es un producto punteado y no es un producto cruzado. Primero, ¿cuál es el nombre de este producto, y segundo, funciona en WinBUGS, OpenBUGS y / o JAGS?


2
esto es solo multiplicación por elementos. No estoy seguro de si funciona en WinBUGS, OpenBUGS o JAGS.
asumido normal el

Respuestas:


3

A diferencia de JAGS, WinBUGS y OpenBUGS no realizan esta forma de vectorización; usted tiene que escribir un bucle, y calcular cada elemento 'a mano', como se describió anteriormente.


4

Martyn Plummer señala que esto se implementa en JAGS, lo que me perdí al leer el manual. De Ch 5:

Las funciones escalares que toman argumentos escalares se vectorizan automáticamente. También se pueden invocar cuando los argumentos son matrices con dimensiones conformes o escalares. Entonces, por ejemplo, el escalar se puede agregar a la matriz usandocA

B <- A + c

en lugar de la forma más detallada

D <- dim(A)
for (i in 1:D[1])
  for (j in 1:D[2]) {
    B[i,j] <- A[i,j] + c
  }
}

2

Para hacer una multiplicación basada en elementos, puede hacer un bucle for en esos idiomas y ¡listo! He usado bucles en WinBUGS sin problemas.


¿Qué pregunta responde esta respuesta? No parece ser relevante aquí.
whuber

@ whubber, ¿por qué? Es perfectamente relevante. Ok, cambié un poco la publicación para ser más claro.
Curioso

Sí, un bucle for es lo que he estado haciendo hasta ahora; Me preguntaba si era posible una versión vectorizada.
Jack Tanner

He enviado una solicitud de función a JAGS: sourceforge.net/tracker/…
Jack Tanner

Gracias Tomás. Ahora veo la conexión: no está respondiendo la pregunta como se indicó, pero está ofreciendo una solución alternativa.
whuber

2

Por cierto, la multiplicación por elementos de dos vectores de igual longitud se denomina producto Hadamard (también conocido como producto Schur).

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.