RE: help on bootstrap sample
- To: mathgroup at smc.vnet.net
- Subject: [mg37360] RE: [mg37338] help on bootstrap sample
- From: "DrBob" <drbob at bigfoot.com>
- Date: Fri, 25 Oct 2002 02:46:51 -0400 (EDT)
- Reply-to: <drbob at bigfoot.com>
- Sender: owner-wri-mathgroup at wolfram.com
I'm totally guessing, but I gather you want sampleNoReplace to return a sample of size n from 'data', without duplications, with n>Length[data] resulting in a rearrangement of 'data'. If so, here's a simple solution: ClearAll[sampleNoReplace, sampleReplace] sampleNoReplace[data_List, n_Integer?Positive] := Take[Sort[data, Random[] > 1/2 &], Min[n, Length[data]]] sampleReplace[data_List:{0, 1}, n_Integer:1] := data[[Table[Random[Integer, {1, Length@data}], {n}]]] There's no purpose for Module if you're not declaring local variables. Bobby -----Original Message----- From: Søren Merser [mailto:merser at image.dk] To: mathgroup at smc.vnet.net Subject: [mg37360] [mg37338] help on bootstrap sample Hi Mathematica freeks I've made two small rutines for sampling (bootstrap statistics) They are working , but at least 'SampleNoReplace' is rather slow I was wondering if any of you know of a faster way to do this Regards soren SampelReplace[data_List:{0, 1}, n_:1] := Module[{}, data[[Table[Random[Integer, {1, Length@data} ], {n}]]]] SampelNoReplace[data_List, n_] := Module[{idx, len, res, d, hi, i}, d = data; res = {}; len = hi = Length@d; For[i = 1, i <= n && i <= len, i++, idx = Random[Integer, {1, hi--} ]; AppendTo[res, d[[idx]]]; d = Drop[d, {idx}]; ]; res ]