[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6EKTCCENJSFNVYSB9T2D1K4":3,"skill-same:01M6EKTCCENJSFNVYSB9T2D1K4":75},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":31,"linkOnly":32,"markdownContent":33,"markdownBody":34,"frontMatter":35,"refName":52,"commitSha":53,"skillDirectory":54,"forksCount":55,"repositoryHtmlUrl":56,"repositoryHomepageUrl":6,"ownerHtmlUrl":57,"ownerBlogUrl":58,"ownerDescription":59,"updatedAt":60,"install":61,"resources":74},"01M6EKTCCENJSFNVYSB9T2D1K4","els-2002-conventions",null,"ELS:2002 conventions — numeric-coded CSV (NOT labeled like HSLS), negative sentinels with the continuous-composite exception, BY\u002FF1\u002FF2\u002FF3 waves, tier-3 weight\u002FID exclusions.","cgpan\u002Fedm-ars-public","cgpan","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F118746117?v=4","01M6EKT5TG36Q3GH340QN8RH08","Chenguang Pan","01M6EKT5YTQVRARGJF0VPA1SY7",5,"MIT","https:\u002F\u002Fgithub.com\u002Fcgpan\u002Fedm-ars-public\u002Fblob\u002Fmain\u002Fskills\u002Fdataset\u002Fels-2002-conventions\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30],"els","conventions","els 2002 conventions","csv","sentinel","critic","cohort","writer","analyst","f2","id","dataset","2026-11-10 10:12:30",false,"---\nname: els-2002-conventions\nlayer: dataset\ndescription: ELS:2002 conventions — numeric-coded CSV (NOT labeled like HSLS), negative sentinels with the continuous-composite exception, BY\u002FF1\u002FF2\u002FF3 waves, tier-3 weight\u002FID exclusions.\ntrigger_keywords:\n  - els\n  - els2002\n  - cohort\n  - sentinel\napplicable_task_types: []\napplicable_datasets:\n  - els_2002\napplicable_stages:\n  - ProblemFormulator\n  - DataEngineer\n  - Analyst\n  - Critic\n  - Writer\npriority: 1\nreferences_skills: []\nresources: []\nversion: \"1.0\"\nrule_severity: mandatory\n---\n\n# ELS:2002 Conventions\n\n## The one thing to get right (opposite of HSLS)\n\nThis CSV stores **numeric codes**, not labeled strings. `pd.to_numeric`\nis safe everywhere. But NEGATIVE INTEGERS ARE MISSING-DATA SENTINELS\nand must be mapped to `NaN` BEFORE any imputation, encoding, or\nstatistics:\n\n- Integer-coded variables: every negative value (−1 don't know, −2\n  refused, −3 legitimate skip, −4 nonrespondent, −8 component missing,\n  −9 missing) is a sentinel.\n- **Continuous composites (BYSES1, BYMATHSE) have VALID negative scale\n  values** (BYSES1 range −2.11..1.82). For these, ONLY exact codes\n  ≤ −3 are sentinels. Blanket `v \u003C 0 → NaN` silently deletes the lower\n  half of the SES distribution (registry pitfall\n  `continuous_composite_sentinels`, severity critical).\n\n## Waves and temporal ordering\n\n`BY` (2002, grade 10) → `F1` (2004, grade 12) → `F2` (2006) → `F3`\n(2012). Prefix-based wave inference: a predictor's prefix must come\nstrictly before the outcome's prefix in that order. BY predictors for\nF1\u002FF2\u002FF3 outcomes are safe; F1 predictors for F2\u002FF3 outcomes are safe\nwith the usual later-wave caveats.\n\n## Tier-3 exclusions\n\nNever model: `STU_ID`, `SCH_ID`, `STRAT_ID`, `PSU`, `F1SCH_ID`,\n`F*UNIV*` universe flags, any `^BYSTUWT`\u002F`W[0-9]`\u002F`BRR`\u002F`*WT` weight,\nand `*IM` imputation-flag twins (e.g. `BYSEXIM` next to `BYSEX`).\n\n## Encoding\n\nOne-hot categorical CODES with meaningful names: map codes to the\nregistry's `codebook_codes` labels when constructing dummy names\n(`BYRACE_White` not `BYRACE_7`) so downstream SHAP\u002Fsubgroup outputs\nare readable. Continuous variables pass through as single numeric\ncolumns per D1.\n\n## School clustering on ELS (F1SCH_ID — use directly, no reconstruction)\n\nBase-year `SCH_ID` is 100% suppressed (−5), but **`F1SCH_ID` carries 752\nreal school IDs covering ~76% of students**. Use it as the cluster ID for\nthe school-aware split, clustered bootstrap CIs, and ICC — NEVER as a\npredictor (tier-3). Do NOT run fingerprint reconstruction on ELS.\n\n```python\nsch = pd.to_numeric(df[\"F1SCH_ID\"], errors=\"coerce\")\nschool_ids = sch.where(sch >= 0)\n# students with no F1 school (~24%): unique singleton clusters\nschool_ids = school_ids.fillna(-(pd.Series(range(len(df)), index=df.index) + 1))\n```\n\nReport in the paper: clustering is PARTIAL (F1 school, one wave after\nbaseline; ~24% singletons) — better than ignoring the design, weaker than\ntrue base-year clustering. This replaces the old blanket \"no multilevel\nstructure available\" limitation.\n\n## HSLS analogues (for cross-cohort work)\n\n| ELS | HSLS | Construct |\n|---|---|---|\n| BYTXMSTD | X1TXMTSCOR | baseline std math score |\n| BYSES1 | X1SES | SES composite |\n| BYMATHSE | X1MTHEFF | math self-efficacy |\n| BYSEX \u002F BYRACE | X1SEX \u002F X1RACE | protected attributes |\n| F2EVRATT | X4EVRATNDCLG | ever attended postsecondary |\n\n## Source provenance\n\nAuthored in Arc G Phase A (2026-07-03) from the EDAT export codebook +\nsentinel-aware profiling of the delivered CSV.\n","# ELS:2002 Conventions\n\n## The one thing to get right (opposite of HSLS)\n\nThis CSV stores **numeric codes**, not labeled strings. `pd.to_numeric`\nis safe everywhere. But NEGATIVE INTEGERS ARE MISSING-DATA SENTINELS\nand must be mapped to `NaN` BEFORE any imputation, encoding, or\nstatistics:\n\n- Integer-coded variables: every negative value (−1 don't know, −2\n  refused, −3 legitimate skip, −4 nonrespondent, −8 component missing,\n  −9 missing) is a sentinel.\n- **Continuous composites (BYSES1, BYMATHSE) have VALID negative scale\n  values** (BYSES1 range −2.11..1.82). For these, ONLY exact codes\n  ≤ −3 are sentinels. Blanket `v \u003C 0 → NaN` silently deletes the lower\n  half of the SES distribution (registry pitfall\n  `continuous_composite_sentinels`, severity critical).\n\n## Waves and temporal ordering\n\n`BY` (2002, grade 10) → `F1` (2004, grade 12) → `F2` (2006) → `F3`\n(2012). Prefix-based wave inference: a predictor's prefix must come\nstrictly before the outcome's prefix in that order. BY predictors for\nF1\u002FF2\u002FF3 outcomes are safe; F1 predictors for F2\u002FF3 outcomes are safe\nwith the usual later-wave caveats.\n\n## Tier-3 exclusions\n\nNever model: `STU_ID`, `SCH_ID`, `STRAT_ID`, `PSU`, `F1SCH_ID`,\n`F*UNIV*` universe flags, any `^BYSTUWT`\u002F`W[0-9]`\u002F`BRR`\u002F`*WT` weight,\nand `*IM` imputation-flag twins (e.g. `BYSEXIM` next to `BYSEX`).\n\n## Encoding\n\nOne-hot categorical CODES with meaningful names: map codes to the\nregistry's `codebook_codes` labels when constructing dummy names\n(`BYRACE_White` not `BYRACE_7`) so downstream SHAP\u002Fsubgroup outputs\nare readable. Continuous variables pass through as single numeric\ncolumns per D1.\n\n## School clustering on ELS (F1SCH_ID — use directly, no reconstruction)\n\nBase-year `SCH_ID` is 100% suppressed (−5), but **`F1SCH_ID` carries 752\nreal school IDs covering ~76% of students**. Use it as the cluster ID for\nthe school-aware split, clustered bootstrap CIs, and ICC — NEVER as a\npredictor (tier-3). Do NOT run fingerprint reconstruction on ELS.\n\n```python\nsch = pd.to_numeric(df[\"F1SCH_ID\"], errors=\"coerce\")\nschool_ids = sch.where(sch >= 0)\n# students with no F1 school (~24%): unique singleton clusters\nschool_ids = school_ids.fillna(-(pd.Series(range(len(df)), index=df.index) + 1))\n```\n\nReport in the paper: clustering is PARTIAL (F1 school, one wave after\nbaseline; ~24% singletons) — better than ignoring the design, weaker than\ntrue base-year clustering. This replaces the old blanket \"no multilevel\nstructure available\" limitation.\n\n## HSLS analogues (for cross-cohort work)\n\n| ELS | HSLS | Construct |\n|---|---|---|\n| BYTXMSTD | X1TXMTSCOR | baseline std math score |\n| BYSES1 | X1SES | SES composite |\n| BYMATHSE | X1MTHEFF | math self-efficacy |\n| BYSEX \u002F BYRACE | X1SEX \u002F X1RACE | protected attributes |\n| F2EVRATT | X4EVRATNDCLG | ever attended postsecondary |\n\n## Source provenance\n\nAuthored in Arc G Phase A (2026-07-03) from the EDAT export codebook +\nsentinel-aware profiling of the delivered CSV.\n",{"name":5,"layer":30,"version":36,"priority":37,"resources":38,"description":7,"rule_severity":39,"trigger_keywords":40,"applicable_stages":42,"references_skills":48,"applicable_datasets":49,"applicable_task_types":51},"1.0",1,[],"mandatory",[19,41,25,23],"els2002",[43,44,45,46,47],"ProblemFormulator","DataEngineer","Analyst","Critic","Writer",[],[50],"els_2002",[],"main","1aeaead66d2bf876109f3b101005d2eed54041d9","skills\u002Fdataset\u002Fels-2002-conventions",0,"https:\u002F\u002Fgithub.com\u002Fcgpan\u002Fedm-ars-public","https:\u002F\u002Fgithub.com\u002Fcgpan","https:\u002F\u002Fcpan.ai","Ph.D. candidate in Measurement, Evaluation, and Statistics.","2026-09-28 20:39:06",{"source":8,"skillName":5,"commands":62,"prompt":72,"zipAvailable":73},[63,66,69],{"tool":64,"command":65},"npx","npx skills add cgpan\u002Fedm-ars-public --skill els-2002-conventions",{"tool":67,"command":68},"bunx","bunx skills add cgpan\u002Fedm-ars-public --skill els-2002-conventions",{"tool":70,"command":71},"pnpm","pnpm dlx skills add cgpan\u002Fedm-ars-public --skill els-2002-conventions","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fcgpan\u002Fedm-ars-public\u002Fblob\u002Fmain\u002Fskills\u002Fdataset\u002Fels-2002-conventions\u002FSKILL.md",true,[],[76,98,111,120,133,144],{"skillNo":77,"name":78,"nameZh":6,"description":79,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":80,"categories":81,"keywords":92,"publishedAt":31},"01M6EM1ZTQZVAP90DZTVBHCCFB","acm-fixture","Fixture writing skill for ACM acmart sigconf paper output.","https:\u002F\u002Fgithub.com\u002Fcgpan\u002Fedm-ars-public\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskills\u002Fwriting\u002Facm-fixture\u002FSKILL.md",[82,87],{"categoryNo":83,"categoryName":84,"taxonomyType":85,"taxonomyTypeDesc":86},"01JBSEEDCAT000000000000018","写作与文案","SCENARIO","使用场景",{"categoryNo":88,"categoryName":89,"taxonomyType":90,"taxonomyTypeDesc":91},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[93,94,95,96,26,97],"acm fixture","fixture","writing","LaTeX","paper",{"skillNo":99,"name":100,"nameZh":6,"description":101,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":102,"categories":103,"keywords":104,"publishedAt":31},"01M6EM1XNFETAZFGPHQPAXKBYN","prediction-fixture","Fixture skill for the prediction task type; references shap-fixture.","https:\u002F\u002Fgithub.com\u002Fcgpan\u002Fedm-ars-public\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskills\u002Ftask-type\u002Fprediction-fixture\u002FSKILL.md",[],[94,105,106,107,108,109,110,27],"prediction fixture","task","type","references","fixture skill","shap",{"skillNo":112,"name":113,"nameZh":6,"description":114,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":115,"categories":116,"keywords":117,"publishedAt":31},"01M6EM1V4MQXYGQ7K2ZDJRAPSM","causal-fixture","Fixture skill for the causal_inference task type.","https:\u002F\u002Fgithub.com\u002Fcgpan\u002Fedm-ars-public\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskills\u002Ftask-type\u002Fcausal-fixture\u002FSKILL.md",[],[94,118,107,106,119,109],"causal fixture","inference",{"skillNo":121,"name":122,"nameZh":6,"description":123,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":124,"categories":125,"keywords":126,"publishedAt":31},"01M6EM1SCWFZZ2ACSAP65GNWK9","shap-fixture","Fixture methodology for SHAP feature importance analysis.","https:\u002F\u002Fgithub.com\u002Fcgpan\u002Fedm-ars-public\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskills\u002Fmethodology\u002Fshap-fixture\u002FSKILL.md",[],[127,94,110,128,129,130,131,132],"shap fixture","feature importance","methodology","analysis","explainer","feature",{"skillNo":134,"name":135,"nameZh":6,"description":136,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":137,"categories":138,"keywords":139,"publishedAt":31},"01M6EM1PZC1MK1G0D1YFVYAQ9W","cluster-recon-fixture","Fixture methodology for reconstructing cluster IDs from fingerprint variables.","https:\u002F\u002Fgithub.com\u002Fcgpan\u002Fedm-ars-public\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskills\u002Fmethodology\u002Fcluster-recon-fixture\u002FSKILL.md",[],[140,141,142,94,143,129],"recon","cluster recon fixture","cluster","ids",{"skillNo":145,"name":146,"nameZh":6,"description":147,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":148,"categories":149,"keywords":150,"publishedAt":31},"01M6EM1MZVKMSWEXZ7TJ45DS04","hsls09-fixture","Fixture skill for HSLS:09 with a bundled YAML resource and one cross-reference.","https:\u002F\u002Fgithub.com\u002Fcgpan\u002Fedm-ars-public\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskills\u002Fdataset\u002Fhsls09-fixture\u002FSKILL.md",[],[94,151,152,153,154,109,30,140,142,155],"hsls09 fixture","yaml","public","reference","registry"]