Cooperation and noise in public goods experiments: applying the contribution function approach