Awesome
sparrpowR: Power analysis to detect spatial relative clusters <img src="man/figures/sparrpowR.png" width="120" align="right" />
<!-- badges: start --> <!-- badges: end -->Date repository last updated: January 23, 2024
<h2 id="overview">Overview
</h2>The sparrpowR
package is a suite of R
functions to calculate the statistical power to detect clusters using the kernel-based spatial relative risk function that is estimated using the sparr package. Basic visualization is also supported.
Installation
</h2>To install the release version from CRAN:
install.packages("sparrpowR")
To install the development version from GitHub:
devtools::install_github("machiela-lab/sparrpowR")
<h2 id="available-functions">
Available functions
</h2> <table> <colgroup> <col width="30%"/> <col width="70%"/> </colgroup> <thead> <tr class="header"> <th>Function</th> <th>Description</th> </tr> </thead> <tbody> <td><code>spatial_power</code></td> <td>Main function. Compute the statistical power of a spatial relative risk function using randomly generated data.</td> </tr> <td><code>spatial_data</code></td> <td>Generate random bivariate data for a spatial relative risk function.</td> </tr> <td><code>jitter_power</code></td> <td>Compute the statistical power of a spatial relative risk function using previously collected data.</td> </tr> <td><code>spatial_plots</code></td> <td>Easily make multiple plots from <code>spatial_power</code>, <code>spatial_data</code>, and <code>jitter_power</code> outputs.</td> </tr> <td><code>pval_correct</code></td> <td>Called within <code>spatial_power</code> and <code>jitter_power</code>, calculates various multiple testing corrections for the alpha level.</td> </tr> </tbody> <table> <h2 id="authors">Authors
</h2>-
Ian D. Buller - Social & Scientific Systems, Inc., a division of DLH Corporation, Silver Spring, Maryland (current) - Occupational and Environmental Epidemiology Branch, Division of Cancer Epidemiology and Genetics, National Cancer Institute, National Institutes of Health, Rockville, Maryland (original) - GitHub - ORCID
-
Derek W. Brown - Integrative Tumor Epidemiology Branch, Division of Cancer Epidemiology and Genetics, National Cancer Institute, National Institutes of Health, Rockville, Maryland (original) - GitHub - ORCID
See also the list of contributors who participated in this package, including:
- Tim A. Myers - Laboratory of Genetic Susceptibility, Division of Cancer Epidemiology and Genetics, National Cancer Institute, National Institutes of Health, Rockville, Maryland - GitHub
Usage
set.seed(1234) # for reproducibility
# ------------------ #
# Necessary packages #
# ------------------ #
library(sparrpowR)
library(spatstat.geom)
library(stats)
# ----------------- #
# Run spatial_power #
# ----------------- #
# Circular window with radius 0.5
# Uniform case sampling within a disc of radius of 0.1 at the center of the window
# Complete Spatial Randomness control sampling
# 20% prevalence (n = 300 total locations)
# Statistical power to detect both case and control relative clustering
# 100 simulations (more recommended for power calculation)
unit.circle <- spatstat.geom::disc(radius = 0.5, centre = c(0.5,0.5))
foo <- sparrpowR::spatial_power(win = unit.circle,
sim_total = 100,
x_case = 0.5,
y_case = 0.5,
samp_case = "uniform",
samp_control = "CSR",
r_case = 0.1,
n_case = 50,
n_control = 250)
# ----------------------- #
# Outputs from iterations #
# ----------------------- #
# Mean and standard deviation of simulated sample sizes and bandwidth
stats::mean(foo$n_con); stats::sd(foo$n_con) # controls
stats::mean(foo$n_cas); stats::sd(foo$n_cas) # cases
stats::mean(foo$bandw); stats::sd(foo$bandw) # bandwidth of case density (if fixed, same for control density)
# Global Test Statistics
## Global maximum relative risk: Null hypothesis is mu = 1
stats::t.test(x = foo$s_obs, mu = 0, alternative = "two.sided")
## Integral of log relative risk: Null hypothesis is mu = 0
stats::t.test(x = foo$t_obs, mu = 1, alternative = "two.sided")
# ----------------- #
# Run spatial_plots #
# ----------------- #
# Statistical power for case-only clustering (one-tailed test)
sparrpowR::spatial_plots(foo)
# Statistical power for case clustering and control
clustering (two-tailed test)
## Only showing second and third plot
sparrpowR::spatial_plots(foo, cascon = TRUE)
# --------------------------- #
# Multiple Testing Correction #
# --------------------------- #
# Same parameters as above
# Apply a conservative Bonferroni correction
set.seed(1234) # reset RNG
# Run spatial_power()
foo <- sparrpowR::spatial_power(win = unit.circle,
sim_total = 100,
x_case = 0.5,
y_case = 0.5,
samp_case = "uniform",
samp_control = "CSR",
r_case = 0.1,
n_case = 50,
n_control = 250,
alpha = 0.05,
p_correct = "Bonferroni")
median(foo$alpha) # critical p-value of 3e-6
# Run spatial_plots() for case-only clustering
## Only showing third plot
sparrpowR::spatial_plots(foo, cascon = TRUE)
Funding
This package was developed while the authors were originally postdoctoral fellows supported by the Cancer Prevention Fellowship Program at the National Cancer Institute. Any modifications since December 05, 2022 were made while the author I.D.B. was an employee of Social & Scientific Systems, Inc., a division of DLH Corporation.
Acknowledgments
When citing this package for publication, please follow:
citation("sparrpowR")
Questions? Feedback?
For questions about the package please contact the maintainer Dr. Ian D. Buller or submit a new issue.