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?


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.


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
  }
}

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.


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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.