Multiplication vectorielle dans BUGS et JAGS

9

Dans R, c (3,1,0) * c (2,0,1) == c (6,0,0). Ce n'est pas un produit scalaire et ce n'est pas un produit croisé. Premièrement, quel est le nom de ce produit, et deuxièmement, cela fonctionne-t-il dans WinBUGS, OpenBUGS et / ou JAGS?

Jack Tanner
la source
2
c'est juste une multiplication par élément. je ne sais pas si cela fonctionne dans WinBUGS, OpenBUGS ou JAGS.
supposé normal

Réponses:

3

Contrairement à JAGS, WinBUGS et OpenBUGS ne font pas cette forme de vectorisation; vous devez écrire une boucle et calculer chaque élément «à la main», comme décrit ci-dessus.

client
la source
4

Martyn Plummer souligne que cela est implémenté dans JAGS, ce que j'ai manqué lors de la lecture du manuel. À partir du chapitre 5:

Les fonctions scalaires prenant des arguments scalaires sont automatiquement vectorisées. Ils peuvent également être appelés lorsque les arguments sont des tableaux avec des dimensions conformes ou des scalaires. Ainsi, par exemple, le scalaire c peut être ajouté à la matrice A utilisant

B <- A + c

au lieu de la forme la plus verbeuse

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

Pour faire une multiplication par élément, vous pouvez simplement faire une boucle for dans ces langues et c'est tout! J'ai utilisé des boucles dans WinBUGS sans aucun problème.

Curieuse
la source
À quelle question cette réponse répond-elle? Cela ne semble pas pertinent ici.
whuber
@whubber, pourquoi? C'est parfaitement pertinent. Ok, j'ai un peu changé le post pour être plus clair.
Curieux
Oui, une boucle for est ce que j'ai fait jusqu'à présent; Je me demandais simplement si une version vectorisée était possible.
Jack Tanner
J'ai soumis une demande de fonctionnalité à JAGS: sourceforge.net/tracker/…
Jack Tanner
Merci, Tomas. Maintenant, je vois le lien: vous ne répondez pas à la question comme indiqué, mais vous proposez une solution de contournement.
whuber
2

Par ailleurs, la multiplication par élément de deux vecteurs de longueur égale est appelée le produit Hadamard (alias le produit Schur).

Anders Gorm
la source