On Wed, Aug 8, 2012 at 2:38 PM, Constantine Evans <span dir="ltr">&lt;<a href="mailto:cevans@evanslabs.org" target="_blank">cevans@evanslabs.org</a>&gt;</span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

Hello everyone,<br>
<br></blockquote><div><br>Hi,<br>†</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
A few years ago I implemented a scikit for bootstrap confidence limits<br>
(<a href="https://github.com/cgevans/scikits-bootstrap" target="_blank">https://github.com/cgevans/scikits-bootstrap</a>). I didnít think much<br>
about it after that until recently, when I realized that some people<br>
are actually using it, and that thereís apparently been some talk<br>
about implementing this functionality in either scipy.stats or<br>
statsmodels (I should thank Randal Olson for discussing this and<br>
bringing it to my attention).<br>
<br>
As such Iíve rewritten most of the code, and written up some<br>
docstrings. The current code can do confidence intervals with basic<br>
percentile interval, bias-corrected accelerated, and approximate<br>
bootstrap confidence methods, and can also provide bootstrap and<br>
jackknife indexes. Most of it is implemented from the descriptions in<br>
Efron and Tibshiraniís Introduction to the Bootstrap, but the ABC code<br>
at the moment is a port from the modified-BSD-licensed bootstrap<br>
package for R (not the boot package) as Iím not entirely confident in<br>
my understanding of the method.<br>
<br>
And so, I have a few questions for everyone:<br>
<br>
* Is there any interest in including this sort of code in either<br>
scipy.stats or statsmodels? If so, where do people think would be the<br>
better place? The code is relatively small; at the moment it is less<br>
than 200 lines, with docstrings probably making up 100 of those lines.<br></blockquote><div><br>I think it would be great to have this in statsmodels. I filed an enhancement ticket about it this morning (also brought to my attention by Randy&#39;s blog post).<br>

<br><a href="https://github.com/statsmodels/statsmodels/issues/420">https://github.com/statsmodels/statsmodels/issues/420</a><br>†</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


* Also, if so, what would need to be changed, added, and improved<br>
beyond what is mentioned in the Contributing to Scipy part of the<br>
reference guide? Iím never a fan of my own code, and imagine quite a<br>
bit would need to be fixed; I know tests will need to be added too.<br>
<br></blockquote><div><br>We can discuss further on the statsmodels mailing list (cc&#39;d) unless someone feels strongly that this should go into scipy. I&#39;m not sure about API yet so that it can be general and used across all the models in statsmodels. It&#39;s one of the reasons I&#39;ve put off incorporating code like this for so long.<br>

†</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
In addition, I have a few questions about what would be better<br>
practice for the API, and I havenít really found a guide on best<br>
practices for Scipy: <br></blockquote><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
* When I started writing the code, I wrote a single function ci for<br>
confidence intervals, with a method argument to choose the method.<br>
This is easy for users, especially so that they donít have to look<br>
through documentation to realize that BCA is the most generally useful<br>
method (at least from everything Iíve read) and that there really<br>
isnít any reason to use many of the simpler methods. However, ABC<br>
takes different paramenters, and needs a statistic function that takes<br>
weights, which makes this single-function organization trickier. At<br>
the moment, I have a separate function for ABC. Would it be better to<br>
split up all the methods to their own functions?<br></blockquote><div><br>I think this might be preferable.<br>†</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


* ABC requires a statistic function that takes weights. Iíve noticed<br>
that things like np.average takes a weights= argument. Would it be<br>
better to require input of a stat(data,weights) function, or input of<br>
a stat(data,weights=) with weights as a named argument? The latter<br>
would be nice in terms of allowing the same function to be used for<br>
all methods, but would make it impossible to use a lambda for the<br>
function. Is there some other method of doing this entirely?<br>
* Are there any missing features that anyone thinks should be added?<br>
<br>
I apologize if much of this is answered elsewhere, I just havenít<br>
found any of it; I also apologize if this is far too long-winded and<br>
confusing!<br>
<br>
Regards,<br>
Constantine Evans<br>
_______________________________________________<br>
SciPy-Dev mailing list<br>
<a href="mailto:SciPy-Dev@scipy.org">SciPy-Dev@scipy.org</a><br>
<a href="http://mail.scipy.org/mailman/listinfo/scipy-dev" target="_blank">http://mail.scipy.org/mailman/listinfo/scipy-dev</a><br>
</blockquote></div><br>