Find a curve that fits this data please

  • Thread starter Thread starter johnpjust
  • Start date Start date
  • Tags Tags
    Curve Data
AI Thread Summary
The discussion focuses on finding a suitable curve fit for a dataset represented as f(x)/x, with specific requirements for behavior at zero and positivity for x > 0. Initial attempts with functions like sqrt(x)/x and log(x)/x were deemed inadequate due to their inability to bend appropriately to fit the data. A proposed model involved transforming the data by multiplying y-values with their corresponding x-values to achieve a linear fit, although it was noted that the fit was not optimal for lower x values. Suggestions were made to manipulate the curve's parameters to improve the fit, particularly for low x values, while keeping the number of parameters minimal. The conversation emphasizes the challenge of fitting the curve accurately due to measurement variability and the lack of a physical model.
johnpjust
Messages
22
Reaction score
0
I'm doing research and I have some data (attached -- 'y' = first column, 'x' = second column in CSV format) that I need to find a general curve fit for (function = f(x)/x). This will help me do future predictions.

Here are my stipulations:

The fit curve must have the format of f(x)/x. Two examples I've tried are sqrt(x)/x and log(x)/x --> and of course they have more general forms such as [(b*x+a)^n]/x and {[log(x+a)]^n}/x. However, these functions do not "bend" in the way that fits the data best so there must be better (see "sqrt.jpg").

The function f(x) MUST behave well at zero and be positive for 'x' > 0. E.g., for the log function this can be done by shifting the x data by '1'. The sqrt function is naturally well behaved with no modifications obviously.

The curve needs to fit the general shape but use as FEW of parameters as possible. E.g., the sqrt function (x^n) is attractive because it only uses 1 parameter, "n", but just not quite right.

Thanks!
 

Attachments

  • fitThisData.txt
    fitThisData.txt
    4 KB · Views: 864
  • sqrt.jpg
    sqrt.jpg
    18.3 KB · Views: 557
Last edited:
Mathematics news on Phys.org
If you want an x in the denominator, it is easier to look at y*x as function of x. There, a linear fit is actually reasonable, especially if we can ignore the first datapoint (at x=9.5) as outlier.

It is easy to adjust that shape to fit better to the lower values, for example with f(x)=0.255 x + 19 - 19 e^(-0.1x). I did not optimize it yet (and I'm not used to measured values without known uncertainties), that's just by eye. But that arbitrary exponential there looks like overfitting, at least without a physical model behind it.

Here are y*x and y as a function of x, with f(x) plotted on top:

attachment.php?attachmentid=69110&stc=1&d=1398527083.png
 

Attachments

  • fitproblem.png
    fitproblem.png
    8.7 KB · Views: 555
  • Like
Likes 1 person
Very impressive! You must do this often to be able to "eye" a fit?! Can you explain a little more (maybe in a different way) on what you've done here? I don't quite understand "y*x as function of x".

This is a model to describe relative changes in bulk density of a material, so no physical model is really possible. The variability in the data is due to measurement error and other factors but very difficult to isolate.

Also - The curve would need to bend up a little more in the beginning. After you've linearized the data in the top graph, the group at the beginning is slightly bias.

Thanks!
 
Very impressive! You must do this often to be able to "eye" a fit?! Can you explain a little more (maybe in a different way) on what you've done here? I don't quite understand "y*x as function of x".
I multiplied all y-values with their x-values. That way my new data points get the same shape as the (unknown) f(x). Then I tried a linear fit. It was reasonable, but not good in the region of low x, so I used those fit parameters and added the exponential.

Also - The curve would need to bend up a little more in the beginning. After you've linearized the data in the top graph, the group at the beginning is slightly bias.
What do you mean?
 
For the low values of 'x', the fit curve you've given APPEARS to generally be "under" the data points. Is there a way to manipulate the curve to better fit the data points for low low values of 'x'?
 
Sure, just play around with the 4 free parameters.
 
Cool. Well done, and thank you.
 
Back
Top