J'ai mis en place le modèle de coupure binomiale suivant PyMC3:modèle binomial de coupure PyMC3 dépend fortement testVal
with pm.Model() as switchpoint_model:
switchpoint = pm.DiscreteUniform('switchpoint', lower=df['covariate'].min(), upper=df['covariate'].max())
# Priors for pre- and post-switch parameters
early_rate = pm.Beta('early_rate', 1, 1)
late_rate = pm.Beta('late_rate', 1, 1)
# Allocate appropriate binomial probabilities to years before and after current
p = pm.math.switch(switchpoint >= df['covariate'].values, early_rate, late_rate)
p = pm.Deterministic('p', p)
y = pm.Binomial('y', p=p, n=df['trials'].values, observed=df['successes'].values)
Il semble fonctionner très bien, sauf que les centres entièrement sur une valeur pour le point de commutation (999), comme indiqué ci-dessous.
Après analyse, il semble que les résultats obtenus pour ce modèle dépendent fortement de la valeur de départ (en PyMC3, « testVal »). Le ci-dessous montre ce qui se passe quand je mets la testVal = 750.
switchpoint = pm.DiscreteUniform('switchpoint', lower=gp['covariate'].min(),
upper=gp['covariate'].max(), testval=750)
-je obtenir des résultats différents de la même avec des valeurs de départ différentes supplémentaires.
Pour le contexte, c'est ce que mon jeu de données ressemble:
Mes questions sont les suivantes:
- est mon modèle en quelque sorte défini de façon incorrecte?
- Si c'est spécifié correctement, comment dois-je interpréter ces résultats? En particulier, comment comparer/sélectionner les résultats générés par différents tests? La seule idée que j'ai eu était d'utiliser WAIC pour évaluer la performance de l'échantillon ...