Mathematica 9 is now available
Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2005
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2005

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Correct errors on fit parameter ?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg55460] Re: Correct errors on fit parameter ?
  • From: Bill Rowe <readnewsciv at earthlink.net>
  • Date: Thu, 24 Mar 2005 03:42:02 -0500 (EST)
  • Sender: owner-wri-mathgroup at wolfram.com

Bruyndonckx P wrote:

>Is there an easy way to obtain the correct statistical error on
>fitted parameters ?

>I tried the following simple example :

>x=Range[5]; y=x^2; yerror={10,10,10,10,10}

>NonlinearRegress[Transpose[{x, y}], a + b*xx + c*xx^2, {xx}, {a,
>b, c}, Weights -> 1/yerror^2, RegressionReport -> {ParameterCITable}]

>The asymptotic error and confidence intervals are of the order of
>10^-15 !!!!.   Obviously the weights (errors or uncertainty on the
>data) are not taken into account when computing the error on the
>parameter.  It seems that the SE is only based on the residuals, which
>are nearly 0 is this case because the fit is perfect.  Changing the
>value of the errors has no impact on the standard errors of the fit
>parameters.

For a weighted regression problem, the estimated variance is given by summing

w(f[x]-y)^2 where w is the weight, f is the fitted function, x the independent observation and y the dependent observation. When you set the problem up so that f[x]-y is zero, then clearly the value of the weights no longer matters. That is the problem isn't with NonlinearRegress or Regress. The problem is with the way you chose to test things.

This is easily seen in the following:

First load the packages and create some test data

In[1]:=
<< "Statistics`"
data = Table[{x, 2*x + 3 + 
      Random[NormalDistribution[0, 1]]}, {x, 5}]; 
w = Array[1 & , 5]; 

Now doing the regression with the weights set to w

In[4]:=
EstimatedVariance/.Regress[data, {1, x}, x, Weights -> w]
Out[4]=
0.1917229712282517

Now do the same problem with the weights set to 10 w

In[5]:=
EstimatedVariance/.Regress[data, {1, x}, x, Weights -> 10*w]
Out[5]=
1.9172297122825148

Clearly, the value of w does affect the computed estimated variance

Here, I've used Regress to keep things simple. Weights are used in NonlinearRegress in the same manner.

BTW, the problem you set up is for a polynominal fit and isn't a non-linear problem. Linear vs non-linear is determined by the way the coefficients to be found enter the problem, not the way the dependent variable is used. Also, using the set of basis functions ,x^n, for a polynominal problem is known to be numerically unstable. If you are trying to fit polynomials to your data, you would be better served by the package Statistics`PolynomialFit` rather than Regress or NonlinearRegress.
--
To reply via email subtract one hundred and four


  • Prev by Date: Re: Newbie Question About An Error Message
  • Next by Date: Re: How to change the ResultFormatType of the MathKernel in a ASP.NET Web Application?
  • Previous by thread: Re: Correct errors on fit parameter ?
  • Next by thread: opCodes