alterlab-qualitative-analysis

$npx mdskill add AlterLab-IEU/AlterLab-Academic-Skills/alterlab-qualitative-analysis

Analyzes qualitative data with codebook development and intercoder reliability.

  • Solves coding interviews or open-ended text with reliable codebook development.
  • Depends on Python packages krippendorff, statsmodels, and pandas.
  • Branches by design: coefficient-based ICR for codebook analysis, consensus for thematic analysis.
  • Delivers intercoder reliability metrics with 95% CIs and thresholds.

SKILL.md

.github/skills/alterlab-qualitative-analysisView on GitHub ↗
---
name: alterlab-qualitative-analysis
description: "Analyzes qualitative data as a dispatched pipeline module — codebook development, thematic / framework / content analysis, and inter-coder reliability computed correctly (Krippendorff's alpha as primary via the krippendorff package or a bundled stdlib nominal calculator with bootstrap CIs; Cohen's / Fleiss' kappa via statsmodels) with 95% CIs and thresholds (alpha >= .80 reliable, .667-.80 tentative). It BRANCHES by design: coefficient-based ICR for codebook / content-analytic coding, versus consensus-and-reflexivity for reflexive thematic analysis where a statistic is not the right criterion. Supports human-vs-LLM double-coding with an alpha check against a human gold standard. Use when coding interviews or open-ended text, building a codebook, or reporting intercoder reliability. For topic modeling / embeddings / supervised text classification prefer alterlab-text-as-data; for the reflexivity gate prefer alterlab-ssci-reflexivity-gate. Part of the AlterLab Academic Skills suite."
license: MIT
allowed-tools: Read Bash(python:*)
compatibility: "Requires (declare in-session, no runtime install on Anthropic API): Python krippendorff>=0.8, statsmodels>=0.14 (Fleiss/Cohen kappa via statsmodels.stats.inter_rater), pandas. For alpha with CIs use R irrCAC / icr, or the bundled stdlib nominal calculator. Optional LLM-assisted coding uses the platform's model. Runs locally via `uv run python`; no extra API key."
metadata:
    skill-author: AlterLab
    version: "1.0.0"
    depends_on: "alterlab-qualitative-methods (methodology reference), alterlab-text-as-data (computational text), alterlab-ssci-reflexivity-gate (trustworthiness)"
---

# Qualitative Analysis — Reliability When It Fits, Consensus When It Doesn't

**Skill type: ANALYSIS MODULE.** Codes qualitative data and reports agreement *correctly*. The
central discipline is a branch: a reliability **coefficient** is right for codebook/content-analytic
work, but for reflexive thematic analysis the criterion is **consensus and reflexivity**, not a
statistic. The skill does not oversell the number.

## Core Mission

```
KRIPPENDORFF'S ALPHA IS THE PRIMARY COEFFICIENT — BUT A COEFFICIENT IS THE WRONG TOOL FOR REFLEXIVE TA.
BRANCH BY DESIGN.
```

## When to Use This Skill

- "Two RAs coded my interviews with a codebook — compute intercoder reliability."
- "Build/refine a codebook and report agreement."
- "I used an LLM to code open-ended responses — does it agree with my human coding?"
- "Which reliability statistics do I report for a content analysis?"

### Does NOT Trigger

| The request is really about… | Route to | Why not this skill |
|---|---|---|
| Topic modeling / embeddings / supervised text classification | `alterlab-text-as-data` | Computational text, not human-coding reliability. |
| Whether the study is trustworthy (positionality, Lincoln & Guba) | `alterlab-ssci-reflexivity-gate` | Trustworthiness gate, not the coding itself. |
| Choosing the qualitative method (grounded theory, phenomenology) | `alterlab-qualitative-methods` | Methodology selection, upstream. |
| Whether a scale is reliable/valid (quantitative) | `alterlab-ssci-measurement-gate` | Psychometrics, different problem. |

## The branch (this is the core discipline)

| Design | Reliability criterion |
|--------|-----------------------|
| **Codebook / content-analytic** coding (fixed categories, replicable) | compute an **ICR coefficient** (Krippendorff's α) with a CI and threshold |
| **Reflexive thematic analysis** (interpretive, researcher-as-instrument) | **consensus + reflexivity** — collaborative discussion to understand differences; a coefficient misrepresents the epistemology and is NOT required. Route trustworthiness to `alterlab-ssci-reflexivity-gate`. |

Do not force α onto reflexive TA, and do not skip α on content-analytic coding.

## Correct coefficient choice (verified)

- **Krippendorff's α — primary.** Handles ≥2 coders, any measurement level (nominal/ordinal/
  interval/ratio), and missing data. Python `krippendorff.alpha(reliability_data=<coders × units>,
  level_of_measurement="nominal")` returns a **point estimate only** — pair it with a bootstrap CI
  (the bundled `scripts/icr.py` does nominal α + a bootstrap CI + Cohen's κ in pure stdlib; R
  `irrCAC::krippen.alpha.raw` or `icr::krippalpha(..., bootstrap=TRUE)` give CIs for all levels).
