Re: FindFit power law problem
- To: mathgroup at smc.vnet.net
- Subject: [mg117243] Re: FindFit power law problem
- From: Gary Wardall <gwardall at gmail.com>
- Date: Sat, 12 Mar 2011 05:11:00 -0500 (EST)
- References: <ilcqal$iir$1@smc.vnet.net>
On Mar 11, 3:34 am, Bill Rowe <readn... at sbcglobal.net> wrote: > On 3/10/11 at 6:06 AM, gward... at gmail.com (Gary Wardall) wrote: > > > > >I was wondering if you really meant to transform both the x and y > >data? > >Fit[Log[10, data], {1, x}, x] > >Does just that. Some software transforms just the y data when > >estimating the coefficients for the model y = a x^b. > >What happens is they transform just the y data and use the linear > >model > >yy=aa+bb*ln[x] > >Finding the coefficients aa and bb and state the results as > >y=Exp[aa]*x^bb > >Since: > > >y=Exp[aa+bb*ln[x]] > >is equivalent to: > >y=Exp[aa]*Exp[bb*ln[x]] > >in turn is equivalent to: > >y=Exp[aa]*Exp[ln[x^bb]] > >which is also equivalent to: > >y=Exp[aa]*x^bb > >Note then that a=Exp[aa] and b=bb. > >I hope my Algebra is correct. > > Your algebra looks right. However,... > > You start you post by asking about transforming both x and y. > You have a model where you transform y then seem to be > suggesting to do: > > FindFit[xformedData, a Log[x] + b, {a,b}, x] > > This is exactly the same as doing > > FindFit[Log[data], a + b x, {a,b},x] > > That is setting up the model as a linear function of Log[x] is > exactly the same as transforming both x and y then using a > linear model to fit the transformed data. > > Note also, the difference in fit parameters comes about by > transforming y. For real data, errors are almost always > additive. Any non-linear transformation of measured y data with > additive error creates a fundamentally different model. The > point is f[y+error] does not map to f[y] + f[error] unless f is > a linear function. If the range for you data isn't too large, > doing a non-linear fit to the data will give approximately the > same result as doing a linear fit to appropriately transformed > data. A sufficiently small range in this context means the > deviation from true linearity is small. Or said differently, any > non-linear function restricted to a sufficiently small range > looks linear. I stand in error. My statement of "Some software transforms just the y data when estimating the coefficients for the model y = a*x^b" is not correct. It should have been: " Some software transforms just the y data when estimating the coefficients for the model y = a*b^x" Greg is correct. With: Fit[Log[10, data], {1, x}, x] both the xdata and the ydata sets are transformed by a Log function is correct. The coefficients in theory be should close. In practice it's often not. The least squares coefficients are a function of the data. The data used in FindFit[data, a x^b, {a, b}, x] and the data used in Fit[Log[10, data], {1, x}, x] are not the same. I apologize if my mistake added confusion. Gary