An open API service indexing awesome lists of open source software.

https://github.com/avallecam/powder

A Tidy Extension for Power Analysis
https://github.com/avallecam/powder

power-analysis pwr-package rstats sample-size tidyverse

Last synced: 3 months ago
JSON representation

A Tidy Extension for Power Analysis

Awesome Lists containing this project

README

        

---
output:
github_document:
#df_print: kable
---

```{r, include = FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
warning = FALSE,
comment = "#>",
fig.path = "man/figures/README-",
out.width = "100%"
)
```

# powder

**Author:** [Andree Valle Campos](https://twitter.com/avallecam)



**License:** [MIT](https://opensource.org/licenses/MIT)

[![Lifecycle: experimental](https://img.shields.io/badge/lifecycle-experimental-orange.svg)](https://www.tidyverse.org/lifecycle/#experimental)
[![CRAN status](https://www.r-pkg.org/badges/version/powder)](https://cran.r-project.org/package=powder)
[![DOI](https://zenodo.org/badge/240771164.svg)](https://zenodo.org/badge/latestdoi/240771164)

## Overview

The goal of `powder` is to extend __power__ and __sample size__ calculations:

- for _more than one set_ of parameters, and

- create tidy output _tables_ and _plots_ from them.

## Installation

You can install the developing version of `powder` using:

```r
if(!require("devtools")) install.packages("devtools")
devtools::install_github("avallecam/powder")
```

## Quick example

This is a basic example which shows you how to solve a common problem:

```{r example,eval=TRUE,message=FALSE}
library(tidyverse)
library(broom)
library(pwr)
library(powder)
```

```{r}
#example("pwr.2p.test")
pwr.2p.test(h=0.3,n=80,sig.level=0.05,alternative="greater")

pwr_grid(h=0.3,n=seq(80,90,5),sig.level=0.05,alternative="greater") %>%
pwr_tidy(test_function = pwr.2p.test)

pwr_grid(h=seq(0.3,0.5,0.1),n=seq(80,90,5),sig.level=0.05,alternative="greater") %>%
pwr_tidy(test_function = pwr.2p.test)
```

## Core structure

`powder` consist of three main functions:

- `pwr_grid`: creates a tibble from all combination of input parameters using `tidyr::expand_grid`.

- `pwr_tidy`: creates a `broom::tidy()` output from the calculations of all input parameters using `purrr::pmap`.

- `pwr_plot`: create a `ggplot` with input parameters and calculated value (sample size, power or effect size)

## More examples

### One set of parameters

```{r}
diff <- 10
sigma <- 10
delta <- diff/sigma

pwr.t.test(d = delta, power = 0.8, type = "one.sample")
# sample - power plot
#pwr.t.test(d = delta, power = 0.8, type = "one.sample") %>% plot()
```

### More than one set of parameters

#### sample size

```{r}
# stata
# power onemean 20, diff(10 20 30) sd(10 12.5 15)
eg1 <- pwr_grid(n = NULL,
diff = c(10,20,30),
sigma = c(10,12.5,15),
d = NULL,
sig.level = 0.05,
power = 0.8,
type = "one.sample",
alternative = "two.sided")

#create tidytable
eg1 %>% pwr_tidy(test_function = pwr.t.test)

#create ggplot
eg1 %>%
pwr_tidy(test_function = pwr.t.test) %>%
pwr_plot(x = diff,y = n,group = sigma)
```

#### power

```{r}
# stata
# power onemean 20, diff(5 (5) 15) sd(10) n(10 (2) 20)
eg2 <- pwr_grid(n = seq(from = 10,to = 20,by = 2),
diff = seq(from = 5,to = 15,by = 5),
sigma = 10,
d = NULL,
sig.level = 0.05,
#power = 0.8,
type = "one.sample",
alternative = "two.sided")

#create tidytable
eg2 %>% pwr_tidy(test_function = pwr.t.test)

#create ggplot
eg2 %>%
pwr_tidy(test_function = pwr.t.test) %>%
pwr_plot(x = n,y = power,group=diff)
```

## References

Stephane Champely (2018). pwr: Basic Functions for Power
Analysis. R package version 1.2-2.
https://CRAN.R-project.org/package=pwr

## Citation

```{r}
citation("powder")
```