Re: Extracting Parameter Values from NonlinearModelFit
- To: mathgroup at smc.vnet.net
- Subject: [mg127916] Re: Extracting Parameter Values from NonlinearModelFit
- From: Alexei Boulbitch <Alexei.Boulbitch at iee.lu>
- Date: Sat, 1 Sep 2012 02:26:46 -0400 (EDT)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- Delivered-to: l-mathgroup@wolfram.com
- Delivered-to: mathgroup-newout@smc.vnet.net
- Delivered-to: mathgroup-newsend@smc.vnet.net
Hi, I'm modelling a series (>2000) of data points (5x2 lists) using NonlinearModelFit, and trying to extract the Fitted Parameter Values to separate lists using the following code: model = a Exp[-k x]; i = 1; For[i = 1, i <= Length[data], {nlm = NonlinearModelFit[data[[i]], {model, k<1}, {a, b}, x]["BestFitParameters"]; aValues = Append[aValues, nlm[[1, 2]]]; kValues = Append[kValues, nlm[[2, 2]]]}, i++ ]; I'm able to determine the Parameters via nlm, but can't extract the parameter values. Any thoughts? Thanks in advance! C Hi, The problem comes from the fact that in the model you use parameter k, and in the fitting operator - parameter b. The second source of an inconvenience (not really a problem) is the use of the loop, which is generally not recommended in Mathematica. Your aim can be achieved in a more easy way. For example, like follows. Here I construct something like the data points to be fitted (to have something to play with). The points are contained in the list entitled tab2: tab1 = Transpose@{RandomReal[{0, 1}, {5}], RandomReal[{-1, 0}, {5}]}; tab2 = Table[{x, tab1[[i, 1]]*Exp[tab1[[i, 2]]*x] + RandomReal[{-0.01, 0.01}]}, {i, 1, 5}, {x, 0, 1, 0.1}]; For example its first sublist is: tab2[[1]] {{0., 0.639913}, {0.1, 0.614459}, {0.2, 0.588334}, {0.3, 0.569105}, {0.4, 0.54342}, {0.5, 0.516209}, {0.6, 0.504349}, {0.7, 0.490187}, {0.8, 0.459}, {0.9, 0.446124}, {1., 0.421486}} And there are 5 such different sublists. This is the list tab3 containing solutions for the parameters a and b of your model: model = a Exp[-b x]; tab3 = Table[ FindFit[tab2[[i]], model, {a, b}, x], {i, 1, 5}] {{a -> 0.568633, b -> 0.364295}, {a -> 0.433001, b -> 0.319931}, {a -> 0.286261, b -> 0.397863}, {a -> 0.88219, b -> 0.0503344}, {a -> 0.80377, b -> 0.843876}} If you execute this, you will visualize the fitting: Table[Show[{ListPlot[tab2[[i]], PlotStyle -> Red], Plot[model /. tab3[[i]], {x, 0, 1}]}], {i, 1, 5}] Have fun, Alexei Alexei BOULBITCH, Dr., habil. IEE S.A. ZAE Weiergewan, 11, rue Edmond Reuter, L-5326 Contern, LUXEMBOURG Office phone : +352-2454-2566 Office fax: +352-2454-3566 mobile phone: +49 151 52 40 66 44 e-mail: alexei.boulbitch at iee.lu