statistical-analysis
Guided statistical analysis for research data - test selection, assumption checking, effect sizes, power analysis, Bayesian alternatives, and APA-formatted reporting
Install / Use
npx skills add K-Dense-AI/scientific-agent-skills --skill statistical-analysisInstalls into whichever agent you are using.
SKILL.md
Installable skill definition
Quality Score
Category
Education & ResearchSupported Platforms
Our assessment of statistical-analysis
statistical-analysis scores 100/100 on our quality scale, 7th of 441 Education & Research skills we index (top 2%).
Its SKILL.md is 20 KB long, well organised into 50 sections with 14 code examples: a thorough specification that gives an agent plenty to work with.
With 46,441 GitHub stars, it is one of the more widely adopted skills in the catalogue.
Maintenance, license and trust
- The repository was last updated about 2 months ago, so statistical-analysis is actively maintained.
- Our last check on 2026-10-22 found the source still online.
- It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 100/100, with no cautions. These come from repository metadata, not a code audit β read the skill file before letting an agent act on it.
Safety scan
No issues foundOur scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. An AI review of the same text found nothing harmful.
AI review by kimi-k2.7-code on 2026-09-25. Automated pattern scan on 2026-09-25. It catches known dangerous patterns, not every risk β read a skill before letting an agent act on it.
statistical-analysis compared with similar skills
statistical-analysis has the highest quality score among these 4 similar skills, though 4 alternatives have been updated more recently.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| statistical-analysis (this skill)by K-Dense-AI | 100 | 46.4k | 48d ago | SKILL.md |
| Agent-Reachby Panniantong | 100 | 110.3k | 1d ago | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 79.1k | today | CLAUDE.md |
| last30days-skillby mvanhorn | 100 | 67.0k | today | CLAUDE.md |
| Scraplingby D4Vinci | 100 | 99.8k | today | MCP Server |
Frequently asked questions
- How do I install statistical-analysis?
- Run
npx skills add K-Dense-AI/scientific-agent-skills --skill statistical-analysis. The install tabs above show the steps for each supported agent. - Which AI agents does statistical-analysis work with?
- It is written for Universal, as a SKILL.md file. Other agents that read the same format can often use it too.
- Is statistical-analysis safe to use?
- Our scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. An AI review of the same text found nothing harmful. It is MIT-licensed and scores 100/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is statistical-analysis still maintained?
- The repository was last updated about 2 months ago, so statistical-analysis is actively maintained.
Skill content
View source on GitHubname: statistical-analysis description: Guided statistical analysis for research data - test selection, assumption checking, effect sizes, power analysis, Bayesian alternatives, and APA-formatted reporting. Use whenever a user wants to compare groups, test a hypothesis, analyze experimental or survey data, check statistical assumptions, compute required sample sizes, or write up results - even if they never name a specific test. Covers t-tests, ANOVA, chi-square, correlation, regression, non-parametric and Bayesian methods. For low-level model APIs, see the statsmodels and pymc skills. license: MIT license metadata: version: "1.2" skill-author: K-Dense Inc.
Statistical Analysis
Overview
Conduct hypothesis tests (t-tests, ANOVA, chi-square), regression, correlation, and Bayesian analyses with systematic assumption checking, effect sizes, and APA-style reporting. The goal is an analysis a reviewer could not tear apart: the right test, verified assumptions, honest effect sizes, and a complete write-up.
When to Use This Skill
Use this skill when:
- Conducting statistical hypothesis tests (t-tests, ANOVA, chi-square, non-parametric)
- Performing regression or correlation analyses
- Running Bayesian statistical analyses
- Checking statistical assumptions and diagnostics
- Calculating effect sizes and conducting power analyses
- Reporting statistical results in APA format
- Analyzing experimental or observational data for research
Installation
Use uv to install the libraries used in this skill. Pin versions in production; unpinned installs are fine for exploration.
# Core frequentist stack (Python 3.10+; 3.12+ recommended for latest SciPy/ArviZ)
uv pip install "pingouin>=0.6" "scipy>=1.11" "statsmodels>=0.14.6" pandas matplotlib seaborn
# Bayesian modeling (PyMC 5 + ArviZ)
uv pip install "pymc>=5.0" "arviz>=1.0"
Compatibility notes (verified against pingouin 0.6.1, statsmodels 0.14.6, arviz 1.2, 2026):
- Pingouin 0.6.0 renamed output columns to remove special characters:
p_val,cohen_d,CI95,p_unc(previouslyp-val,cohen-d,CI95%,p-uncin 0.5.x). Examples below use the current names; if stuck on 0.5.x, use the hyphenated forms. - statsmodels + SciPy: use
statsmodels>=0.14.6withscipy>=1.11to avoid_lazywhereimport errors on SciPy 1.16+. - ArviZ 1.x:
az.summary()now defaults to 89% intervals (eti89columns) and the width parameter isci_prob(nothdi_prob). To report a conventional 95% credible interval, passaz.summary(trace, ci_prob=0.95). - One-sided Bayes Factors are gone from Pingouin:
pg.ttest(..., alternative='greater')silently drops theBF10column, andpg.bayesfactor_ttestraises on one-sided alternatives. For one-sided Bayesian tests, use PyMC directly (compute the posterior probability of the directional hypothesis) or JASP/R's BayesFactor.
For model-specific APIs (OLS, GLM, ARIMA), see the statsmodels skill. For PyMC workflows, see the pymc skill.
Analysis Workflow
Every sound analysis follows the same arc. Skipping steps is how analyses end up retracted, so work through them in order and say what you did at each one.
- Frame the question before touching the data. State the hypothesis, the outcome and predictor variables, and the design (independent vs. paired, number of groups). Commit to a planned test now β choosing the test after peeking at results is p-hacking, even when done innocently.
- Inspect the data. Per group: n, mean, SD, median, missing values. Plot the raw data (histograms or box plots) before any test. Unequal group sizes, missingness, floor/ceiling effects, and outliers all change what test is appropriate β surface them to the user rather than silently working around them.
- Select the test using the quick reference below, or
references/test_selection_guide.mdfor designs beyond the basics (counts, time-to-event, reliability, factorial). - Check assumptions with
scripts/assumption_checks.py. If an assumption fails, switch to the remedial test (table below) and report both the plan and the change. - Run the test and always compute the effect size alongside it β a p-value says an effect exists; the effect size says whether anyone should care.
- Report using the APA templates below, including descriptives, exact statistics, effect sizes with CIs, and the assumption checks performed.
If the user only needs one step (e.g., "how many participants do I need?"), jump straight to that section β but still confirm the design assumptions the calculation rests on.
Test Selection Guide
Quick Reference: Choosing the Right Test
Use references/test_selection_guide.md for comprehensive guidance (counts, survival, reliability, factorial designs). Quick reference:
Comparing Two Groups:
- Independent, continuous, normal β Independent t-test
- Independent, continuous, non-normal β Mann-Whitney U test
- Paired, continuous, normal β Paired t-test
- Paired, continuous, non-normal β Wilcoxon signed-rank test
- Binary outcome β Chi-square or Fisher's exact test
Comparing 3+ Groups:
- Independent, continuous, normal β One-way ANOVA
- Independent, continuous, non-normal β Kruskal-Wallis test
- Paired, continuous, normal β Repeated measures ANOVA
- Paired, continuous, non-normal β Friedman test
Relationships:
- Two continuous variables β Pearson (normal) or Spearman correlation (non-normal)
- Continuous outcome with predictor(s) β Linear regression
- Binary outcome with predictor(s) β Logistic regression
Bayesian Alternatives:
All tests have Bayesian versions providing direct probability statements about hypotheses, Bayes Factors quantifying evidence, and the ability to support the null. See references/bayesian_statistics.md.
Assumption Checking
Always check assumptions before interpreting test results, and report the checks β reviewers look for them.
Use the bundled scripts/assumption_checks.py module. Run Python from the skill directory (skills/statistical-analysis/) or add scripts/ to sys.path:
from assumption_checks import comprehensive_assumption_check
# Outliers + normality (per group) + homogeneity of variance, with plots
results = comprehensive_assumption_check(
data=df,
value_col='score',
group_col='group', # Optional: for group comparisons
alpha=0.05
)
For targeted checks, import individual functions:
from assumption_checks import (
check_normality, # Shapiro-Wilk + Q-Q plot + histogram
check_normality_per_group,
check_homogeneity_of_variance, # Levene's test + box plots
check_linearity, # scatter + residual plot for simple regression
check_regression_diagnostics, # full OLS diagnostics (see Regression below)
detect_outliers # IQR or z-score methods
)
result = check_normality(data=df['score'], name='Test Score', alpha=0.05, plot=True)
print(result['interpretation'])
print(result['recommendation'])
What to Do When Assumptions Are Violated
Normality violated:
- Mild violation + n > 30 per group β Proceed with parametric test (robust)
- Moderate violation β Use non-parametric alternative
- Severe violation β Transform data or use non-parametric test
Homogeneity of variance violated:
- For t-test β Use Welch's t-test (
pg.ttestapplies it automatically withcorrection='auto') - For ANOVA β Use Welch's ANOVA (
pg.welch_anova) or Brown-Forsythe - For regression β Use robust standard errors or weighted least squares
Linearity violated (regression):
- Add polynomial terms, transform variables, or use non-linear models / GAM
Formal tests get oversensitive as n grows: for n β₯ 100, weigh the Q-Q plot more heavily than the Shapiro-Wilk p-value. See references/assumptions_and_diagnostics.md for comprehensive guidance.
Running Statistical Tests
Primary libraries:
- pingouin: user-friendly tests that return effect sizes by default β prefer it for standard tests
- scipy.stats: core statistical tests
- statsmodels: regression, diagnostics, power analysis
- pymc + arviz: Bayesian modeling and diagnostics
T-Test with Complete Reporting
import pingouin as pg
# correction='auto' applies Welch's correction when variances are unequal
result = pg.ttest(group_a, group_b, correction='auto')
# Pingouin >= 0.6 column names
t_stat = result['T'].values[0]
df = result['dof'].values[0]
p_value = result['p_val'].values[0]
cohens_d = result['cohen_d'].values[0]
ci_lower, ci_upper = result['CI95'].values[0] # CI for the mean difference
print(f"t({df:.0f}) = {t_stat:.2f}, p = {p_value:.3f}, d = {cohens_d:.2f}")
ANOVA with Post-Hoc Tests
import pingouin as pg
aov = pg.anova(dv='score', between='group', data=df, detailed=True)
print(aov)
# Effect size: partial eta-squared
eta_p2 = aov['np2'].values[0]
# If significant, conduct post-hoc tests (Tukey HSD controls family-wise error)
if aov['p_unc'].values[0] < 0.05:
posthoc = pg.pairwise_tukey(dv='score', between='group', data=df)
print(posthoc) # includes Hedges' g per pair
Linear Regression with Diagnostics
import statsmodels.api as sm
from assumption_checks import check_regression_diagnostics
X = sm.add_constant(X_predictors) # Add intercept
model = sm.OLS(y, X).fit()
print(model.summary())
# 4-panel residual plot + Shapiro-Wilk, Breusch-Pagan, Durbin-Watson, VIF
diag = check_regression_diagnostics(model)
print(diag['interpretation'])
print(diag['vif'])
# If heteroscedasticity was flagged, report robust standard errors instead
robust = model.get_robustcov_results('HC3')
Bayesian T-Test
import pymc as pm
import arviz as az
import numpy as np
with pm.Model() as model:
# Priors
mu1 = pm.Normal('mu_group1', mu=0, sigma=10)
mu2 = pm.Normal('mu_group2', mu=0, sigma=10)
sigma = pm.HalfNormal('sigma', sigma=10)
# Likelihood
y1 = pm.Normal('y1', mu=mu1, sigma=sigma, observed=group_a)
y2 = pm.Normal('y2', mu=mu2, sigma=sigma, observed=group_b)
# Derived quantity
diff = pm.Deterministic('difference', mu1 - mu2)
trace = pm.sample(2000, tune=1000)
# ArviZ 1.x defaults to 89% intervals; request 95% explicitly for reporting
print(az.summary(trace, var_names=['difference'], ci_prob=0.95))
# Direct probability statement (this is what one-sided questions become)
prob_greater = np.mean(trace.posterior['difference'].values > 0)
print(f"P(mu1 > mu2 | data) = {prob_greater:.3f}")
# ArviZ 1.x removed az.plot_posterior; use plot_dist (on 0.x, plot_posterior still works)
az.plot_dist(trace, var_names=['difference'], ci_prob=0.95)
Scale priors to the data (e.g., sigma=10 suits outcomes with SD near 10; use the observed SD as a guide) and state the priors in the report.
Effect Sizes
Effect sizes quantify magnitude; p-values only indicate existence. Report one for every test. See references/effect_sizes_and_power.md for the full guide.
Quick Reference: Common Effect Sizes
| Test | Effect Size | Small | Medium | Large | |------|-------------|-------|--------|-------| | T-test | Cohen's d | 0.20 | 0.50 | 0.80 | | ANOVA | Ξ·Β²_p | 0.01 | 0.06 | 0.14 | | Correlation | r | 0.10 | 0.30 | 0.50 | | Regression | RΒ² | 0.02 | 0.13 | 0.26 | | Chi-square | CramΓ©r's V | 0.07 | 0.21 | 0.35 |
Benchmarks are conventions, not laws β a "small" effect can matter enormously (drug side effects) and a "large" one can be trivial. Interpret in context.
Calculating Effect Sizes
Pingouin returns effect sizes with its tests (cohen_d from pg.ttest, np2 from pg.anova, hedges from pg.pairwise_tukey; r from pg.corr is already an effect size).
Confidence Intervals for Effect Sizes
Report a CI for the effect size to show its precision. Use pg.compute_esci (note: pg.compute_effsize_from_t returns only th
Truncated for display β read the full file on GitHub.
Related Skills
Agent-Reach
110.3kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu β one CLI, zero API fees.
headroom
79.1kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
last30days-skill
67.0kAI agent skill that researches any topic across Reddit, X, YouTube, HN, Polymarket, and the web - then synthesizes a grounded summary
Scrapling
99.8kπ·οΈ The BEST Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scrapling_dev
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit β see the Safety scan above for what the skill file itself contains.
