Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jtleek/slipper
Tidy and easy bootstrapping
https://github.com/jtleek/slipper
Last synced: 1 day ago
JSON representation
Tidy and easy bootstrapping
- Host: GitHub
- URL: https://github.com/jtleek/slipper
- Owner: jtleek
- Created: 2016-12-08T21:08:11.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2017-10-05T18:12:29.000Z (about 7 years ago)
- Last Synced: 2024-08-02T06:03:34.118Z (3 months ago)
- Language: R
- Size: 72.3 KB
- Stars: 118
- Watchers: 7
- Forks: 12
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
Bootstrapping made easy and tidy with slipper
=================![](slipper.jpg)
You've heard of [broom](https://cran.r-project.org/web/packages/broom/index.html) for tidying up your R functions. slipper is an R package for tidy/easy bootstrapping. There are already a bunch of good bootstrapping packages out there including [bootstrap](https://cran.r-project.org/web/packages/bootstrap/) and [boot](https://cran.r-project.org/web/packages/boot/). You can also bootstrap with [dplyr and broom](https://cran.r-project.org/web/packages/broom/vignettes/bootstrapping.html) or with [purrr and modelr](https://cran.r-project.org/web/packages/modelr).
But I'm too dumb for any of those. So slipper includes some simple,pipeable bootstrapping functions for me
### install
with `devtools`:```r
devtools::install_github('jtleek/slipper')
```### use
There are only two functions in this package.
Call `slipper` to bootstrap any function that returns
a single value.```r
slipper(mtcars,mean(mpg),B=100)
```slipper is built to work with pipes and the tidyverse too.
```r
mtcars %>% slipper(mean(mpg),B=100)
```The output is a data frame with the values of the function on the original data set and the bootstrapped replicates. You can calculate confidence intervals using summarize
```r
mtcars %>% slipper(mean(mpg),B=100) %>%
filter(type=="bootstrap") %>%
summarize(ci_low = quantile(value,0.025),
ci_high = quantile(value,0.975))
```You can also bootstrap linear models using `slipper_lm` just pass the data frame and the formula you want to fit on the original data and on the bootstrap samples.
```r
slipper_lm(mtcars,mpg ~ cyl,B=100)
```This is also pipeable
```r
mtcars %>% slipper_lm(mpg ~ cyl,B=100)
```The default behavior is to bootstrap complete cases, but if you want to bootstrap residuals set `boot_resid=TRUE`
```S
mtcars %>% slipper_lm(mpg ~ cyl,B=100,boot_resid=TRUE)
```You can calculate bootstrap confidence intervals in the same way as you do for `slipper`.
```r
mtcars %>% slipper_lm(mpg ~ cyl,B=100) %>%
filter(type=="bootstrap",term=="cyl") %>%
summarize(ci_low = quantile(value,0.025),
ci_high = quantile(value,0.975))
```Finally if you want to do a bootstrap hypothesis test you can pass a formula and a nested null formula. `formula` must every term in `null_formula` and one additional one you want to test.
```r
# Bootstrap hypothesis test -
# here I've added one to the numerator
# and denominator because bootstrap p-values should
# never be zero.mtcars %>%
slipper_lm(mpg ~ cyl, null_formula = mpg ~ 1,B=1000) %>%
filter(term=="cyl") %>%
summarize(num = sum(abs(value) >= abs(value[1])),
den = n(),
pval = num/den)
```That's basically it for now. Would love some help/pull requests/fixes as this is my first attempt at getting into the tidyverse :).