If you're interested, the source is here: https://github.com/colintbowers/DependentBootstrap.jl
I haven't tried to make it into a registered package yet as I'm still tinkering with it a fair bit. But I think I'm nearly there. It is fairly comprehensive for univariate bootstrapping, ie lots of methods and block length selection procedures, but I haven't really thought about extending it to multivariate data yet. Maybe later this year. Cheers, Colin On 24 June 2015 at 23:42, John Myles White <johnmyleswh...@gmail.com> wrote: > Excited you're working on dependent data bootstraps. I implemented one > just the other day since it could be useful for analyzing benchmark data. > Would be great to have other methods to do out. > > -- John > > > On Wednesday, June 24, 2015 at 5:31:52 AM UTC-4, Milan Bouchet-Valat wrote: >> >> Le mercredi 24 juin 2015 à 01:18 -0700, colintbow...@gmail.com a écrit >> : >> > Hi all, >> > >> > I've got an issue I don't really like in one of my modules, and I was >> > wondering the best thing (if anything) to do about it. >> > >> > The module if for dependent bootstraps, but the problem is more of a >> > project design issue. I have a type for each bootstrap method, e.g. >> > `StationaryBootstrap`, `MovingBlockBootstrap` e.t.c. and they are all >> > sub-types of an abstract `BootstrapMethod`. Then I have functions >> > that can be called over these different bootstrap method types and >> > multiple dispatch will make sure the appropriate code is called, e.g >> > `bootindices(::StationaryBootstrap)` or >> > `bootindices(::MovingBlockBootstrap)`. This all works nicely. >> > >> > I now want to define some keyword wrapper type functions in the >> > module for users who don't want to learn much about how the types >> > within the module work. For example, my wrapper might let the user >> > describe the bootstrap procedure they want with a string, eg >> > `bootindices(...; bootstrapmethod::ASCIIString="stationary")`. >> > >> > The keyword wrapper is called, and I have a variable >> > `bootstrapMethod` which is a string. I need to convert it into the >> > appropriate bootstrap method type so I can then call the appropriate >> > method via multiple dispatch. Currently I have one function that does >> > this and looks something like this: >> > >> > function boot_string_to_type(x::ASCIIString) >> > x == "stationary" && return(StationaryBootstrap()) >> > x == "movingBlock" && return(MovingBlock()) >> > ... >> > end >> > >> > The problem is that this function is not type-stable. >> > >> > Should I be worried? Does anyone have a better way of dealing with >> > this kind of issue? Maybe something involving symbols or expressions, >> > or anonymous functions etc? >> > >> > Note, the situation can sometimes get quite a bit more complicated >> > than this, with multiple key-word arguments, all of which need to be >> > combined into the constructor for the relevant type. >> I think the most Julian way to do this is to have users pass a type >> instead of a string. They would write >> bootindices{T<:BootstrapMethod}(...; method::Type{T}=StationaryBootstrap) >> >> That's simpler for the user as passing a string (since autocompletion w >> ill work), you don't need to define boot_string_to_type(), and it's >> type-stable. This is the idiom used by fit() in StatsBase.jl (and >> GLM.jl) to choose which type of model should be estimated. >> >> >> Hope this helps >> >> >> PS: in the cases where you still want to pass a string as an argument, >> rather than a type, consider using symbols instead, as it is more >> efficient. >> >