omics.co.in logo omics.co.in

Module 3: Descriptive Statistics: Central Tendency, Dispersion & Environmental Summaries

Tested Stacks: GATK 4.6.1 Samtools 1.21 Nextflow 24.10 Seurat v5.1 Python 3.12
Prerequisites: Basic Linux CLI & Sequencing Formats
Module 03 • Descriptive Stats Track 19 • Applied Environmental Statistics Hands-On R & RStudio Included

Module 3: Descriptive Statistics: Central Tendency, Dispersion & Environmental Summaries

Computing and interpreting mean, median, range, interquartile range (IQR), sample variance, standard deviation (s), standard error of the mean (SEM), and coefficient of variation (CV) across monitoring sites.

3. Descriptive Statistics: Central Tendency, Dispersion & Variation

Before performing formal hypothesis testing, scientists must summarize the distribution of their data. Descriptive statistics reduce large environmental monitoring series into two essential dimensions: Location (Central Tendency) and Spread (Dispersion).

Measures of Central Tendency

  • Arithmetic Mean ($\bar{x}$): The center of mass: $\bar{x} = \frac{1}{n}\sum_{i=1}^{n} x_i$. Highly sensitive to extreme pollution spikes or sensor artifacts.
  • Median: The 50th percentile value. Robust to extreme outliers and asymmetric skewness.
  • Mode: The most frequent observation. Used for discrete categories or multi-modal contaminant clusters.

Measures of Dispersion & Precision

  • Sample Variance ($s^2$): Mean squared deviation: $s^2 = \frac{\sum (x_i - \bar{x})^2}{n - 1}$.
  • Standard Deviation ($s$): Natural spread in original measurement units: $s = \sqrt{s^2}$.
  • Standard Error of Mean (SEM): Uncertainty of sample mean estimating true population mean: $ ext{SEM} = \frac{s}{\sqrt{n}}$.
  • Coefficient of Variation (CV%): Normalized unitless dispersion: $ ext{CV} = \frac{s}{\bar{x}} imes 100\%$.

Hands-On R Script: Building Group-Wise Environmental Summary Tables with dplyr

library(tidyverse)

# Sample Environmental Dataset: Particulate Matter (PM2.5 ug/m3) across 3 urban zones
set.seed(123)
air_quality <- tibble(
  zone = rep(c("Residential", "Commercial", "Industrial"), each = 20),
  pm25 = c(rnorm(20, mean = 18, sd = 4),
           rnorm(20, mean = 35, sd = 7),
           c(rnorm(18, mean = 65, sd = 12), 145, 160)) # Industrial has 2 extreme spike outliers
)

# Compute Complete Descriptive Statistics by Zone
summary_table <- air_quality %>%
  group_by(zone) %>%
  summarise(
    N       = n(),
    Mean    = mean(pm25),
    SD      = sd(pm25),
    SEM     = sd(pm25) / sqrt(n()),
    Median  = median(pm25),
    IQR     = IQR(pm25),
    Min     = min(pm25),
    Max     = max(pm25),
    CV_pct  = (sd(pm25) / mean(pm25)) * 100
  )

print(as.data.frame(summary_table))
# Notice in Industrial how Mean (73.2) is pulled higher than Median (66.5) by the extreme spikes!
⚠️

Common Pitfalls & Troubleshooting Checklist

  • Java Heap Exhaustion (GATK / Picard): If processes terminate with java.lang.OutOfMemoryError, set your environment variable explicitly: export _JAVA_OPTIONS="-Xmx16g -Djava.io.tmpdir=/tmp".
  • Index Timestamp Mismatch: If tools complain that a BAM index is missing or out of date, regenerate with samtools index -@ 4 sample.bam.
  • Conda Channel Conflicts: Avoid ABI incompatibilities between bioconda and conda-forge by setting strict priority: conda config --set channel_priority strict.
  • Chromosome Naming Contamination: Always verify whether reference FASTA headers use chr1 or 1; divergent naming causes silent alignment drops.
Was this guide helpful to your research?
Help us maintain 100% accurate, peer-reviewed bioinformatics standards.
📝 Propose Edit on GitHub ↗