I was reading through the Latent Variable implementation of GP and found that when a GP prior is specified it is done for certain function input values
f = gp.prior("f", X=X)
My question is it is possible to specify more information for the GP? I have one set of data with uncertainty that i want to use as a initial guess for the GP and then another set of data which is the observable for the likelihood function. In my head it would look something like
Okay i came up with an idea that might work, what if i specify the a mean function which is the value of the data? It is possible to specify custom mean function in pymc3, so i could specify the data.
So i have tried to define a new class for the mean function, but since i have never worked with classes before i am struggling. I was hoping i could modify the constant example to take in an array instead
class Data(pm.gp.mean.Mean):
def __init__(self, c=y):
Mean.__init__(self)
self.c = c
def __call__(self, X):
return tt.alloc(1.0, X.shape[0]) * self.c
or may be just use the def__call directly
def __call__(self, y):
return tt.alloc(1.0, y.shape[0]) * y
Where y is the y values of my data. The mean function does not seem to register at all
AttributeError: module 'pymc3.gp.mean' has no attribute 'Data'
I don’t think that’s quite what you want. The testval is just the initial value, which will be forgotten as soon as you start sampling/optimizing, irrespective of how much data there is. The “prior guess” should be encoded as a mean function, which is what estimates will shrink to in the absence of data.
Okay, the thing is for my use case i do not want/need the estimates to shrink to the mean function in the absence of any data. While the prior in this case is an initial guess, i still want it to “wander off” if that guess is wrong.
HI。I also readed Latent Variable implementationof GP ,and I try to run it from the Web page. However, some trouble happend.like my image. Do you know this cause.