####Data munging here

###Parametric Bayes
#Shout out to Cam Davidson-Pilon

## Example fully worked model using toy data
## Adapted from http://blog.yhat.com/posts/estimating-user-lifetimes-with-pymc.html

alpha = pm.Uniform("alpha", 0,20) 
beta = pm.Uniform("beta", 0,20) 
obs = pm.Weibull('obs', alpha, beta, value = df["time_to_convert"], observed = True )
obs.random
@pm.potential
def censorfactor(obs=obs): 
    if np.any(obs>23 ): 
        return -100000
    else:
        return 0

mcmc = pm.MCMC([alpha, beta, obs, censorfactor ] )
mcmc.sample(5000, burn = 0)

pm.Matplot.plot(mcmc)
mcmc.trace("alpha")[:]

"""
Explanation: The first step in any data analysis is acquiring and munging the data
An example data set can be found at:
   https://jakecoltman.gitlab.io/website/post/pydata/
Download the file output.txt and transform it into a format like below where the event column should be 0 if there's only one entry for an id, and 1 if there are two entries:
End date = datetime.datetime(2016, 5, 3, 20, 36, 8, 92165)
id,time_to_convert,age,male,event,search,brand
End of explanation
"""


#### Fit to your data here

#### Plot the distribution of the median

"""
Explanation: Problems: 
1 - Try to fit your data from section 1 
2 - Use the results to plot the distribution of the median

Note that the media of a Weibull distribution is:
$$β(log 2)^{1/α}$$
End of explanation
"""


#### Adjust burn and thin, both paramters of the mcmc sample function

#### Narrow and broaden prior

"""
Explanation: Problems:
4 - Try adjusting the number of samples for burning and thinnning
5 - Try adjusting the prior and see how it affects the estimate
End of explanation
"""


#### Different distributions

#### Hypothesis testing

"""
Explanation: Problems:
6 - Try using different distributions
7 - Bonus - try testing whether the median is greater than 14
End of explanation
"""


### Fit a cox proprtional hazards model

"""
Explanation: If we want to look at covariates, we need a new approach.  We'll use Cox proprtional hazards.  More information available at https://jakecoltman.gitlab.io/website/post/cox_proportional_hazard/
To fit in python we use the module lifelines:
http://lifelines.readthedocs.io/en/latest/
End of explanation
"""


#### Plot baseline hazard function

#### Predict

#### Plot survival functions for different covariates

#### Plot some odds

"""
Explanation: Once we've fit the data, we need to do something useful with it.  Try to do the following things:
1 - Plot the baseline survival function

2 - Predict the functions for a particular set of features

3 - Plot the survival function for two different set of features

4 - For your results in part 3 caculate how much more likely a death event is for one than the other for a given period of time
End of explanation
"""


#### BMA Coefficient values

#### Different priors

"""
Explanation: Model selection
Difficult to do with classic tools (here)
Problem:
1 - Calculate the BMA coefficient values

2 - Try running with different priors
End of explanation
"""


