A generative, predictive model for menstrual cycle lengths that accounts for potential self-tracking artifacts in mobile health data