- **Cohen's κ** (2 coders) / **Fleiss' κ** (>2, fixed number): `statsmodels.stats.inter_rater`
  `cohens_kappa`, `fleiss_kappa` (build the count table with `aggregate_raters`); sklearn
  `cohen_kappa_score` as a cross-check.
- **NOT valid ICR measures:** chi-square, Cronbach's alpha, and Pearson's r — they measure
  covariation/internal consistency, not chance-corrected agreement. Refuse these.

Thresholds (Krippendorff): **α ≥ .80 reliable**; **.667 ≤ α < .80 tentative conclusions only**;
α < .667 unreliable. Report α **with a 95% CI**, never the bare point estimate.

## LLM-assisted coding (supported, never free)

Treat an LLM as another coder: human↔LLM **double-coding**, compute Krippendorff's α between each
LLM and a **human gold standard**, and use the CI to judge whether the LLM is statistically
indistinguishable from human coders. Disclose the model, the prompt, and the agreement — never
present LLM coding as uncontrolled or cost-free.

## Reporting checklist (put in every ICR report)

```
BRANCH:        content-analytic (coefficient) | reflexive TA (consensus+reflexivity)
ICR MEASURE:   Krippendorff alpha (level) | Cohen/Fleiss kappa — and why
CODERS:        number of coders; human / LLM
DOUBLE-CODED:  % of the data double-coded
ALPHA:         point estimate + 95% CI + threshold verdict (.80 / .667)
RESOLUTION:    how disagreements were resolved (adjudication / consensus)
```

## References

- `references/icr_and_reporting.md` — coefficient math, verified APIs, LLM-benchmarking, the reporting standard.
- `references/reflexive_vs_codebook.md` — when a statistic applies vs. when it does not.
- `scripts/icr.py` — stdlib nominal Krippendorff's α + bootstrap CI + Cohen's κ (no numpy / no deps).

Part of the AlterLab Academic Skills suite.

More from AlterLab-IEU/AlterLab-Academic-Skills

