Generating by inverting function
On Sep 30, 2012, at 5:34 AM, R. Michael Weylandt wrote:
On Sun, Sep 30, 2012 at 10:51 AM, Salma Wafi <salmawafi76 at yahoo.com> wrote:
Dear All, Thank you very much for your kind and response. Actually, S(t) = exp(b* F(t)) represent one of survival models, where F(t) is known cumulative distribtion function. So, that is why I need to generate the survival times T based on this model. Then for generating time I have to invert S(t) as following, Since, S(t) has uniform distribution on (0,1)
No, it does NOT in general or in any of the scenarios you have painted have a uniform distribution. It does, of course, have a range of [0,1].
so we can write that U= exp(b*F(t)), where U is uniform (0,1). Now to generat the time t, we do log(U)= b* F(t) (log(U))/ b = F(t) and then t = F((log(U))/b)^(-1). Now in case F(t) is cdf of Lognormal distribution or Weibull distribution My Question is how we can get the inverse of the cumulative distribution F(t) in R?. Is there any package in R can help to invert some function especially if this function is pdf or cdf?.
I repeat myself: if you have fit F() to a log-normal or Weibull distribution, just use qlnorm() or qweibull() included in base R. If you still need to fit those distributions, use MASS::fitdistr.
And I repeat myself, too. If you want to simulate one of a) an arbitrary survival vector, or b) a lognormal or c) a Weibull, then the Hmisc package has facilities to do each of those. -- David.
Cheers, Michael
David Winsemius, MD Alameda, CA, USA