Skip to contents

Generates synthetic clones of a PET data matrix by adding Poisson-distributed noise to each non-zero voxel. This approach helps address the limitations of functional data analysis (FDA) in single-subject versus group (1 vs. Group) setups, where a single subject lacks sufficient variability to reliably estimate Simultaneous Confidence Corridors (SCCs).

Usage

generatePoissonClones(originalMatrix, numClones, lambdaFactor)

Arguments

originalMatrix

A numeric matrix where each row represents a flattened PET image.

numClones

An integer specifying the number of synthetic clones to generate.

lambdaFactor

A positive numeric value that scales the magnitude of Poisson noise.

Value

A numeric matrix with numClones rows, each representing a noisy version of originalMatrix with Poisson noise added.

Details

  • Values equal to 0 remain unchanged to preserve background regions.

  • NA values are replaced with 0 before adding noise.

  • Poisson noise is applied only to positive values, scaled by lambdaFactor.

  • Enables valid SCC estimation in single-subject settings by artificially increasing sample size.

Examples

# Load example input matrix for Poisson cloning
data("generatePoissonClonesExample", package = "neuroSCC")
# Select 10 random voxel positions for display
set.seed(123)
sampledCols <- sample(ncol(generatePoissonClonesExample), 10)
# Generate 1 synthetic clone
clones <- generatePoissonClones(generatePoissonClonesExample, numClones = 1, lambdaFactor = 0.25)
# Show voxel intensity values after cloning
clones[, sampledCols]
#>  [1] 12  0  0  5  0  0  0  7 10  0