Empirical Priors

class fitr.inference.empiricalpriors.EmpiricalPriors(loglik_func, params, name='EmpiricalPriorsModel')

Inference procedure with empirical priors

Attributes:
name : str

Name of the model being fit. We suggest using the free parameters.

loglik_func : function

The log-likelihood function to be used for model fitting

params : list

List of parameters from the rlparams module

nparams : int

Number of free parameters in the model

param_rng : list

List of strings denoting the parameter ranges (see rlparams module for further details)

Methods

fit(data, n_iterations=1000, opt_algorithm=’BFGS’) Runs model-fitting algorithm
logposterior(x, states, actions, rewards) Computes the log-poseterior probability
__printfitstart(self, n_iterations, algorithm, verbose) (Private) function to print optimization info to console
__printupdate(self, opt_iter, subject_i, posterior_ll, verbose) (Private) function to print iteration info to console
fit(data, n_iterations=1000, c_limit=0.001, opt_algorithm='L-BFGS-B', verbose=True)

Runs the maximum a posterior model-fitting with empirical priors.

Parameters:
data : dict

Dictionary of data from all subjects.

n_iterations : int

Maximum number of iterations to allow.

c_limit : float

Threshold at which convergence is determined

opt_algorithm : {‘L-BFGS-B’}

Algorithm to use for optimization. Only works at present with L-BFGS-B.

verbose : bool

Whether to print progress of model fitting

Returns:
ModelFitResult

Representation of the model fitting results

logposterior(x, states, actions, rewards)

Represents the log-posterior probability function

Parameters:
x : ndarray(nparams)

Array of parameters for single subject

states : ndarray

Array of states encountered by subject. Number of rows should reflect number of trials. If the task is a multi-step per trial task, then the number of columns should reflect the number of steps, unless a custom likelihood function is used which does not require this.

actions: ndarray

Array of actions taken by subject. Number of rows should reflect number of trials. If the task is a multi-step per trial task, then the number of columns should reflect the number of steps, unless a custom likelihood function is used which does not require this.

rewards : ndarray

Array of rewards received by the subject. Number of rows should reflect number of trials. If there are multiple steps at which rewards are received, they should be stored in different columns, unless a custom likelihood funciton is used which does not require this.

Returns:
float

Log-posterior probability