MathGroup Archive 2013

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Plot InverseSurvivalFunction

  • To: mathgroup at smc.vnet.net
  • Subject: [mg132024] Re: Plot InverseSurvivalFunction
  • From: Itai Seggev <itais at wolfram.com>
  • Date: Sun, 17 Nov 2013 18:23:55 -0500 (EST)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • Delivered-to: l-mathgroup@wolfram.com
  • Delivered-to: mathgroup-outx@smc.vnet.net
  • Delivered-to: mathgroup-newsendx@smc.vnet.net
  • References: <20131115114157.A96816A4F@smc.vnet.net> <20131116002250.GG593@wolfram.com> <DF142772-01E4-4C99-8C14-073A68E96820@gmail.com>

Yes, I it should be invsurv[q].  I copied the wrong cell. 

> Hello
>
> Yes, it is faster.  Many thanks.
>
> The last command should be Plot[invsurv[q], {q, 0.01, 0.999}], shouldn't
> it?
>
> Cheers
>
> Ed
>
> On Nov 15, 2013, at 10:22 PM, Itai Seggev <itais at wolfram.com> wrote:
> > On Fri, Nov 15, 2013 at 06:41:57AM -0500, Eduardo M. A. M. Mendes wrote:
> >> Hello
> >>
> >> Is there any way to evaluate (or even plot) the inverse survival
> >> function of a sum of two Fs?
> >>
> >> Here is what I have so far
> >>
> >> \[ScriptCapitalD]=TransformedDistribution[u+v,{u\[Distributed]FRatioDist
> >>ribution[2,2 2],v\[Distributed]FRatioDistribution[2,2 2]}]
> >>
> >> PDF[\[ScriptCapitalD],x]
> >>
> >> Plot[PDF[\[ScriptCapitalD],x],{x,0,10},Filling->Axis]
> >>
> >> CDF[\[ScriptCapitalD],x]
> >>
> >> Plot[CDF[\[ScriptCapitalD],x],{x,0,10},Filling->Axis]
> >>
> >> All above commands return the results I expect but when I try
> >>
> >> Plot[InverseSurvivalFunction[\[ScriptCapitalD],x],{x,0,1},Filling->Axis,
> >>PlotRange-> Full]
> >>
> >> Mathematica won't show any curve. Does it mean that Mathematica could
> >> not find an expression for it?
> >>
> >> I know that the sum of Fs will get rather complicated.
> >>
> >> Is there any way to get an output from
> >> InverseSurvivalFunction[\[ScriptCapitalD],0.95] for instance?
> >
> > There appears to be a bug that InverseSurivivalFunction doesn't evaluate
> > when given a TransformedDistribution.  One trick to deal with that is to
> > create a new distribution from the PDF of the TransformedDistribution:
> >
> > \[ScriptCapitalD] =
> >  ProbabilityDistribution[
> >   PDF[TransformedDistribution[
> >     u + v, {u \[Distributed] FRatioDistribution[2, 2 2],
> >      v \[Distributed] FRatioDistribution[2, 2 2]}], x], {x,
> >    0, \[Infinity]}];
> >
> >
> > In[31]:= InverseSurvivalFunction[\[ScriptCapitalD], 0.5]
> >
> > Out[31]= 2.25061
> >
> > However, this function will be extremely slow and not really usable for
> > plotting.  I tried plotting it out of curiousity to see the timing, and
> > when I didn't finish after 7 minutes or so I gave up.  On the other hand,
> > it will be usable if you need to evaluate a small number of points with
> > relative accuracy.
> >
> > For plotting, you could do something like the following:
> >
> > survival[z_] =
> > SurvivalFunction[
> >  TransformedDistribution[
> >   u + v, {u \[Distributed] FRatioDistribution[2, 2 2],
> >    v \[Distributed] FRatioDistribution[2, 2 2]}], z]
> >
> > invsurv[q_Real] :=
> > Block[{z}, z /. FindRoot[survival[z] == q, {z, 1}]]
> >
> > Plot[qun[q], {q, 0.01, 0.999}]
> >
> > Which would still not be lightning fast but usable (something like 15
> > seconds on my machine.)
> >
> >> Many thanks
> >>
> >> Ed
> >
> > --
> > Itai Seggev
> > Mathematica Algorithms R&D
> > 217-398-0700



-- 
Itai

Itai Seggev
Mathematica Algorithms R&D



  • Prev by Date: Re: Plot InverseSurvivalFunction
  • Next by Date: Re: Animate cannot be combined?
  • Previous by thread: Re: Plot InverseSurvivalFunction
  • Next by thread: Re: Plot InverseSurvivalFunction