Agent skill · Backend & API

pyfixest-cupy64-absorbed-regressors

pyfixest demeaner_backend="cupy64" (including its CPU fallback when cupy is absent) is NOT numerically identical to the default numba backend and does NOT drop fully-absorbed/collinear regressors the same way. Use when: (1) adding demeaner_backend="cupy64" to existing pf.feols/fepois calls changes the printed coefficient table, (2) a regression report suddenly gains rows with absurd estimates (e.g. coef 435.8, SE 7106) for controls absorbed by the fixed effects, (3) diffing outputs before/after a backend change, or (4) anything parses a pyfixest text report by line position.

kennethkhoocygithub.com/kennethkhoocyGitHub ↗
claude-codecodexMIT
Install
npx skills add kennethkhoocy/applied-micro-skills --skill pyfixest-cupy64-absorbed-regressors --agent claude-code

Same command for any agent — swap --agent for codex, cursor, copilot.

Facts
Files in the skill folder: 2
SKILL.md size: 3 KB
Bundled scripts: none
Version: 1.0.0
Declared author: Claude Code
Path: plugins/applied-micro/skills/pyfixest-cupy64-absorbed-regressors/SKILL.md
Open the folder on GitHub →
Where it comes from
Stars: 54
Language: Python

Weekly change comes from our own snapshots, not the repository page — it measures attention, not adoption.

From the SKILL.md

# pyfixest cupy64 backend: absorbed regressors survive, reports change shape ## Problem Adding `demeaner_backend="cupy64"` to an existing `pf.feols()` call is treated as a pure performance switch, but it changes the output: regressors with zero within-FE identifying variation (fully absorbed by the fixed effects) that the default numba backend silently drops are RETAINED by the cupy64 path (also in its scipy/CPU fallback when cupy is not installed). They appear in the coefficient table as non-identified garbage (huge coefficient, huge SE). ## Context / Trigger Conditions Observed 2026-07-18 (Specialist Directors US, H5 re-baseline audit): adding the kwarg to 4 feols sites left the headline triple stable to 4 decimals (B1 diff 1.45e-6, SE diff 9.9e-6) but the text report grew from 366 to 390 lines — 24 new rows for absorbed controls (e.g. `event_x_lrisk = 435.8059`, SE `7106.3365`) under firm-year + director FE, where firm-year-level variables have no identifying variation. ## Solution 1. Treat a backend change as a POTENTIALLY OUTPUT-CHANGING edit: diff the report and expect schema changes, not byte equality. Verify the coefficients of interest at ~4-decimal precision instead. 2. N

What's inside
Steps it walks through
  1. Problem
  2. Context / Trigger Conditions
  3. Solution
  4. Verification
  5. Notes
Ships with 1 file
  • README.md
More from applied-micro-skills
All skills →
About this skill
What does the pyfixest-cupy64-absorbed-regressors skill do?

pyfixest demeaner_backend="cupy64" (including its CPU fallback when cupy is absent) is NOT numerically identical to the default numba backend and does NOT drop fully-absorbed/collinear regressors the same way. Use when: (1) adding demeaner_backend="cupy64" to existing pf.feols/fepois calls changes the printed coefficient table, (2) a regression report suddenly gains rows with absurd estimates (e.g. coef 435.8, SE 7106) for controls absorbed by the fixed effects, (3) diffing outputs before/after a backend change, or (4) anything parses a pyfixest text report by line position.

How do I install it?

Run `npx skills add kennethkhoocy/applied-micro-skills --skill pyfixest-cupy64-absorbed-regressors --agent claude-code` — it drops the skill into your project so the agent can pick it up. Swap the --agent value for codex, cursor or copilot if you use one of those.

Where does this skill come from?

From kennethkhoocy/applied-micro-skills, a repository with 54 stars. We read it straight from the repository tree rather than a submitted listing, so what you see here is what is actually published.

Is a popular skill a good skill?

Not necessarily. Stars measure attention, not adoption — a repository can trend for a week and be abandoned. That is why we show the weekly change from our own snapshots next to the total, instead of a single flattering number.

Keep going