def propose(self): sig = pm.utils.value(self.stochastic.parents['sig']) mu = pm.utils.value(self.stochastic.parents['mu']) delta = pm.rmv_normal_chol(0*mu, sig) beta = np.minimum(1, self.proposal_sd * self.adaptive_scale_factor) bsig = beta*sig sb2 = np.sqrt(1-beta**2) self.stochastic.value = (self.stochastic.value - mu)*sb2+beta*delta+mu xp,x = self.stochastic.value, self.stochastic.last_value self._hastings_factor = pm.mv_normal_chol_like(x,(xp-mu)*sb2+mu,bsig) - pm.mv_normal_chol_like(xp,(x-mu)*sb2+mu,bsig)
def propose(self): dev = pm.rmv_normal_chol(np.zeros(self.stochastic.value.shape), self.L.value) dev *= self.adaptive_scale_factor self.stochastic.value = self.stochastic.value + dev
map_utils.exportAscii2(lon_ax, lat_ax, np.ma.masked_array(cov2,mask=np.zeros((500,500))), 'cov2.asc') # Make fake data lon = np.random.uniform(-1,1,size=N) lat = np.random.uniform(-1,1,size=N) t = np.zeros(N) x = np.vstack((lon,lat,t)).T cov1 = gencirc(x,r1) cov2 = gencirc(x,r2) M = c1*cov1+c2*cov2 S = pm.gp.FullRankCovariance(pm.gp.cov_funs.exponential.aniso_geo_rad, amp=.5, scale=.08, inc=.5, ecc=.5).cholesky(x[:,:2]) y = pm.rmv_normal_chol(M,S.T)+np.random.normal(N)*.1 z = pm.flib.invlogit(y) lo_age = np.ones(N)*2 up_age = np.ones(N)*10 n = np.random.randint(10,500,size=N) pos = pm.rbinomial(n, z) neg = n-pos data_file = np.rec.fromarrays([pos,neg,lo_age,up_age,lon,lat,t,cov1,cov2],names='pos,neg,lo_age,up_age,lon,lat,t,cov1,cov2') # where_0 = np.where(M==0) # where_1 = np.where(M==1) # where_n1 = np.where(M==-1) #