Creates model latent variables

        Returns
        ----------
        None (changes model attributes)

def _create_latent_variables(self):
        """ Creates model latent variables

        Returns
        ----------
        None (changes model attributes)
        """

        # TODO: There must be a cleaner way to do this below

        # Create VAR latent variables
        for variable in range(self.ylen):
            self.latent_variables.add_z(self.data_name[variable] + ' Constant', fam.Normal(0,3,transform=None), fam.Normal(0,3))
            other_variables = np.delete(range(self.ylen), [variable])
            for lag_no in range(self.lags):
                self.latent_variables.add_z(str(self.data_name[variable]) + ' AR(' + str(lag_no+1) + ')', fam.Normal(0,0.5,transform=None), fam.Normal(0,3))
                for other in other_variables:
                    self.latent_variables.add_z(str(self.data_name[other]) + ' to ' + str(self.data_name[variable]) + ' AR(' + str(lag_no+1) + ')', fam.Normal(0,0.5,transform=None), fam.Normal(0,3))

        starting_params_temp = self._create_B_direct().flatten()

        # Variance latent variables
        for i in range(self.ylen):
            for k in range(self.ylen):
                if i == k:
                    self.latent_variables.add_z('Cholesky Diagonal ' + str(i), fam.Flat(transform='exp'), fam.Normal(0,3))
                elif i > k:
                    self.latent_variables.add_z('Cholesky Off-Diagonal (' + str(i) + ',' + str(k) + ')', fam.Flat(transform=None), fam.Normal(0,3))

        for i in range(0,self.ylen):
            for k in range(0,self.ylen):
                if i == k:
                    starting_params_temp = np.append(starting_params_temp,np.array([0.5]))
                elif i > k:
                    starting_params_temp = np.append(starting_params_temp,np.array([0.0]))

        self.latent_variables.set_z_starting_values(starting_params_temp)