pinskylab / dynamic_range_model

dynamic range models and forecast methods
2 stars 0 forks source link

choosing informative priors #8

Closed afredston closed 3 years ago

afredston commented 4 years ago

for spiny dogfish, a priority should be choosing informative priors, even if they are just constrained to reasonable orders of magnitude. this should help with parameter identifiability among the life stages for which we have little or no data. for cod (below), it was assumed that the average sizes at the two life stage transitions were known without error. the other rates were drawn from uniform distributions.

I think both of these lines of thought should probably be revisited for spiny dogfish. while it adds parameters to estimate, I'm not sure we can assume L_J and L_Y are known without error. further, I think uniform priors are increasingly discouraged in Bayesian methods because they can disproportionately weight extreme values relative to other distributions with some central tendency. not sure if that's applicable to ABC too, but worth discussing.

        L_0_theta    = np.random.uniform(0,4)#np.random.normal(0.4,0.3) #np.random.beta(2,2)
        L_inf_theta    =np.random.uniform(100, 180)
        L_J_theta=34
        L_Y_theta=68
        #np.random.uniform(0,1)#np.random.beta(2,2)
        Topt_theta =np.random.uniform(6,15)#np.random.normal(6.5,2) #np.random.uniform(1,12) #np.random.lognormal(1,1)
        width_theta  =np.random.uniform(1,2)#np.random.normal(2,1)
        ##np.random.lognormal(1,1)
        kopt_theta    =np.random.uniform(0.1,1)#np.random.normal(0.5,0.4)# np.random.u(0,1)
        xi_theta     =np.random.uniform(0,0.5/2)#np.random.normal(0.1,0.09) #np.random.normal(0,1)#np.random.normal(0,0.5)
        #r_theta     =np.random.uniform(0,1)
        m_J_theta    =np.random.uniform(0,0.1)#np.random.normal(0.04,0.04) # #np.random.beta(2,2)
        m_Y_theta    =np.random.uniform(0,0.1)#np.random.normal(0.05,0.04) #np.random.uniform(0,1) #np.random.beta(2,2)
        m_A_theta    =np.random.uniform(0,0.1)#np.random.normal(0.05,0.05)# np.random.uniform(0,1)#np.random.beta(2,2)
        K_theta= np.random.uniform(1,1000)
mpinsky commented 4 years ago

True, uniform priors weight extreme values pretty heavily, though that's less of an issue if the data are strongly informative. If the data aren't, then this does become a concern.

For the transition from small to large juveniles, the size is arbitrary and up to us. It doesn't have much bearing on the function of the model, though it would be nice to have roughly similar numbers of small and large juveniles.

The transition to adults is more important, since adults can reproduce. We don't have a prior on this parameter, but it is possible.

afredston commented 4 years ago

something to discuss philosophically about this project: how much we want to search for informative priors, to maybe set ourselves up for success with each individual species, vs. leave the weakly informative priors so the model gets developed as flexibly as possible. maybe a moot point since priors on some of these will be really hard to find.