Re: Calculate n in binomial distribution
- To: mathgroup at smc.vnet.net
- Subject: [mg101626] Re: Calculate n in binomial distribution
- From: ADL <alberto.dilullo at tiscali.it>
- Date: Fri, 10 Jul 2009 23:27:58 -0400 (EDT)
- References: <h229dp$i0v$1@smc.vnet.net> <h3768k$fb1$1@smc.vnet.net>
I also think there is a bug, but it is in NMinimize.
In fact, the Help says: "If Minimize is given an expression containing
approximate numbers, it automatically calls NMinimize".
Actually, you can check that:
Minimize[{(cf[n, 2/10, 7] - 3/10)^2, n > 0}, {n}, Integers]
will return unevaluated and Minimize cannot even deal with this
expression.
Moreover, the following can be seen: [$Version=7.0 for Microsoft
Windows (32-bit) (February 18, 2009]:
In[1]:= cf[n_, p_, k_] = CDF[BinomialDistribution[n, p], k];
In[2]:= NMinimize[{(cf[n, 2/10, 7] - 3/10)^2, n > 0}, {n}]
Out[2]= {6.63109378289971*10^-23,{n->44.8977440651266}}
(*OK*)
In[3]:= NMinimize[{(cf[n, 2/10, 7] - 3/10)^2, n > 1}, {n}]
Out[3]= {0.489999957269396,{n->1.36847214846574}}
(*Surprising !*)
In[4]:= NMinimize[{(cf[n, 2/10, 7] - 3/10)^2, n > 2}, {n}]
Out[4]= {0.489999990680824,{n->3.47886234486239}}
(*Surprising !*)
In[5]:= NMinimize[{(cf[n, 2/10, 7] - 3/10)^2, n > 5}, {n}]
Out[5]= {2.77333911991762*10^-32,{n->44.8977440654531}}
(*OK*)
In[6]:= NMinimize[{(cf[n, 2/10, 7] - 3/10)^2, n > 7}, {n}]
(*Produces a Beep and crashes the Kernel !*)
New Kernel:
In[1]:= cf[n_, p_, k_] = CDF[BinomialDistribution[n, p], k];
In[2]:= NMinimize[{(cf[n, 2/10, 7] - 3/10)^2, n < 100}, {n}]
Out[2]= {2.77333911991762*10^-32,{n->44.8977440654531}}
(*OK*)
So:
1) NMinimize just explores a small region around the limit of the
inequality n>M for M>0, but looks everywhere when n>0 is specified (so
that two differen algorithms are used)
2) Appears to works more reproducibly if an upper limit is specified
(e.g. n<M)
3) Has some inexplicable serious internal problem for some situations
(e.g. n>7)
Some comments by WRI specialist on this behavior could be helpful.
ADL
On Jul 10, 12:47 pm, dh <d... at metrohm.com> wrote:
> Hi Peter,
>
> I think there is a bug in Minimize for the Integer domain. Consider:
>
> Minimize[(x - 6.1)^2, x, Integers] giving: {1.21, {x -> 5}}
>
> Minimize[(x - 6.)^2, x, Integers] giving: {1., {x -> 5}}
>
> Minimize[(x - 6)^2, x, Integers] giving: {0, {x -> 6}}
>
> Minimize seems to have problems mixing integers and reals. I think you
>
> should report this to Wolfram.
>
> Daniel
>
>
>
> Peter Breitfeld wrote:
> > Suppose I have the following distribution:
>
> > cf[n_,p_,k_]=CDF[BinomialDistribution[n,p],k]
>
> > Now I want to calculate n so that the biggest n such that e.g.
>
> > cf[n,0.2,7]<0.3
>
> > I made a ListPlot
>
> > ListPlot[Abs[cf[#,0.2,7]-0.3]&/@Range[60]], where I see, that a value o=
f
> > about n=46 gives an approximation nearest to 0.3
>
> > To get this value of n I tried
>
> > Minimize[{Abs[cf[n,0.2,7]-0.3],n>7},n,Integers]
>
> > Out: {0.699765, {n->11}}
>
> > which is obviously wrong.
>
> > Why?
>
> > Is it, because Abs isn't differentiable at the peak?
>
> > I tried other ways too, like Reduce NMinimize, FindMinimum, but no succ=
ess.