MathGroup Archive 2011

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

Search the Archive

Re: FindFit power law problem

  • To: mathgroup at smc.vnet.net
  • Subject: [mg117057] Re: FindFit power law problem
  • From: Peter Pein <petsie at dordos.net>
  • Date: Wed, 9 Mar 2011 06:55:31 -0500 (EST)
  • References: <il2d8k$65a$1@smc.vnet.net>

Am 07.03.2011 11:49, schrieb Greg Childers:
> Hi,
>
> I'm having a problem with FindFit and a power law problem.  Here's the data:
>
> data = {{1004, 0.003977}, {9970, 0.006494}, {100000, 0.012921},
> {1001000, .059795}}
>
> I'm wanting to fit it to a function of the form y = a x^b, and determine
> the best value of b.  When entered into Excel, it returns the exponent b
> = 0.383.  However, Mathematica gives
>
> FindFit[data, a x^b, {a, b}, x]
> {a->0.0000145749, b->0.601807}
>
> A graph of these values overlaid on the original data simply didn't look
> right.  Another way to find the exponent b is to take the log of both
> sides and do a linear fit:
>
> Fit[Log[10, data], {1, x}, x]
> -3.64936 + 0.383174 x
>
> And sure enough the exponent is 0.383 in agreement with Excel.  Why does
> FindFit give a different value?
>
> Greg
>

Hi Greg,

if you really insist on b being 0.383, then find the weights:

In[1]:= 
data={{1004,0.003977},{9970,0.006494},{100000,0.012921},{1001000,.059795}};

In[2]:= 
bw[w_List/;(And@@NumericQ/@w)]:=Cases[Normal[NonlinearModelFit[data,a 
x^b,{a,b},x,Weights->w]],Power[x,b_]:>b,1,1][[1]]
In[3]:= weights=w/@Range[4];
In[4]:= 
soln=NMinimize[{(bw[weights]-0.383)^2,And@@Flatten[{Thread[weights>=0],Norm[weights]==1,weights[[1]]<=weights[[2]],weights[[3]]>=weights[[4]] 
(* put focus on the 'middle'*)}]},weights]
Out[4]= 
{2.83106*10^-14,{w[1]->0.264427,w[2]->0.964382,w[3]->0.00681409,w[4]->0.000760789}}
In[5]:= NonlinearModelFit[data,a 
x^b,{a,b},x,Weights->((w/@Range[4])/.soln[[2]])]//Normal
Out[5]= 0.000196237 x^0.383

Peter



  • Prev by Date: memory leak in Mathematica application using NET/Link and Win32 API - please help
  • Next by Date: How to kill slave kernel securely?
  • Previous by thread: Re: FindFit power law problem
  • Next by thread: Re: FindFit power law problem