MathGroup Archive 2010

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

Search the Archive

Re: Mathematica calculates RSquared wrongly?

On Sep 29, 7:48 am, Darren Glosemeyer<darreng at>  wrote:
> On 9/29/2010 3:15 AM, Ray Koopman wrote:
>> On Sep 28, 3:09 am, Darren Glosemeyer<darreng at>  wrote:
>>> On 9/27/2010 4:47 AM, Lawrence Teo wrote:
>>>> [...]
>>>> nlm = NonlinearModelFit[sbbBN, a*x^2 + b*x + c, {a, b, c}, x]
>>>> nlm["RSquared"]
>>>> The RSquared by Mathematica is 0.963173
>>>> Meanwhile, Excel and manual hand calculation show that R^2 should
>>>> be equal to 0.7622.
>>>> Is Mathematica wrong? Thanks!
>>> This is as designed. For nonlinear models, the corrected (i.e. with
>>> the mean subtracted out) sum of squares is sometimes used. This is
>>> consistent with comparing to a constant model, but most nonlinear
>>> models do not include a constant in an additive way. For this reason,
>>> NonlinearModelFit uses the uncorrected (i.e. without subtracting out
>>> the mean) sum of squares.
>> This information should be included in the "Goodness-of-Fit Measures"
>> section of the NonlinearModelFit documentation, which should also
>> point out that RSquared is computed as  1 - (Residual SS)/(Total SS),
>> and that in nonlinear models this is generally different from the
>> ratio (Model SS)/(Total SS) that is sometimes cited -- e.g.,
>> -- as the definition of RSquared.
> The RegressionCommon documentation is for a now obsolete standard
> package. The "RSquared" property for nonlinear models is described
> near the bottom of
> The current statement is:
> "The coefficient of determination "RSquared" is the ratio of the model
> sum of squares to the total sum of squares."
> I will modify this to mention that the total is the uncorrected total
> for the next version.

Also, the  n-1  in the formula for AdjustedRSquared should be n,
because the total sum of squares is uncorrected.

However, all that misses the main point I was trying to make, which
is that simply changing from corrected to uncorrected sums of squares
will not give  1 - SS_res/SS_tot, which is how NonlinearModelFit
calculates RSquared. The reason is that the residuals are not
generally orthogonal to the fitted values, so the decomposition
SS_tot = SS_fit + SS_res  that holds for linear models does not
generally hold for nonlinear models.

For instance, using the data and model from the "Goodness-of-Fit
Measures" section of the NonlinearModelFit documentation, 
the fitted values are

{13.658, 2.00568, 1.48485, 14.8951, 5.6088, 10.1695,
 11.0627, 5.77841, 4.51702, 5.67666, 13.4947, 11.4323},

and the residuals are

{0.742037, 9.09432, 5.01515, -3.79512, 1.1912, 0.930521,
 1.3373, 3.12159, 4.08298, 5.72334, -1.69468, -0.532303}.

Their uncentered inner product is 50.2468; centering gives -159.435.

  • Prev by Date: Re: Multiline functions
  • Next by Date: Re: Creating a Grid with square cells
  • Previous by thread: Re: Mathematica calculates RSquared wrongly?
  • Next by thread: Re: Mathematica calculates RSquared wrongly?