Функция умножения на выживание с фреймом данных nxk внутри функции - python - PullRequest
0 голосов
/ 09 марта 2020

В настоящее время я пытаюсь реализовать модель Cure в python, используя линии жизни. Рассмотрим приведенный ниже код, который сразу взят из https://lifelines.readthedocs.io/en/latest/jupyter_notebooks/Custom%20Regression%20Models.html.

from lifelines.fitters import ParametricRegressionFitter
from autograd import numpy as np
from lifelines.datasets import load_rossi
from autograd.scipy.special import expit

class CureModel(ParametricRegressionFitter):
_scipy_fit_method = "SLSQP"
_scipy_fit_options = {"ftol": 1e-10, "maxiter": 200}
_fitted_parameter_names = ["lambda_", "beta_", "rho_"]
def _cumulative_hazard(self, params, T, Xs):
    c = expit(np.dot(Xs["beta_"], params["beta_"]))
    lambda_ = np.exp(np.dot(Xs["lambda_"], params["lambda_"]))
    rho_ = np.exp(np.dot(Xs["rho_"], params["rho_"]))
    sf = np.exp(-(T / lambda_) ** rho_)
    return -np.log((1 - c) + c * sf)

cm = CureModel(penalizer=0.0)
rossi = load_rossi()
rossi["intercept"] = 1.0
covariates = {"lambda_": rossi.columns, "rho_": ["intercept"], "beta_": ['intercept', 'fin']}
cm.fit(rossi, "week", event_col="arrest", regressors=covariates, timeline=np.arange(250))

Предположим теперь, что я не хочу вычислять c с использованием функции logisti c, вместо этого передайте в него информационный блок вероятностей, которые уже были откалиброваны из случайного леса - вне функции. Как это можно сделать простым способом? Независимо от того, сколько я стараюсь, я всегда буду получать различные типы ошибок. Любая помощь будет высоко ценится!

...