Giả sử chúng tôi được đưa ra trước trên X (ví dụ: X ~ Gaussian) và toán tử chuyển tiếp y = f (x). Giả sử chúng tôi đã quan sát thêm y bằng thử nghiệm và thử nghiệm này có thể được lặp lại vô thời hạn. Đầu ra Y được giả định là Gaussian (Y ~ Gaussian) hoặc không có nhiễu (Y ~ Delta (quan sát)).Giải quyết các vấn đề nghịch đảo với PyMC
Làm cách nào để cập nhật thường xuyên mức độ hiểu biết chủ quan của chúng tôi về X với các quan sát? Tôi đã thử các mô hình sau đây với PyMC, nhưng có vẻ như tôi là thiếu một cái gì đó:
from pymc import *
xtrue = 2 # this value is unknown in the real application
x = rnormal(0, 0.01, size=10000) # initial guess
for i in range(5):
X = Normal('X', x.mean(), 1./x.var())
Y = X*X # f(x) = x*x
OBS = Normal('OBS', Y, 0.1, value=xtrue*xtrue+rnormal(0,1), observed=True)
model = Model([X,Y,OBS])
mcmc = MCMC(model)
mcmc.sample(10000)
x = mcmc.trace('X')[:] # posterior samples
Các sau không được hội tụ để xtrue.
Tôi biết f (x) không phải là một sự đánh dấu, nó được chọn vì lý do cụ thể đó. Tôi không thể thấy bất kỳ đối số nào cho MCMC thất bại với bản phân phối đầu vào này, theo như tôi biết, MCMC có thể lấy mẫu các bản phân phối đa phương thức phức tạp. – juliohm
Ồ, tôi đã hiểu rõ vấn đề của bạn, vấn đề là cách tôi cập nhật trước đó. Chỉ đơn giản bằng cách sử dụng phương thức pos.mean() và pos.var(), tôi giả định một giải pháp không đơn phương. Làm thế nào bạn sẽ giải quyết vấn đề này cho việc tìm kiếm cả 2 và -2? – juliohm
Nói cách khác, làm thế nào để đại diện cho phân phối không tham số với PyMC? Cho theo dõi, tạo ra một tệp PDF khớp với biểu đồ. – juliohm