예제 #1
0
    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)
예제 #2
0
    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)
예제 #3
0
 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
예제 #4
0
파일: test.py 프로젝트: apatil/generic-mbg
    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)
#