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?
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?
Réponses:
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 peut être ajouté à la matrice 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 } }
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.
Par ailleurs, la multiplication par élément de deux vecteurs de longueur égale est appelée le produit Hadamard (alias le produit Schur).