I would really appreciate if someone can help me figure this out as I have been working on it for few days now and I don't know what I'm missing that it's not working. Basically, my goal is to sample survival times from a weibull distribution when I have a time-varying covariate in my model. My problem is when I fit a Cox PH model to my simulated data, I can't get the coefficients I used to simulate my data.
Here is how I simulate data. Perhaps there is something fundamental missing from my reasoning as I had checked the code over and over again and there is no error with the code:
Suppose $t \sim Weibull(\tau, \lambda_i)$ where $\lambda_i = \beta_0 + \beta_1 X_i(t)$
$X_i(t)$ is my time varying covariate and is basically of the form:
$$X_i(t) = \alpha^{(0)}_i + \alpha^{(1)}_i t + \alpha^{(2)}_i t^2$$
$\alpha$ coefficients above are indexed by i as every subject has it's own trajectory for X(t)
As I said, $t \sim Weibull(\tau, \lambda)$. I use the parameterization below for weibull:
$$f(t|\tau, \lambda_i) = \tau t^{\tau - 1} exp(\lambda_i - exp(\lambda_i) t^\tau)$$
From this, I can easily get survival function as: $$S(t|\tau, \lambda_i) = 1-F(t | \tau, \lambda_i) = exp(-exp(\lambda_i) t^{\tau})$$
where: $X_i(t) = \alpha^{(0)}_i + \alpha^{(1)}_i t + \alpha^{(2)}_i t^2$
Ok, here is what I do. For every subject:
1) I randomly sample $u \sim uniform(0,1)$
2) I then set $u = S(t|\tau, \lambda_i)$ where: $$S(t|\tau, \lambda_i) = exp(-exp(\beta_0 + \beta_1 X_i(t)) t^{\tau})$$ where $$X_i(t) = \alpha^{(0)}_i + \alpha^{(1)}_i t + \alpha^{(2)}_i t^2$$
3) I then simply find the root (t) in $u = S(t|\tau, \lambda_i)$ and call it my survival time.
Am I missing something? does this make sense? If so, how come when I fit my CoxPH model, I cannot get back my true $\beta_1$ where I used to simulate data?