Tôi đang thử một mô hình rất đơn giản: lắp một Bình thường trong đó tôi cho rằng tôi biết độ chính xác và tôi chỉ muốn tìm giá trị trung bình. Mã dưới đây có vẻ phù hợp với Bình thường một cách chính xác. Nhưng sau khi khớp, tôi muốn lấy mẫu từ mô hình, tức là tạo dữ liệu mới tương tự với data
biến của tôi . Tôi biết tôi có thể sử dụng trace("mean")
để lấy mẫu cho biến trung bình. Nhưng làm thế nào tôi có thể lấy mẫu mới từ chính mô hình?
Tôi đã xem các tài liệu, ví dụ: http://pymc-devs.github.io/pymc/database.html#accessing-sampling-data . Tôi cũng đã xem xét một vài ví dụ, ví dụ như thảm họa khai thác và một số từ sổ ghi chép Lập trình Xác suất, và không đề cập đến điều này. Tôi (ít nhiều là người mới bắt đầu MCMC) mong đợi rằng việc lấy mẫu từ mô hình được trang bị là toàn bộ vấn đề! Tôi đang thiếu gì?
from pymc import *
data = np.array([-1, 0, 4, 0, 2, -2, 1, 0, 0, 2, 1, -3, -1, 0, 0, 1, 0, 1])
mean = Uniform("mean", -4, 4)
precision = 2.0**-2
obs = Normal("obs", mean, precision, value=data, observed=True)
model = Model( {"mean": mean, "obs": obs})
mcmc = MCMC(model)
mcmc.sample(10000, 1000, 1)
# I can get samples for the "mean" variable
mean_samples = mcmc.trace("mean")[:]
hist(mean_samples)
# but how can I do the equivalent of mcmc.trace("obs")?