Re: Re: Area Under Curve (Min Length Interval)
- To: mathgroup at smc.vnet.net
- Subject: [mg53917] Re: [mg53900] Re: [mg53889] Area Under Curve (Min Length Interval)
- From: DrBob <drbob at bigfoot.com>
- Date: Fri, 4 Feb 2005 04:11:12 -0500 (EST)
- References: <200502021125.GAA28978@smc.vnet.net> <200502022310.SAA11934@smc.vnet.net>
- Reply-to: drbob at bigfoot.com
- Sender: owner-wri-mathgroup at wolfram.com
That's a great approach, but be careful.
Here's the same code without the plots:
dist = ChiSquareDistribution[5];
F[x_] = CDF[dist, x];
Off[Solve::"ifun"]
tempsoln = Solve[F[b] - F[a] == 93/100, b][[1, 1]];
soln = Last@NMinimize[{b - a /. tempsoln, b > a > 0}, {a, b}]
F@b - F@a /. soln
{9.971553966649529,
{a -> 0.3725304421496036,
b -> 0.5177610388627399}}
0.00459403860285145
The last result should be 0.93, if "soln" gave the desired a and b.
This is the correct interval:
{a,b}/.tempsoln/.soln
{0.37253,10.3441}
But this seems slightly more natural:
dist = ChiSquareDistribution[5];
F[x_] = CDF[dist, x];
Off[Solve::"ifun"]
tempsoln = Solve[F[b] - F[a] == 93/100, b][[1, 1]];
{difference, aRule} = NMinimize[{b - a /. tempsoln, a > 0}, {a}];
solution = Flatten@{aRule, b -> (a + difference /. aRule)}
{a -> 0.37253, b -> 10.3441}
F@b-F@a/.solution
0.93
PDF[dist,#]&/@{a,b}/.solution
{0.0250979,0.0250979}
Note that b isn't actually a variable in the objective function, either way.
Bobby
On Wed, 2 Feb 2005 18:10:41 -0500 (EST), Chris Chiasson <chris.chiasson at gmail.com> wrote:
> I think Bruce's code would usually work, but Minimize isn't able to
> pick up on what is happening or what you want; I'm not sure which.
> Anyway, here are a few lines of code that graphically demonstrate what
> is happening and give the (locally) correct solution.
>
> << Statistics`ContinuousDistributions`
> F[x_] = CDF[ChiSquareDistribution[5], x];
> NMinimize[{b - a, F[b] - F[a] == 93/100, b > a > 0}, {a, b}]
> tempsoln = Solve[F[b] - F[a] == 93/100, b][[1, 1]]
> intersectingsurfaces = Plot3D[#, {a, 0, 2}, {b, 0, 40}, AxesLabel -> {"a",
> "b", "c"}, DisplayFunction -> Identity] & /@ {F[b] - F[a], 0.93}
> Show[intersectingsurfaces,
> ViewPoint -> {0, 0, 1}, DisplayFunction -> $DisplayFunction]
> Plot[Evaluate[b /. tempsoln], {a, 0, 1.3}, AxesLabel -> {"a", "b"}]
> Plot[Evaluate[b - a /. tempsoln], {a, 0, 1.3}, AxesLabel -> {"a", "b-a"}]
> NMinimize[{b - a /. tempsoln, b > a > 0}, {a, b}]
>
> For clarity, these commands may be evaluated one at a time.
>
> Regards,
>
> On Wed, 2 Feb 2005 06:25:53 -0500 (EST), Bruce Colletti
> <vze269bv at verizon.net> wrote:
>> Re Mathematica 5.1.
>>
>> How would I compute the minimum length interval over which the area under f(x) is given?
>>
>> For instance, as shown below, f(x) is the PDF of a chi-square distributed random variable whose CDF is F[x]. Seeking the minimum length 93%-interval [a,b], the code returns "Obtained solution does not satisfy the following constraints within Tolerance -> 0.001..." Fiddling with options has been futile.
>>
>> Any ideas? Thankx.
>>
>> Bruce
>>
>> F[x_] := CDF[ChiSquareDistribution[5], x]
>>
>> Minimize[{b - a, F[b] - F[a] == 0.93, b > a > 0}, {a, b}]
>>
>> NMinimize[{b - a, F[b] - F[a] == 0.93, b > a > 0}, {a, b}]
>>
>>
>
>
--
DrBob at bigfoot.com
www.eclecticdreams.net
- References:
- Area Under Curve (Min Length Interval)
- From: Bruce Colletti <vze269bv@verizon.net>
- Re: Area Under Curve (Min Length Interval)
- From: Chris Chiasson <chris.chiasson@gmail.com>
- Area Under Curve (Min Length Interval)