Phép nhân vectơ trong BUGS và JAGS


9

Trong R, c (3,1,0) * c (2,0,1) == c (6,0,0). Đây không phải là sản phẩm chấm và nó không phải là sản phẩm chéo. Đầu tiên, tên của sản phẩm này là gì và thứ hai, nó có hoạt động trong WinBUGS, OpenBUGS và / hoặc JAGS không?


2
đây chỉ là phép nhân nguyên tố. Tôi không chắc nếu nó hoạt động trong WinBUGS, OpenBUGS hoặc JAGS.
giả định

Câu trả lời:


3

Không giống như JAGS, WinBUGS và OpenBUGS không thực hiện hình thức vector hóa này; bạn phải viết một vòng lặp và tính toán từng phần tử 'bằng tay', như được mô tả ở trên.


4

Martyn Plummer chỉ ra rằng điều này được thực hiện trong JAGS, điều mà tôi đã bỏ lỡ khi đọc hướng dẫn. Từ Ch 5:

Các hàm vô hướng lấy các đối số vô hướng được tự động véc tơ. Chúng cũng có thể được gọi khi các đối số là các mảng có kích thước phù hợp hoặc vô hướng. Vì vậy, ví dụ, vô hướng có thể được thêm vào ma trận bằng cách sử dụngAcA

B <- A + c

thay vì hình thức dài dòng hơn

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

2

Để thực hiện phép nhân phần tử, bạn chỉ cần tạo một vòng lặp for trong các ngôn ngữ đó và đó là nó! Tôi đã sử dụng các vòng lặp trong WinBUGS mà không gặp vấn đề gì.


Câu hỏi nào trả lời địa chỉ này? Nó dường như không có liên quan ở đây.
whuber

@whubber, tại sao? Nó là hoàn toàn phù hợp. Ok, tôi đã thay đổi bài đăng một chút để rõ ràng hơn.
Tò mò

Yup, một vòng lặp for là những gì tôi đã làm cho đến nay; Tôi chỉ tự hỏi nếu một phiên bản vector hóa là có thể.
Jack Tanner

Tôi đã gửi yêu cầu tính năng tới JAGS: sourceforge.net/tracker/ từ
Jack Tanner

Cảm ơn, anh bạn. Bây giờ tôi thấy kết nối: bạn không trả lời câu hỏi như đã nêu, nhưng bạn đang cung cấp một cách giải quyết.
whuber

2

Ngẫu nhiên, phép nhân phần tử của hai vectơ có độ dài bằng nhau được gọi là sản phẩm Hadamard (còn gọi là sản phẩm Schur).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.