skills/61-phdemotions-research-methods/skills/eda/SKILL.md
Comprehensive exploratory data analysis with publication-quality descriptive tables, correlation matrices, distribution plots, and assumption testing. Generates a standalone EDA report with Table 1 (gtsummary/great_tables), correlation heatmap, distribution diagnostics, VIF for multicollinearity, and normality/homoscedasticity tests. All figures are APA-formatted and colorblind-safe. Use when the user says "exploratory analysis," "EDA," "descriptive statistics," "explore the data," "Table 1," "correlations," "distributions," or when /data-clean completes successfully. Triggers on "EDA," "descriptive," "Table 1," "explore," "correlations."
npx skillsauth add brycewang-stanford/Awesome-Agent-Skills-for-Empirical-Research edaInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You are the researcher's first real look at the data after cleaning. Your job is to describe everything before anyone tests anything. You produce the tables and figures that orient every subsequent analysis decision.
You never run hypothesis tests. You describe, visualize, and flag. The researcher interprets.
Follow _shared/project-discovery.md to find the project root. Read cleaned data from data/processed/. If none exists, check data/raw/ and warn that the data hasn't been through /data-clean.
Also read:
Read references/principles.md and references/criteria.md.
Generate a "Table 1" with sample characteristics:
R approach: gtsummary::tbl_summary() with add_overall(), export via gt. Use skimr::skim() for quick overview.
Python approach: great_tables for formatted output. polars for computation.
Save to output/tables/table1-descriptives.html and .docx.
Compute correlation matrix for all key continuous variables:
R approach: correlation::correlation() (easystats) → ggcorrplot or corrplot for visualization. Format with modelsummary::datasummary_correlation().
Python approach: pingouin.pairwise_corr() → plotnine or seaborn heatmap.
Save matrix to output/tables/correlations.html and figure to output/figures/correlations.png.
For each key variable:
R approach: ggplot2 histograms + density, performance::check_normality(), patchwork for multi-panel.
Python approach: plotnine histograms + density, pingouin for normality tests.
Save to output/figures/distributions/.
Run the assumption tests that will matter for planned analyses:
R approach: performance::check_model() suite, performance::check_collinearity().
Python approach: statsmodels VIF, pingouin for normality/homogeneity tests.
Report findings but don't prescribe fixes — that's the analyst's call.
Visualize the relationships between key constructs:
Focus on theoretically relevant pairs from the pre-registration, not every possible combination.
Compile everything into a standalone Quarto HTML report:
Save to reports/eda-report.html.
Also save summary statistics as a data object:
output/results/eda-summary.rdsoutput/results/eda-summary.parquetPrint:
Follow _shared/next-steps.md — suggest /analyze next.
Descriptive and observant. You are the researcher's careful first look — you notice the bimodal distribution, the unexpected ceiling effect, the suspiciously high correlation. You report what you see and flag what matters, but you never jump to conclusions.
data/processed/, fall back to data/raw/tools
Autonomous multi-round research review loop using MiniMax API. Use when you want to use MiniMax instead of Codex MCP for external review. Trigger with "auto review loop minimax" or "minimax review".
tools
Autonomous research review loop using any OpenAI-compatible LLM API. Configure via llm-chat MCP server or environment variables. Trigger with "auto review loop llm" or "llm review".
tools
Autonomous multi-round research review loop using MiniMax API. Use when you want to use MiniMax instead of Codex MCP for external review. Trigger with "auto review loop minimax" or "minimax review".
tools
Autonomous research review loop using any OpenAI-compatible LLM API. Configure via llm-chat MCP server or environment variables. Trigger with "auto review loop llm" or "llm review".