Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Model fitting to data

  1. Dec 17, 2014 #1
    I have some (x,y) data with x in the range of 1e10 and 1e13, y is between 0 and 1. I am fitting this data using several theoretical models to gain an understanding of underlying mechanisms (by which model fits best).

    Using NonlinearModelFit in Mathematica, I get memory failures and cannot complete the fitting. As a solution, I scaled down the x values by 10^10 so the range is now from about 1 to 1000, and that is now OK with Mathematica. So I just get my functions and scale the constants to get back up to where the x values should be and it is fitting my data well. Now I have a problem shifting the function to where my x values are because it is more complicated mathematically. The function is:

    f = 1 - Exp[ -R*G^(m-1)*(x)^m ]

    Where I'm fitting R, G, and m and my variable is x. So this question is in 2 parts:

    1: Is there a way I can get Mathematica to take my very large x values and have it fit this and similar function models? Is there a trick to this? Or are the values just too large to do the fitting to data?

    2. If not possible, if I scale my x values down 10^10 as a solution, how may I shift the R, G, and M values accordingly in this case to get it back up to the x values that will fit my data?

    So far I have not been able to do this mathematically and feel maybe it is not possible with an equation in this form... But not sure! Here's what I got so far: The solution of the fitting is in this form:

    Exp[-a*x^b]

    So scaling to accept my x values I get:

    Exp[-a*{x*10^-10}^b]

    Exp[-a*x^b*10^(-10b)]

    But this does not seem to be working to scale properly... Any ideas? Thanks.
     
  2. jcsd
  3. Dec 17, 2014 #2

    SteamKing

    User Avatar
    Staff Emeritus
    Science Advisor
    Homework Helper

    Instead of using the exponential function for the independent variable, why don't you use a logarithm? Log(x) will be between 10 and 13, which seems eminently practical, given the range of y values.
     
  4. Dec 18, 2014 #3
    Instead of fitting f = 1 - Exp[ -R*G^(m-1)*(x)^m ], try to fit y= -R*G^(m-1)*(x)^m where y=ln(1-f)
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook




Similar Discussions: Model fitting to data
Loading...