Message Boards Message Boards

0
|
3373 Views
|
4 Replies
|
0 Total Likes
View groups...
Share
Share this post:

Fitting data with error terms?

Posted 2 years ago

I have the following dataset:

parabola

which is generated by data:

data={
 {-5, Around[55., 3.42]},
 {-4, Around[37., 2.13]},
 {-3, Around[23., 3.60]},
 {-2, Around[13., 2.69]},
 {-1, Around[7., 2.30]},
 {0, Around[5., 3.87]},
 {1, Around[7., 2.94]},
 {2, Around[13., 2.29]},
 {3, Around[23., 3.48]},
 {4, Around[37., 3.70]},
 {5, Around[55., 3.25]}
 }

This is actually the plot of

enter image description here

plus some random error.

Now I want to find a fit for this dataset. How do I take into consideration the uncertainty of the measurements? I didn't understand it from the documentation.

NonlinearModelFit[Thread[{data[[All, 1]], data[[All, 2]]}], 
 a x^2 + b, {a, b}, x, VarianceEstimatorFunction -> (1 &), 
 Weights -> Map[#[[2]]["Uncertainty"] &, data]]

I should break down this code block for you:

  • Thread[{data[[All, 1]], data[[All, 2]]}] makes a list of {{x1,y1},{x2,y2},...}

  • ax2+b is the model to fit

  • VarianceEstimatorFunction -> (1 &), Weights -> Map[#[[2]]["Uncertainty"] &, data] This is an option I add to NonlinearModelFit that according to the documentation

Using [the above] ∆yi is treated as the known uncertainty of measurement Subscript[y, i], and parameter standard errors are effectively computed only from the weights.

  • Map[#[[2]]["Uncertainty"] &, data] returns a list of the uncertainties for the points yi's.

But the result I get for this line of code is "too good":

(* FittedModel[5. + 2. x^2 ] *)

What is wrong? Were the uncertainties considered at all?

POSTED BY: Ehud Behar
4 Replies
Posted 2 years ago

Hi Ehud,

The weights need to be 1 / uncertainty^2 see this. There is no need for Thread, the data is already in the right form.

errors = data /. {_, u_} :> u["Uncertainty"]
nlm = NonlinearModelFit[data, a x^2 + b, {a, b}, x, Weights -> 1/errors^2]

nlm["BestFit"]
(* x^2 (2.00±0.10) + (5.0±1.3) *)
POSTED BY: Rohit Namjoshi
Posted 2 years ago

The problem is that you didn't really add any noise to the response variable. The y's are simply 2*x^2+5. So you end up with a perfect fit no matter what (positive) weights you use.

POSTED BY: Jim Baldwin
Posted 2 years ago

Thanks very much once again for the help and explanation.

POSTED BY: Ehud Behar
Posted 2 years ago

Do you not believe that you didn't add any errors to the response variable?

Around just characterizes the precision of the observation but it is not the error associated with the response variable.

POSTED BY: Jim Baldwin
Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
Attachments
Remove
or Discard

Group Abstract Group Abstract