'Create a proportional hazards regression model from a formula
and dataframe.
Parameters
formula : str or generic Formula object
The formula specifying the model
data : array-like
The data for the model. See Notes.
status : array-like
The censoring status values; status=1 indicates that an
event occured (e.g. failure or death), status=0 indicates
that the observation was right censored. If None, defaults
to status=1 for all cases.
entry : array-like
The entry times, if left truncation occurs
strata : array-like
Stratum labels.  If None, all observations are taken to be
in a single stratum.
offset : array-like
Array of offset values
subset : array-like
An array-like object of booleans, integers, or index
values that indicate the subset of df to use in the
model. Assumes df is a `pandas.DataFrame`
ties : string
The method used to handle tied times, must be either \'breslow\'
or \'efron\'.
missing : string
The method used to handle missing data
args : extra arguments
These are passed to the model
kwargs : extra keyword arguments
These are passed to the model with one exception. The
``eval_env`` keyword is passed to patsy. It can be either a
:class:`patsy:patsy.EvalEnvironment` object or an integer
indicating the depth of the namespace to use. For example, the
default ``eval_env=0`` uses the calling namespace. If you wish
to use a "clean" environment set ``eval_env=-1``.
Returns
model : PHReg model instance'

@classmethod
def from_formula(cls, formula, data, status=None, entry=None, strata=None, offset=None, subset=None, ties='breslow', missing='drop', *args, **kwargs):

    if isinstance(status, str):
        status = data[status]
    if isinstance(entry, str):
        entry = data[entry]
    if isinstance(strata, str):
        strata = data[strata]
    if isinstance(offset, str):
        offset = data[offset]
    import re
    terms = re.split('[+\\-~]', formula)
    for term in terms:
        term = term.strip()
        if (term in ('0', '1')):
            import warnings
            warnings.warn("PHReg    formulas    should    not    include    any    '0'    or    '1'    terms")
    mod = super(PHReg, cls).from_formula(formula, data, status=status, entry=entry, strata=strata, offset=offset, subset=subset, ties=ties, missing=missing, drop_cols=['Intercept'], *args, **kwargs)
    return mod
