My name is Ben and I’m a self-taught programmer with no formal computer science training. A few years ago I gained the painful self-awareness that my scientific programming was shitty. I’m not saying it was wrong (I hope not) but it was just bad. I confused familiarity with my language of choice with proficiency. I had […]

# Tag archives: code

## A grammar of multi-panel scientific plots: initial thoughts

In common with many scientists, I have no formal training in computer science and my coding skills have been entirely self-taught. I’ve been coding for over a decade and a half, and I thought I was a relatively good programmer, but I had mistaken familiarity with expertise. And so recently I have been on a […]

## Bayesian analysis toolbox for delay discounting, version 1.3

Posterior predictive checks The toolbox now calculates 2 measures of “goodness of fit” of the models. This is a useful quantitative reassurance that the models describe the participant discounting behaviour better than chance. In turn, this is important when we come to deciding which (if any) data files we should exclude. You can go and […]

## Bayesian analysis toolbox for delay discounting, version 1.2

I’ve just released Version 1.2 of the toolbox ‘Bayesian analysis toolbox for delay discounting.’ The main feature of this release was the addition of new models. For example, you can now estimate discount rates (ignoring the magnitude effect). So you can obtain estimates of the discount rate k, which is very useful if your primary […]

## Probabilistic programming: a tentative first encounter

While I have some experience with probabilistic programming in the flavour of Bayesian Networks, and have published papers using them, I am interested in the super-class of generic probabilistic programs. That is, right now I am happy with conducting inference on Bayesian Networks, but I want to learn how to conduct inference on generic programs. As […]

## Slice sampling Matlab demo

So far we’ve had a look at rejection sampling and importance sampling. Here we take a quick look at slice sampling, although rather than implementing it ourselves, we will use the built in Matlab slicesample function. Using our parameter estimation example, we will use slice sampling to estimate the mean and sigma of some samples from […]

## useful tree command on mac

I found a simple way to produce tree-like listings of files/folders on the mac. This is a very useful tool to get an overview of some project code. You can install it simply (following instructions I found here). First, open a terminal and install Homebrew if you do not have it already. It’s a package […]

## Importance sampling Matlab demo

Importance sampling is related to rejection sampling, which I looked at in the last post. Here is a short demo. %% true probability distribution true_func = @(x) betapdf(x,1+1,1+10); %% Do importance sampling N = 10^6; % uniform proposal distribution x_samples = rand(N,1); proposal = 1/N; % evaluate for each sample target = true_func(x_samples); % calculate importance […]

## Rejection sampling Matlab demo

I’ve been using MCMC, but I’ve wanted to flesh out my knowledge and explore the space of sampling approaches a little more. One very simple, yet inefficient method, is rejection sampling. Here is a little Matlab example I put together after seeing how easy it was. %% true probability distribution true_func = @(x) betapdf(x,1+1,1+10); %% Do […]

## Pimp your research code using UML class diagrams

Ideally, all research code should be made available at the point of submitting a paper. I’ve found that the way I write my research code has changed for the better now that I’ve made a commitment to making it open. However it can somewhat opaque and time consuming to understand, so how can we help those wanting to review, use, […]

## Hierarchical Bayesian estimation and hypothesis testing for delay discounting tasks

I am happy to announce my 3rd paper of the year, accepted for publication in Behavior Research Methods. Following my initial foray into writing review papers (2 earlier this year), this is my first methods paper, and also my first contribution to higher-level decision making.

## Cognitive modelling 3: the importance of a script

One of the key things we must avoid is mess and confusion. In the last post I briefly covered one possible template for a research project. One of the reasons why cognitive modelling projects might be a little tricky is because you are not just using an off the shelf software package. For example, if […]

## Cognitive modelling 2: project structure

What we definitely want to do is avoid confusion and mess. Having a clear project structure and workflow has many advantages. While there is no one single correct way to organise a project, putting a bit of thought into it, and learning from past projects can help a lot. This is the workflow that works for […]

## A tutorial on Bayesian models of perception

Vincent, B. T. (2015) A tutorial on Bayesian models of perception, Journal of Mathematical Psychology, 66:103–114.

## Cognitive modelling 1: programming problems

This is the first post in a series exploring programming practice in cognitive modelling. While I have over a decade of experience in cognitive modelling, I am in no way an expert and have no formal computer science training. I am not an authority on this, I am feeling my way. Comments welcome. This post may […]

## Hello Python

Previously, I made the decision to transition away from Matlab towards Python. Converting over to a new language is a big deal and there are many questions and issues to be addressed. In the future I will get a bit more detailed and discuss how I set up and use my Python environment – there […]

## Energy efficient receptive field code

[UPDATE: February 2014] The files and instructions are now hosted on GitHub. Energy efficient receptive field code by Benjamin Vincent is licensed under a Creative Commons Attribution-Non-Commercial-Share Alike 3.0 Unported License. This minimal set of MATLAB functions will set up a simple neural network to learn receptive fields. These receptive fields minimise an energy function which involves a) […]