Re: Using "Fit"
- To: mathgroup at smc.vnet.net
- Subject: [mg16166] Re: [mg16128] Using "Fit"
- From: BobHanlon at aol.com
- Date: Tue, 2 Mar 1999 01:13:13 -0500
- Sender: owner-wri-mathgroup at wolfram.com
In a message dated 2/27/99 5:35:04 AM, pmhowe at lanl.gov writes:
>I'm trying to analyze some datasets in a moderately efficient way, and
>am
>having trouble. Your suggestions will be appreciated.
>
>Suppose that I have a dataset, and I want to fit a function through a
>number of points, where I vary that number systematically, by taking just
>two {x,y} points, then three points, then four, etc. So, if "data" is my
>dataset, I can form new datasets by doing
>
>Take[data,2], Take[data,3], etc. I can then do a fit to each dataset.
>
>Fit[Take[data,2], {1,x},x];
>Fit[Take[data,3], {1,x},x];
>Fit[Take[data,4], {1,x},x]; etc.
>
>But this is slow for large datasets. I can form a table of datasets.
>
>Table[Take[data,n],{n,2,100}];
>
>Now I'd like to apply Fit to each of the lists in the table, and I can't
>figure out the syntax. Or, perhaps there is a better approach.
>
Phil,
allData = Sort[Table[Random[], {128}]];
You just need to Map the function Fit onto the table which you generated.
nbrDataElem = 16;
data = Take[allData, nbrDataElem];
dataSets = Table[Take[data, n], {n, nbrDataElem}];
Fit[#, {1, x}, x]& /@ dataSets // ColumnForm
For large data sets, instead of increasing the number of elements
one at a time, you might want to consider doubling the number of
elements at each step in the process.
nbrDataElem = Length[allData];
dataSets = Table[Take[allData, 2^n],
{n, 0, Round[Log[2, nbrDataElem]]}];
Fit[#, {1, x}, x]& /@ dataSets // ColumnForm
Bob Hanlon