Vektormultiplikation in BUGS und JAGS

9

In R ist c (3,1,0) * c (2,0,1) == c (6,0,0). Dies ist kein Punktprodukt und kein Kreuzprodukt. Erstens, wie heißt dieses Produkt und zweitens funktioniert es in WinBUGS, OpenBUGS und / oder JAGS?

Jack Tanner
quelle
2
Dies ist nur eine elementweise Multiplikation. Ich bin nicht sicher, ob es in WinBUGS, OpenBUGS oder JAGS funktioniert.
normal

Antworten:

3

Im Gegensatz zu JAGS führen WinBUGS und OpenBUGS diese Form der Vektorisierung nicht durch. Sie müssen eine Schleife schreiben und jedes Element 'von Hand' berechnen, wie oben beschrieben.

Gast
quelle
4

Martyn Plummer weist darauf hin, dass dies in JAGS implementiert ist, was ich beim Lesen des Handbuchs vermisst habe. Ab Kapitel 5:

Skalarfunktionen mit skalaren Argumenten werden automatisch vektorisiert. Sie können auch aufgerufen werden, wenn die Argumente Arrays mit konformen Dimensionen oder Skalare sind. So kann beispielsweise der Skalar mit der Matrix hinzugefügt werdencA

B <- A + c

anstelle der ausführlicheren Form

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

Um eine elementweise Multiplikation durchzuführen, können Sie in diesen Sprachen einfach eine for-Schleife erstellen und fertig! Ich habe für Schleifen in WinBUGS ohne Probleme verwendet.

Neugierig
quelle
Welche Frage beantwortet diese Antwort? Es scheint hier nicht relevant zu sein.
whuber
@ Whubber, warum? Es ist absolut relevant. Ok, ich habe den Beitrag ein wenig geändert, um klarer zu sein.
Neugierig
Ja, eine for-Schleife habe ich bisher gemacht. Ich hatte mich nur gefragt, ob eine vektorisierte Version möglich ist.
Jack Tanner
Ich habe eine Feature-Anfrage an JAGS gesendet: sourceforge.net/tracker/…
Jack Tanner
Danke, Tomas. Jetzt sehe ich den Zusammenhang: Sie beantworten die Frage nicht wie angegeben, sondern bieten eine Problemumgehung an.
whuber
2

Im Übrigen wird die elementweise Multiplikation zweier Vektoren gleicher Länge als Hadamard-Produkt (auch bekannt als Schur-Produkt) bezeichnet.

Anders Gorm
quelle