Re: fitting
- To: mathgroup at smc.vnet.net
- Subject: [mg104753] Re: [mg104711] fitting
- From: danl at wolfram.com
- Date: Sun, 8 Nov 2009 06:50:54 -0500 (EST)
- References: <200911071150.GAA10169@smc.vnet.net>
> Hi!
>
> I am very new to Mathematica and I am failing in trying to do
> something very simple.
> I am have the following data:
>
> x = {8, 36, 74, 96, 123, 152, 201, 269, 415, 460, 444, 579, 711, 731,
> 602, 364, 151};
>
> Which is a curve, similar to PDF function of Beta distribution:
>
> ListLinePlot[x]
>
> And I am trying to fit it to:
>
> PDF[BetaDistribution[\[Alpha], \[Beta]], x
>
> finding Alpha and Beta values.
>
> I will appreciate it somebody can give me a hint how to do this
> properly using FindFit or
> any other means. I am too embarrassed to post my modest attempts here,
> but trust
> me, I've spent few hours trying before posting :)
>
> Vadim
There are a few ways to go astray, and I imagine I replicated some of
them. Here is something that seems to work. Rescale along the x axis so
that those values are evenly spaced between zero and one. Now you can
either also rescale on the y axis (e.g. divide each value by the total),
or else simply make that scaling a part of the fit parametrization. I do
the latter below.
data = {8, 36, 74, 96, 123, 152, 201, 269, 415, 460, 444, 579, 711,
731, 602, 364, 151};
In[86]:= bfit =
FindFit[Transpose[{(Range[Length[data]])/(Length[data] + 1), data}],
n*PDF[BetaDistribution[a, b], x], {a, b, n}, x]
Out[86]= {a -> 4.69588, b -> 2.34725, n -> 291.736}
To test this, you might do
Show[{ListPlot[
Transpose[{(Range[Length[data]])/(Length[data] + 1), data}]] /.
bfit, Plot[n*PDF[BetaDistribution[a, b], x] /. bfit, {x, 0, 1}]}]
One other thing I tried was to augment data by zeros at each end (and have
x values starting at zero and ending at one). This did not work, at least
not with the code I used. Another thing that failed was to let FindFit
find scaling along the x axis. Hence the explicit scaling used above.
Daniel Lichtblau
Wolfram Research
- References:
- fitting
- From: Vadim Zaliva <krokodil@gmail.com>
- fitting