SkillDescription
alterlab-abm-mesaBuilds agent-based models of social systems with Mesa 3 — the current AgentSet API (model.agents.shuffle_do('step'), auto-assigned unique_id, mandatory super().__init__(seed=...)), cell spaces (mesa.discrete_space OrthogonalMooreGrid / classic mesa.space grids), the DataCollector, batch_run parameter sweeps, and SolaraViz — for emergence, segregation, diffusion, opinion dynamics, and cooperation models. It uses the Mesa 3.x API (the old mesa.time schedulers like RandomActivation are removed) and treats the model as a generative theory to be validated, not just run. Use when the request mentions an agent-based model, Mesa, simulating interacting agents, or emergent macro behavior from micro rules. For discrete-event (queueing/process) simulation prefer alterlab-simpy; for reinforcement learning prefer alterlab-stable-baselines3. Part of the AlterLab Academic Skills suite.
alterlab-academic-careerPrepares academic career documents and professional-development materials for faculty and researchers. Use when drafting academic CVs, research statements, teaching philosophies, diversity statements, faculty-position cover letters, tenure dossiers, promotion narratives, academic portfolios, or mentorship statements, and when planning conference-networking strategy, building academic web presence, setting up ORCID profiles, or understanding impact metrics. Part of the AlterLab Academic Skills suite.
alterlab-accreditation-aolScaffolds program-level Assurance-of-Learning (AoL) documentation for AACSB (2020 Standard 5) and ABET (Criterion 3 Student Outcomes, Criterion 4 Continuous Improvement) accreditation — program learning outcomes / competency goals, curriculum-to-outcome mapping matrices, direct- and indirect-assessment plans, rubric design, and closing-the-loop continuous-improvement narratives — and validates the structure of an outcome-mapping matrix with scripts/aol_matrix.py. Use when the user needs AACSB or ABET assurance-of-learning material, a program-learning-outcomes set, a curriculum/outcome map or coverage matrix, a direct/indirect assessment plan, a closing-the-loop report, or accreditation self-study text. For single-course design or course rubrics prefer alterlab-teaching-design; for post-award grant reports prefer alterlab-grant-reporting. Part of the AlterLab Academic Skills suite.
alterlab-adaptyvSubmits and tracks protein-testing experiments on the Adaptyv Bio Foundry cloud lab (wet-lab validation), and optimizes protein sequences before submission with computational tools (NetSolP, SoluProt, SolubleMPNN, ESM). Use when designing proteins that need wet-lab validation - binding/affinity screening, expression testing, thermostability, or fluorescence assays - or when submitting experiments to the Foundry API, browsing the target catalog, tracking experiment status, retrieving results, or pre-screening sequences for solubility/expression. Triggers on "Adaptyv", "Foundry API", "cloud lab", "biolayer interferometry / BLI", "wet-lab validation". Part of the AlterLab Academic Skills suite.
alterlab-aeonRuns time series machine learning with the aeon library — classification, regression, clustering, forecasting, anomaly detection, segmentation, and similarity search via scikit-learn compatible APIs. Use when working with temporal data, sequential patterns, or time-indexed observations (univariate or multivariate) that need specialized algorithms beyond standard ML approaches. Part of the AlterLab Academic Skills suite.
alterlab-akademik-tesvikComputes the annual Turkish academic-incentive (akademik teşvik) score for Devlet (state) university öğretim elemanı (academic staff) from a classified activity list, applying the verified Akademik Teşvik Ödeneği Yönetmeliği (2018/11834) Faaliyet Hesaplama Tablosu headline puanları (Proje 20, Araştırma 15, Yayın 30, Patent 30, Atıf 30, Tebliğ 20, Ödül 20) with the k (author-count), p (Q1 1/Q2 0.8/Q3 0.5/Q4 0.25), and r (project-role) coefficients via türü puanı = Σ(faaliyet oranları) × headline (MADDE 8/2), then enforcing the per-type headline ceilings, the 100 cap (MADDE 8/3), and the net-30 payment gate (MADDE 10/3) in a deterministic scripts/tesvik_score.py. Use when the user wants to calculate akademik teşvik puanı, check the en az 30 (net-30) threshold, apply TABLO 4 ceilings, or estimate teşvik eligibility; keeps its coefficients separate from doçentlik scoring. For doçentlik point eligibility prefer alterlab-docentlik-eligibility. Part of the AlterLab Academic Skills suite.
alterlab-alpha-vantageAccesses real-time and historical stock market data, forex rates, cryptocurrency prices, commodities, economic indicators, and 50+ technical indicators via the Alpha Vantage API (requires a free API key from alphavantage.co). Use when fetching stock prices (OHLCV), company fundamentals (income statement, balance sheet, cash flow), earnings, options data, market news/sentiment, insider transactions, GDP, CPI, treasury yields, gold/silver/oil prices, Bitcoin/crypto prices, forex exchange rates, or calculating technical indicators (SMA, EMA, MACD, RSI, Bollinger Bands). Part of the AlterLab Academic Skills suite.
alterlab-alphafoldPredict protein 3D structures with AlphaFold2 via ColabFold — MMseqs2-accelerated MSAs, monomer and AlphaFold2-Multimer complex folding, and confidence-based validation (pLDDT, pTM/ipTM, PAE). Use when folding a protein sequence or complex from FASTA, generating a predicted structure with confidence metrics, ranking models, or checking self-consistency of a design. For co-folding a protein WITH a small-molecule ligand or predicting binding affinity prefer alterlab-boltz; for antibody–antigen or one-FASTA multi-entity complexes prefer alterlab-chai; to LOOK UP an already-computed structure prefer alterlab-alphafold-db; for ESM embeddings or inverse folding prefer alterlab-esm. Part of the AlterLab Academic Skills suite.
alterlab-alphafold-dbAccess the AlphaFold DB of 200M+ AI-PREDICTED protein structures — retrieve models by UniProt accession, download PDB/mmCIF files, and analyze prediction confidence metrics (pLDDT, PAE). Use when a UniProt ID needs a computationally predicted 3D structure or when no experimental structure exists, for homology modeling, protein engineering, or structure-based drug discovery; for EXPERIMENTALLY determined structures (X-ray, cryo-EM, NMR) prefer alterlab-pdb, and for protein sequences, annotations, or accession ID mapping prefer alterlab-uniprot instead. Part of the AlterLab Academic Skills suite.
alterlab-anndataBuild, slice, concatenate, read, and write AnnData annotated data matrices (obs, var, X, layers, obsm, uns) — the scverse data STRUCTURE, not an analysis pipeline. Use when creating or wrangling .h5ad/zarr files, managing cell and gene annotations, concatenating batches, or handling layers/obsm/backed-mode; for the QC, normalization, clustering, UMAP, and differential-expression analysis pipeline prefer alterlab-scanpy instead, and for RNA velocity from spliced/unspliced layers prefer alterlab-scvelo instead. Part of the AlterLab Academic Skills suite.