Source code for pymcmcstat.procedures.PriorFunction

#!/usr/bin/env python2
# -*- coding: utf-8 -*-
"""
Created on Thu Jan 18 09:10:21 2018

Description: Prior function

@author: prmiles
"""
# Import required packages
import numpy as np

[docs]class PriorFunction: ''' Prior distribution functions. Attributes: * :meth:`default_priorfun` * :meth:`evaluate_prior` ''' def __init__(self, priorfun = None, mu = None, sigma = None): self.mu = mu self.sigma = sigma # Setup prior function and evaluate if priorfun is None: priorfun = self.default_priorfun self.priorfun = priorfun # function handle
[docs] @classmethod def default_priorfun(cls, theta, mu, sigma): ''' Default prior function. .. math:: \\pi_0(q) = \sum_{i=1}^N \\Big(\\frac{\\theta_i - \\mu_i}{\\sigma_i^2}\\Big)^2 Args: * **theta** (:class:`~numpy.ndarray`): Current parameter values. * **mu** (:class:`~numpy.ndarray`): Prior mean. * **sigma** (:class:`~numpy.ndarray`): Prior standard deviation. ''' # consider converting everything to numpy array - should allow for optimized performance n = len(theta) if mu is None: mu = np.zeros([n,1]) if sigma is None: sigma = np.ones([n,1]) pf = np.zeros(1) for ii in range(n): pf = pf + ((theta[ii]-mu[ii])*(sigma[ii]**(-1)))**2 return pf
[docs] def evaluate_prior(self, theta): ''' Evaluate the prior function. Args: * **theta** (:class:`~numpy.ndarray`): Current parameter values. ''' return self.priorfun(theta, self.mu, self.sigma)