MathGroup Archive 2012

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

Search the Archive

Re: FindFit and squared residuals

  • To: mathgroup at smc.vnet.net
  • Subject: [mg126226] Re: FindFit and squared residuals
  • From: Darren Glosemeyer <darreng at wolfram.com>
  • Date: Thu, 26 Apr 2012 05:26:50 -0400 (EDT)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • References: <201204250436.AAA06580@smc.vnet.net>

On 4/24/2012 11:36 PM, leigh pascoe wrote:
> Is there a command to get the sum of the squared residuals after using
> FindFit?
>
> Here is an example that fits a function and then plots the data and the
> fitted function
>
> inc1[x_, M_, \[Tau]_, \[Phi]_] :=
>   M/\[Tau] \[Phi]^M E^(-(x/\[Tau])) (1 - E^(-(x/\[Tau])))^(M - 1)
>
> franceMaleCDdata19882005 = {{2.5,
>      0}, {7.5, .000008}, {12.5, .00004}, {17.5, .00012}, {22.5, \
> .000142}, {27.5, .00012}, {32.5, .000084}, {37.5,
>      0.000060}, {42.5, .000050}, {47.5, .000046}, {52.5, .000039}, \
> {57.5, 0.000043}, {62.5, .000022}, {67.5, .000026}, {72.5, .000016}, \
> {77.5, 0.000019}, {82.5, .000015}, {87.5, .000017}};
> franceMaleCDdata19882005plot =
>    ListPlot[franceMaleCDdata19882005,
>     PlotStyle ->  {Red, Dashed, Thick}, PlotRange ->  All,
>     Joined ->  True];
> franceMaleCDdata19882005fit =
>   FindFit[franceMaleCDdata19882005,
>    inc1[x, M, \[Tau], \[Phi]], {{M, 10}, {\[Tau], 5}, {\[Phi], .6}}, x]
> Show[Plot[
>    inc1[x, M, \[Tau], \[Phi]] /. franceMaleCDdata19882005fit, {x, 0,
>     85}, PlotRange ->  All], franceMaleCDdata19882005plot]
>
> What is the minimised value of the squared residuals in this case? I
> would like to compare the fit with the more complex function shown below
> (the fit is obviously better, but with more parameters used}.
>
> inc4[x_, N1_, N2_, \[Tau]1_, \[Tau]2_, \[Phi]_] := (
>    E^(-(x/\[Tau]1)) (1 - E^(-(x/\[Tau]1)))^(-1 +
>      N1) (1 - E^(-(x/\[Tau]2)))^N2 N1 \[Phi]^(N1 + N2))/\[Tau]1 + (
>    E^(-(x/\[Tau]2)) (1 - E^(-(x/\[Tau]1)))^
>     N1 (1 - E^(-(x/\[Tau]2)))^(-1 + N2) N2 \[Phi]^(N1 + N2))/\[Tau]2
>
> franceMaleCDdata19882005fit =
>   FindFit[franceMaleCDdata19882005,
>    inc4[x, N1,
>     N2, \[Tau]1, \[Tau]2, \[Phi]], {{N1, 8}, {N2, 2}, {\[Tau]1,
>      7}, {\[Tau]2, 23}, {\[Phi], .6}}, x]
> Show[Plot[
>    inc4[x, N1, N2, \[Tau]1, \[Tau]2, \[Phi]] /.
>     franceMaleCDdata19882005fit, {x, 0, 85},
>    PlotRange ->  All], franceMaleCDdata19882005plot]
>
> Thanks for any help.
>
> Leigh
>

To get diagnostics, you can use NonlinearModelFit instead. It will do 
the same least squares fitting, but return an object you can get results 
and diagnostics from. To get the sum of squared residuals, you could do

franceMaleCDdata19882005model =
   NonlinearModelFit[franceMaleCDdata19882005,
    inc1[x, M, \[Tau], \[Phi]], {{M, 10}, {\[Tau], 5}, {\[Phi], .6}},
    x];
Total[franceMaleCDdata19882005model["FitResiduals"]^2]

More information about available properties and results for nonlinear 
models can be found in the Nonlinear Models section of

tutorial/StatisticalModelAnalysis

in the Documentation Center. The tutorial can also be found online at

http://reference.wolfram.com/mathematica/tutorial/StatisticalModelAnalysis.html


Darren Glosemeyer
Wolfram Research



  • Prev by Date: Re: evaluating functions and displaying results numerically
  • Next by Date: Re: from a 2d-figure to an interactive 3d model? is it possible with mathematica?
  • Previous by thread: FindFit and squared residuals
  • Next by thread: Re: FindFit and squared residuals