Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2004
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2004

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

Search the Archive

Fitting question

  • To: mathgroup at smc.vnet.net
  • Subject: [mg51585] Fitting question
  • From: János <janos.lobb at yale.edu>
  • Date: Sat, 23 Oct 2004 00:22:57 -0400 (EDT)
  • Sender: owner-wri-mathgroup at wolfram.com

I have two lists.  One of them contains the running total of some 
quantity per cycles, the other contains the totals per cycles.  Here 
they are:

In[35]:=
runtotpergen = {1, 23, 136,
    568, 1735, 4382, 9099,
    16384, 25993, 36694,
    47752, 58044, 66761,
    73534, 78429, 81753,
    83750, 84873, 85482,
    85779, 85937, 86025,
    86069, 86081, 86087}

In[36]:=
totpergen = {1, 22, 113, 432,
    1167, 2647, 4717, 7285,
    9609, 10701, 11058, 10292,
    8717, 6773, 4895, 3324,
    1997, 1123, 609, 297, 158,
    88, 44, 12, 6}

I am trying to find out the analytical form of a function which fits 
best totpergen.   Looking the ListPlot of runtotpergen, it looks 
similar to the sigmoid function, so I define:
In[37]:=
sg[x_] := 1/(1 + E^(-x))

and
In[38]:=
dsg = Derivative[1][sg]

The best I could come out with manual try was:

In[40]:=
dsgfit = Fit[totpergen,
    {dsg[0.48*(x - 11)]}, x]
Out[40]=
44143.063409020484/
   (E^(0.48*(-11 + x))*
    (1 + E^(-0.48*(-11 + x)))^
     2)

When I create the plots of the data totpergen and the above Fit dsgfit 
as:

In[41]:=
lsp = ListPlot[totpergen,
    PlotRange -> All]
In[42]:=
psp = Plot[dsgfit, {x, 1, 25}]

and plot them together, they overlap to some degree, but not to my 
satisfaction.

In[43]:=
Show[lsp, psp]

totpergen is not symmetrical, so I tried different multiplications of 
x^n and dsg without any success.  I also tried the polynomials of dsg 
like:

In[83]:=
polydsgfit = Fit[totpergen,
    {1, dsg[x - 11],
     dsg[x - 11]^2,
     dsg[x - 11]^3,
     dsg[x - 11]^4}, x]

but it just looks funny.

I also tried:

In[92]:=
paramdsgfit = FindFit[
    totpergen,
    a*dsg[b*x - c] + d,
    {a, b, c, d}, x]
Out[92]=
{a -> -2250.9485483974095,
   b -> -14745.171180125675,
   c -> 111324.17194273268,
   d -> 3443.48}

but it gave me just a horizontal line when I plotted it.

In[101]:=
ip = InterpolatingPolynomial[
    totpergen, x]

does not help either.
I feel that Mathematica has the capability to find the best fitting 
function without too much manual trials.    Any hint how to do that ?

Thanks ahead.

János
----------------------------------------------
Trying to argue with a politician is like lifting up the head of a 
corpse.
(S. Lem: His Master Voice)


  • Prev by Date: Re: Piecewise functions
  • Next by Date: Mathematica -> TeX
  • Previous by thread: Re: f'[t]== x[t]+u[t] ?
  • Next by thread: Re: Fitting question