Take the 2-minute tour ×
Mathematica Stack Exchange is a question and answer site for users of Mathematica. It's 100% free, no registration required.

I am trying to understand how Mma computes the Confidence Intervals after a NonlinearModelFit. Consider the following example:

data = {{0, 1}, {1, 0}, {3, 2}, {5, 4}, {6, 4}, {7, 5}};
nlm = NonlinearModelFit[data, Log[a + b x^2], {a, b}, x];
Show[ListPlot[data, Joined -> False], Plot[Normal@nlm, {x, 0, 8}],ImageSize -> 200]
(*out*)

Fitting results

Which comes with the following R squared and confidence intervals:

nlm["RSquared"]
nlm["ParameterConfidenceIntervalTable"]

(*Out*)0.957573
(*Out*)

enter image description here

The table above assumes the default 95% Confidence Interval and, I am assuming, normal distribution around a=1.50632 and b=1.42633.

Questions:

  1. How does Mma estimate the Standard Error of a and b?
  2. The mean used to estimate such confidence intervals is the sample mean, i.e. ~2.6667?

I could not find in the documentation how this was done from a fitting. Thank you in advance.

share|improve this question
    
add comment

1 Answer

up vote 6 down vote accepted

Standard errors and confidence intervals from linear and nonlinear regressions are obtained from the covariance matrix. Details about the covariance matrix can be obtained here.

Briefly, the square root of the diagonal elements of the covariance matrix gives us the standard errors:

se = Sqrt[nlm["CovarianceMatrix"]] // Diagonal
(* {1.10159, 0.600123} *)

The confidence interval is obtained by multiplying the standard error by the value of Student's t for the given confidence level and degrees of freedom. For this set of data, the degrees of freedom is 4 and for a confidence level of 95%

ci = InverseCDF[StudentTDistribution[4], 1 - 0.05/2]
(* 2.77645 *)

Thus, we obtain the last column of the ParameterConfidenceIntervalTable:

Transpose[{{a, b} - se ci /. nlm["BestFitParameters"], 
   {a, b} + se ci /. nlm["BestFitParameters"]}]
(* {{-1.55217, 4.56481}, {-0.239879, 3.09254}} *)

Note that this method assumes that the error in the parameters is normally distributed, which is probably not the case for a nonlinear model. I would be hesitant to rely heavily on the confidence intervals reported by Mathematica in light of this issue. If you have access to the following journals, this article presents a monte carlo method for deriving confidence intervals that doesn't require the assumption of normality and the jacknife method (I can't put my finger on the reference I use, but several options show up with a google search) is fairly straightforward to implement.

share|improve this answer
1  
Very nice, thanks! I was afraid that the Standard errors would be, in some way, associated to the initial search values that I attributed to the free variables, but I see this isn't the case. Thank you for your input! –  Sosi Nov 28 '13 at 9:18
    
The standard errors can be easier calculated using nlm["ParameterErrors"] –  Sjoerd C. de Vries Dec 3 '13 at 16:37
    
@SjoerdC.deVries True - I was focusing on the how part. –  bobthechemist Dec 3 '13 at 17:46
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.