Re: Using Fit to interpolate data
- To: mathgroup at smc.vnet.net
- Subject: [mg127443] Re: Using Fit to interpolate data
- From: Kris Carlson <carlsonkw at gmail.com>
- Date: Wed, 25 Jul 2012 02:33:15 -0400 (EDT)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- Delivered-to: mathgroup-newout@smc.vnet.net
- Delivered-to: mathgroup-newsend@smc.vnet.net
- References: <jullkd$ptc$1@smc.vnet.net> <500EA086.2050907@KevinMcCann.com>
On Tue, Jul 24, 2012 at 9:17 AM, Kevin J. McCann <kjm at kevinmccann.com>wrote: > A couple of comments: > > 1) Fit performs a linear least squares fit; so, you initially did a > straight line fit. Do you have any reason/theory to suggest that it should > be so? Your data appear to suggest an exponential relationship. > > 2) The goodness of the fit depends on the goodness of the data set. Do you > have error bounds on the data points? > > Also, you might comment on why you want to do the fit in the first place. > For example, are you going to do subsequent calculations with the fit? Are > the fit parameters relevant? ... > > Kevin > > On 7/24/2012 4:16 AM, Kris Carlson wrote: > >> Hi, >> >> Can someone enlighten me about how to fit a curve to data? These data are >> of the density of axons of given diameters in the spinal cord. The density >> of smaller fibers is dramatically larger than that of larger fibers. There >> cannot be density < 0 of any diameter, so heuristically to prevent a fit >> yielding an equation that dips below 0 I added an end point with fiber >> diameter = 16 that is 0. Then using Fit I try to increase the exponent of >> x >> until the curve doesn't yield negative values. The fit looks good in large >> scale but when I plot the region of greatest interest, 8 < x < 14, it no >> longer looks so good. Maybe I am simply ignorant about fitting a curve to >> somewhat irregular data? Or can it be done? >> >> Thank you. >> >> Kris >> >> fiberDataDensitiesFeierabend = {{16, 0}, {10.7, 0.11}, {10.4, >> 0.19}, {9.77, 0.41}, {8.29, 3.05}, {7.14, 19.86}}; >> >> fbddPlot = >> ListPlot[**fiberDataDensitiesFeierabend, >> PlotMarkers -> {Automatic, Medium}] >> >> fbddFit = Fit[**fiberDataDensitiesFeierabend, {1, x, x^-13}, x] >> >> Show[Plot[fbddFit, {x, 4, 20}, >> PlotRange -> {{4.5, 20}, {-0.5, 25}}], fbddPlot] >> >> Show[Plot[fbddFit, {x, 4, 28}, >> PlotRange -> {{8, 16}, {-0.5, 1}}], fbddPlot] >> >> >> Kevin, I started with a low order polynomial, not linear, then advanced > the order to get a better fit. Today made some progress by omitting the > other terms and just using ax^-13; so in the range I need, the following > works pretty well. Sorry I didn't give the big picture, which is I need to > translate (interpolate) from Feirabend's fiber diameters to another group's > (Lee's). In[131]:= fiberDataLeeDiameters = fiberDataLee[[All, 1]] Out[131]= {25, 14, 12.8, 11.5, 8.7, 7.5, 5.7} In[277]:= fbddFit = Fit[fiberDataDensitiesFeierabend, {x^-13}, x] Out[277]= 2.4929*10^12/x^13 Kris