Esempio n. 1
0
    def loglike(self,data,trunc=None):
        warn('untested')
        T = len(data)
        if trunc is None:
            trunc = T
        # make a temporary states object to make sure no data gets clobbered
        s = states.hsmm_states(T,self.state_dim,self.obs_distns,self.dur_distns,
                self.trans_distn,self.init_state_distn,trunc=trunc)
        s.obs = data
        possible_durations = np.arange(1,trunc + 1,dtype=np.float64)
        aDl = np.zeros((T,self.state_dim))
        aDsl = np.zeros((T,self.state_dim))
        for idx, dur_distn in enumerate(self.dur_distns):
            aDl[:,idx] = dur_distn.log_pmf(possible_durations)
            aDsl[:,idx] = dur_distn.log_sf(possible_durations)

        s.aBl = s.get_aBl(data)
        betal, betastarl = s.messages_backwards(np.log(self.transition_distn.A),aDl,aDsl,trunc)
        return np.logaddexp.reduce(np.log(self.initial_distn.pi_0) + betastarl[0])
Esempio n. 2
0
 def generate(self,T,keep=True):
     tempstates = states.hsmm_states(T,self.state_dim,self.obs_distns,self.dur_distns,
             self.trans_distn,self.init_state_distn,trunc=self.trunc)
     return self._generate(tempstates,keep)
Esempio n. 3
0
 def add_data(self,data):
     self.states_list.append(states.hsmm_states(len(data),self.state_dim,self.obs_distns,self.dur_distns,
         self.trans_distn,self.init_state_distn,trunc=self.trunc,data=data))