Re: simultaneous nonlinear regression of a lot of data
- To: mathgroup at smc.vnet.net
- Subject: [mg65453] Re: [mg65427] simultaneous nonlinear regression of a lot of data
- From: "Carl K. Woll" <carlw at wolfram.com>
- Date: Sun, 2 Apr 2006 05:00:13 -0400 (EDT)
- References: <200603311109.GAA15091@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
dantimatter wrote:
> Hello all,
>
> I have a question about using the nonlinear regression function on a
> large data set. Perhaps some of you have suggestions, and can point me
> in another direction if this is not the best way to solve this problem.
>
>
> Basically I have ~100 data sets of ~200 points each, and I'd like to
> fit each set to the following function:
>
> G(t) = 1/N * [ y / (1+t/m1) + (1-y) / (1+t/m2) ]
>
> For each data set, the numbers N and y are different, but the numbers
> m1 and m2 are the same for all data sets. The problem is that I only
> know m1, and not m2. I am hoping to simultaneously solve all these
> data sets to come up with a value for m2, but I'm not entirely sure how
> to code it. I can come up with a reasonable m2 to start any
> regression.
>
> Any thoughts?
>
> Thanks!
Why don't you just augment your data sets with the n and y information,
so that it looks like:
data = {
{n1, y1, t1, G[t1]}, (* data set 1 *)
{n1, y1, t2, G[t2]},
...
{n10, y10, t1, G[t1]}, (* data set 10 *)
{n10, y10, t2, G[t2]},
...
}
Then, use FindFit in the usual way
FindFit[data, 1/n * (y/(1+t/m1) + (1-y)/(1+t/m2)), {m2}, {n, y, t}]
where of course you substitute the known value of m1. With this approach
you can even use NonlinearRegress, and obtain regression statistics for
the fit. I tested this with a sample of 100 sets of 200 data points for
a total of 20000 data points, and FindFit found the fit in .2 seconds.
Carl Woll
Wolfram Research