Priors on stellar contributions

One thing I’ve wondered about for a while is the extent that priors on SSP model contributions affect modeled star formation histories. Previous experience suggests not much at all unless the prior is highly constraining. To be a little more specific in my current workflow I normalize the SSP model spectra to have average flux values of 1 in (approximately) the V band, and also adjust the galaxy fluxes in the same way. In the Stan model the stellar contribution parameters are declared as a simplex, that is a vector with non-zero elements summing to 1. That makes the parameter values the fractional contributions to the (unreddened) galaxy flux at V. My current working code doesn’t provide an explicit prior for the stellar parameters, but they have an implicit proper prior of a uniform distribution on the appropriate dimensional simplex. More technically the prior is a Dirichlet distribution with all concentration parameters equal to 1. Note the marginal distributions aren’t uniform, but they are all the same. One implication of that is that a typical draw from the prior1Stan doesn’t sample from the prior even for initialization, but of course the prior influences the posterior through Bayes’ rule. will have jumps in the star formation rate at exactly the times where the width of the age bins jump, a problem that I’ve noted several times before.

A possible solution to this problem is simply to alter the prior to encourage smoothly varying star formation rate rather than smoothly varying light contributions. It turns out I’ve been feeding my Stan code the data I need to do that: the initial mass in a given model SSP is inversely proportional to the normalization factor applied to the spectrum, and the star formation rate is just the mass divided by the time interval assigned to the SSP. Both of those quantities are passed as data to the Stan model even though they weren’t used in any way previously. I added just 3 lines to the code to change the prior on the stellar contributions. In the “transfored data” section

norm_sfr = 1.0 ./ (dT .* norm_st);
norm_sfr = norm_sfr / mean(norm_sfr);

defines the reweighting of the prior, which is written in the model section as

    target += dirichlet_lupdf((b_st_s .* norm_sfr)/sum(b_st_s .* norm_sfr)|rep_vector(1., nt*nz)); 

If I did this right the prior is completely agnostic to any star formation history, whereas the previous implicit prior was completely agnostic to any run of light contributions.

The modified code compiled without complaint and there’s no discernible difference in either execution time or convergence diagnostics.

I’ve only run this on one set of galaxy data, from MaNGA plateifu 8565-3703 (mangaid 1-92735). This is one of Schawinski’s “blue early type galaxies,” chosen mostly because the data were binned to just 34 spectra so a complete set of model runs only took a few hours. And, as seen below the other things that don’t change are the modeled star formation histories.

I need to do some more validation exercises, but it appears my long ago conclusion that the choice of prior on the star formation history has little effect was correct. The data dominates the model outcome through the likelihood.

Update

Since I hit publish a few days ago I realized two things. First, the weights I applied to the stellar contributions to “encourage” a smoothly varying star formation rate were inverted. What I should have used was:

transformed data {
  vector[nt*nz] norm_sfr = (dT .* norm_st) / mean(dT .* norm_st);
}

The second thing I realized is this makes no difference at all given the form of the prior. The transformation simply maps a point on the simplex to another point on the simplex that has exactly the same probability density since by construction the prior is uniform on the simplex.

So, it should have been expected, and it’s a good thing that it in fact happened that the model runs produced the same results. What happens if I use the following prior, with the weights supplying the parameters for the Dirichlet?

target += dirichlet_lupdf(b_st_s | norm_sfr);

This failed to sample almost always. I’m not entirely sure why, but I suspect this turns a problem with relatively simple geometry at least with regards to the prior to one with a complex and troublesome geometry.

This little experiment actually told me nothing about the effect of priors on model star formation histories. Two of the priors are actually the same, and the third fails for reasons that aren’t completely clear. I may experiment with different forms of prior. I’m still, of course, looking for a new SSP model library.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.