Model Fitting to Data - Scaling x Values & Shifting Parameters

Click For Summary
SUMMARY

The discussion centers on fitting large (x,y) data using Mathematica's NonlinearModelFit, specifically addressing issues with memory failures due to x values ranging from 1e10 to 1e13. The user successfully scaled down the x values by 10^10, allowing for fitting, but encountered difficulties in adjusting the parameters R, G, and m back to their original scale. A proposed solution involves using logarithmic transformations to simplify the fitting process, suggesting an alternative model of y = -R*G^(m-1)*(x)^m with y defined as ln(1-f).

PREREQUISITES
  • Familiarity with Mathematica's NonlinearModelFit function
  • Understanding of nonlinear regression and model fitting
  • Knowledge of scaling and shifting parameters in mathematical functions
  • Basic understanding of logarithmic transformations in data analysis
NEXT STEPS
  • Explore advanced techniques in Mathematica for handling large datasets
  • Research parameter scaling methods in nonlinear regression
  • Learn about logarithmic transformations and their applications in model fitting
  • Investigate alternative fitting models for large x value datasets
USEFUL FOR

Data scientists, mathematicians, and researchers involved in statistical modeling and data fitting, particularly those working with large numerical datasets in Mathematica.

acusick
Messages
8
Reaction score
0
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.
 
Physics news on Phys.org
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.
 
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)
 

Similar threads

  • · Replies 9 ·
Replies
9
Views
5K
  • · Replies 12 ·
Replies
12
Views
4K
  • · Replies 6 ·
Replies
6
Views
6K
  • · Replies 14 ·
Replies
14
Views
4K
  • · Replies 1 ·
Replies
1
Views
4K
  • · Replies 4 ·
Replies
4
Views
2K
  • · Replies 3 ·
Replies
3
Views
3K
Replies
6
Views
1K
  • · Replies 5 ·
Replies
5
Views
4K
  • · Replies 1 ·
Replies
1
Views
3K