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
- References:
- FindFit and squared residuals
- From: leigh pascoe <leigh@evry.inserm.fr>
- FindFit and squared residuals