Penggandaan vektor dalam BUGS dan JAGS

9

Dalam R, c (3,1,0) * c (2,0,1) == c (6,0,0). Ini bukan produk titik dan bukan produk lintas. Pertama, apa nama untuk produk ini, dan kedua, apakah itu berfungsi di WinBUGS, OpenBUGS, dan / atau JAGS?

Jack Tanner
sumber
2
ini hanya penggandaan elemen-bijaksana. Saya tidak yakin apakah itu berfungsi di WinBUGS, OpenBUGS, atau JAGS.
Diasumsikan normal

Jawaban:

3

Tidak seperti JAGS, WinBUGS dan OpenBUGS tidak melakukan bentuk vektorisasi ini; Anda harus menulis satu lingkaran, dan menghitung setiap elemen 'dengan tangan', seperti dijelaskan di atas.

tamu
sumber
4

Martyn Plummer menunjukkan bahwa ini diimplementasikan dalam JAGS, yang saya lewatkan saat membaca manual. Dari Ch 5:

Fungsi skalar yang mengambil argumen skalar secara otomatis di-vektor-kan. Mereka juga bisa dipanggil ketika argumen array dengan dimensi yang sesuai, atau skalar. Jadi, misalnya, skalar dapat ditambahkan ke matriks menggunakancA

B <- A + c

bukannya bentuk yang lebih verbose

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

Untuk melakukan perkalian elemen-bijaksana, Anda bisa membuat for for loop dalam bahasa tersebut dan hanya itu! Saya telah menggunakan loop di WinBUGS tanpa masalah.

Ingin tahu
sumber
Apa pertanyaan dari alamat balasan ini? Tampaknya tidak relevan di sini.
whuber
@ Whubber, mengapa? Ini sangat relevan. Ok, saya mengubah posting sedikit menjadi lebih jelas.
Penasaran
Yup, for for adalah apa yang telah saya lakukan sejauh ini; Saya hanya ingin tahu apakah versi vektor itu mungkin.
Jack Tanner
Saya telah mengirimkan permintaan fitur ke JAGS: sourceforge.net/tracker/…
Jack Tanner
Terima kasih, Tomas. Sekarang saya melihat hubungannya: Anda tidak menjawab pertanyaan seperti yang dinyatakan, tetapi Anda menawarkan solusi.
whuber
2

Kebetulan, perkalian elemen-bijaksana dari dua vektor dengan panjang yang sama disebut produk Hadamard (alias produk Schur).

Anders Gorm
sumber