Every file format PACER accepts, with example data you can view and download. Each tool expects a specific layout — use these as starting points for your own data. Some formats are flexible: column headers become identifiers within the analysis, so you can name them anything that makes sense for your data. Others are prescribed: PACER looks for specific column names to locate the right data, and the wrong name will trigger a validation error. Each file card is labeled so you know which rule applies before you start formatting your data.
Column headers are item names. Values are numeric scores (0/1 for binary, 0–K for polytomous). An optional group column may be included anywhere for DIF analysis. Leave missing values blank or code as NA.
| Q1 | Q2 | Q3 | Q4 | Q5 | group |
|---|---|---|---|---|---|
| Item column | Item column | Item column | Item column | Item column | Optional — DIF grouping |
| 1 | 0 | 1 | 1 | 0 | Reference |
| 1 | 1 | 1 | 0 | 1 | Reference |
| 0 | 1 | 0 | 1 | 1 | Focal |
| 1 | 0 | 1 | 1 | 1 | Focal |
| 0 | 0 | 1 | 0 | 0 | Reference |
0 or 1. Polytomous items: integer scores starting at 0 (e.g. 0, 1, 2, 3). Leave missing values blank or code as NA.group (lowercase) with at least two distinct values (e.g. Reference / Focal) to enable Mantel-Haenszel and SMD differential item functioning analysis.MC items (V1–V10) contain raw option choices (A, B, C, D). Polytomous items (P1–P5) contain integer scores (0–3). Upload this file alongside the Answer Key below. PACER rescores MC items to 0/1 before computing all statistics — polytomous items pass through unchanged.
| V1 | V2 | V3 | … | V10 | P1 | P2 | … | P5 |
|---|---|---|---|---|---|---|---|---|
| MC item | MC item | MC item | MC item | Polytomous (0–3) | Polytomous (0–3) | Polytomous (0–3) | ||
| C | C | C | … | A | 3 | 3 | … | 3 |
| C | B | C | … | A | 1 | 1 | … | 1 |
| C | D | A | … | B | 1 | 0 | … | 0 |
| D | D | A | … | A | 3 | 0 | … | 0 |
| D | C | D | … | A | 1 | 3 | … | 2 |
List only your MC items — one row per item. Polytomous items are simply omitted. The correct option value must match what appears in the response data exactly (case-insensitive — PACER normalises to uppercase automatically).
| item | key |
|---|---|
| Item name — must match response file column header | Correct option (A / B / C / D) |
| V1 | C |
| V2 | C |
| V3 | C |
| V4 | B |
| V5 | C |
| V6 | B |
| V7 | B |
| V8 | B |
| V9 | C |
| V10 | A |
item, keyitem and key as column headers. Item names in column 1 must exactly match the column headers in your response file.c, C, and C (with trailing space) all match correctly.Same wide-format layout as Item Analysis. Binary items use 0/1; polytomous items use integer scores 0–K. Binary and polytomous items may be mixed in the same file — PACER auto-detects: any column with a value > 1 is treated as polytomous. Leave missing responses blank or code as NA.
| ITEM01 | ITEM02 | ITEM03 | ITEM04 | POLY01 | POLY02 |
|---|---|---|---|---|---|
| Binary item | Binary item | Binary item | Binary item | Polytomous (0–3) | Polytomous (0–4) |
| 1 | 0 | 1 | 1 | 2 | 3 |
| 1 | 1 | 0 | 1 | 1 | 2 |
| 0 | 1 | 1 | 0 | 3 | 4 |
| 1 | 0 | 1 | 1 | 0 | 1 |
| 0 | 0 | 0 | 1 | 2 | — |
Long-format file with exactly three columns. Each row fixes one parameter of one item to a known value before calibration runs. Use the ⬇ Download template button inside the Anchors accordion to get a pre-filled starter file with all selected item names.
| item | param | value |
|---|---|---|
| Item name — must match selected column | Parameter to fix | Fixed numeric value |
| V1 | a | 1.20 |
| V1 | b | −0.50 |
| V2 | b | 0.30 |
| PolyItem1 | d1 | −0.40 |
| PolyItem1 | d2 | 0.10 |
item, param, and value (case-insensitive). Any other headers trigger a validation error.item column must exactly match column names that are currently selected in the PACER calibration UI. Unrecognized item names are rejected with an error; valid rows from the same file still load.param values depend on the item's modelb only for 1PL · a, b for 2PL · a, b, c for 3PL · a, d1, d2, … for GRM/GPCM · d1, d2, … for PCM · RSM items cannot be individually anchored (all items share the same threshold spacings).value column cause that row to be skipped with an error. All other valid rows from the same file are still loaded.item + param combination appears more than once, the last value in the file wins. A warning is shown in the validation modal.Scoring requires two files: item parameters and response data. If you ran calibration in PACER, both are loaded automatically — you only need to upload manually when working with external parameter estimates.
Binary items use a, b, c. Polytomous items (GRM / GPCM) use a plus threshold columns d1, d2, d3…. Leave unused cells blank. The name column may also be called itemKey, item, key, itemId, or id — PACER accepts all of these.
| columnName | model | a | b | c | d1 | d2 | d3 |
|---|---|---|---|---|---|---|---|
| Item name (or itemKey, item, key, itemId, id) | 1PL · 2PL · 3PL · GRM · GPCM | Discrimination | Difficulty | Guessing | Threshold 1 | Threshold 2 | Threshold 3 |
| ITEM01 | 2PL | 0.8794 | -0.9216 | — | — | — | — |
| ITEM02 | 3PL | 1.7345 | -0.3142 | 0.1316 | — | — | — |
| ITEM03 | GRM | 2.1200 | — | — | -1.0851 | -0.1300 | 1.4424 |
| ITEM04 | GPCM | 0.9530 | — | — | -1.9818 | 0.1647 | — |
Three required columns: testID (examinee identifier — also accepted: personId, id), key (the item's name — must match a value in columnName of the parameter file), score (0/1 for binary; integer for polytomous). Sparse data is supported.
| testID | key | score |
|---|---|---|
| Examinee ID (or personId, id) | Matches columnName value in params | 0/1 binary · 0–K poly |
| EX001 | ITEM01 | 1 |
| EX001 | ITEM02 | 0 |
| EX001 | ITEM03 | 2 |
| EX002 | ITEM01 | 1 |
| EX002 | ITEM02 | 1 |
| EX002 | ITEM04 | 1 |
key values in this file must exactly match the columnName values in the parameter file. Also accepted: itemKey, itemId, item. Case matters.Equating requires two parameter files — the Item Bank (old scale parameters) and the New Form (new form parameters). Both files use the same column layout. Items shared between forms serve as anchors; their item_id values must match exactly across both files.
| item_id | model | a | b | c |
|---|---|---|---|---|
| Unique identifier | 1PL · 2PL · 3PL | Discrimination | Difficulty | Guessing (blank = 0) |
| ITEM001 | 2PL | 0.8794 | -0.9216 | — |
| ITEM002 | 2PL | 0.6494 | -0.5570 | — |
| ITEM003 | 3PL | 1.7345 | -0.3142 | 0.1316 |
| ITEM004 | 3PL | 1.6109 | -0.9719 | 0.1766 |
item_id values are automatically used as anchors. Only these shared items drive the linking transformation.CDM Calibration requires two files: a binary response matrix and a Q-matrix that maps items to skills.
Wide format. Header row with item names required. Values must be 0 or 1. Item column names must correspond in order to rows of the Q-matrix.
| Q1 | Q2 | Q3 | Q4 | Q5 | Q6 |
|---|---|---|---|---|---|
| Item column | Item column | Item column | Item column | Item column | Item column |
| 1 | 0 | 1 | 1 | 0 | 1 |
| 1 | 1 | 1 | 0 | 1 | 0 |
| 0 | 1 | 0 | 1 | 1 | 1 |
| 1 | 0 | 1 | 1 | 0 | 0 |
| 0 | 0 | 1 | 0 | 1 | 1 |
One row per item, in the same order as the response matrix columns. One column per skill. A value of 1 means the item requires that skill; 0 means it does not. Column headers become skill names throughout the output.
| Skill1 | Skill2 | Skill3 |
|---|---|---|
| Skill (0 or 1) | Skill (0 or 1) | Skill (0 or 1) |
| 1 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 1 | 0 |
| 0 | 0 | 1 |
| 1 | 0 | 1 |
| 0 | 1 | 1 |
The Skill Profiler loads parameters from a saved CDM Calibration session automatically. If uploading manually, three files are needed: item parameters, a Q-matrix, and a response matrix.
Three columns: itemName (item identifier), guess (probability of correct response without required skills), slip (probability of incorrect response despite having all required skills).
| itemName | guess | slip |
|---|---|---|
| Item identifier | P(correct | no skills) | P(incorrect | all skills) |
| Q1 | 0.1824 | 0.0951 |
| Q2 | 0.2103 | 0.1240 |
| Q3 | 0.0883 | 0.1571 |
| Q4 | 0.1567 | 0.0724 |
| Q5 | 0.2291 | 0.1138 |
| Q6 | 0.1640 | 0.0873 |
The Q-matrix and response matrix use the exact same format as CDM Calibration above — same column layout, same ordering requirements.
Item columns are identified by matching their header names against the item IDs in the Item Parameters file. Any column not matched becomes a person-level covariate available for regression. The first column should be a person identifier. Leave missing item responses blank or as NA.
| testID | 27333 | 21330 | 26466 | … | catVar | numVar | weightVarR |
|---|---|---|---|---|---|---|---|
| Person ID | Item response (0/1) | Item response (0/1) | Item response (0/1) | Categorical covariate | Numeric covariate | Continuous covariate | |
| 1979385 | NA | 1 | 0 | … | red | 0.532 | 0.824 |
| 1979423 | 0 | 1 | 1 | … | red | 1.866 | 0.483 |
| 1979573 | 1 | 0 | 1 | … | orange | 0.161 | 0.926 |
| 1979601 | 1 | 1 | NA | … | yellow | 0.743 | 0.351 |
| 1979742 | 0 | 0 | 0 | … | orange | 1.204 | 0.612 |
testID, id, person_id, etc.).0 or 1. Polytomous: integer scores 0–K. Missing: blank or NA. Persons with all items missing are excluded.Export this file directly from PACER's IRT Calibration or Equating tools using the CSV export. The item IDs in column 1 must match column headers in the Response Data file exactly.
| item_id | model | a | b | c |
|---|---|---|---|---|
| Item name (matches response file header) | 1PL / 2PL / 3PL / GRM / GPCM | Discrimination | Difficulty | Guessing (0 for 1PL/2PL) |
| 27333 | 2PL | 0.709 | -0.902 | 0.000 |
| 21330 | 2PL | 1.234 | 0.154 | 0.000 |
| 26466 | 3PL | 1.470 | 2.663 | 0.087 |
| [POLYTOMOUS] | ||||
| POLY01 | GPCM | 1.674 | 2.317 | |
c is the guessing parameter — set to 0 for 1PL and 2PL items. One row per binary item.[POLYTOMOUS] sentinel[POLYTOMOUS] in the first column to separate binary from polytomous items. Polytomous rows follow: item_id, model, a, d1, d2, d3… where d1, d2, … are the step difficulty parameters.D = 1.7 for latent regression (standard IRT convention). If your calibration used a different D, update the setting before running.This is the natural format for verbal aggression-style data where each person responds to every item with an ordered rating. The resp column contains the raw ordered response; PACER internally transforms it to adjacent-category binary pseudo-items (see below). Item attribute columns (btype, situ, mode, etc.) describe the items and are used to build the W design matrix for the LLTM.
| id | item | resp | btype | situ | mode | … |
|---|---|---|---|---|---|---|
| Person ID | Item identifier | Ordered response | Item attribute (categorical) | Item attribute (categorical) | Item attribute (categorical) | |
| 1 | S1WantCurse | no | curse | other | want | … |
| 1 | S1WantScold | perhaps | scold | other | want | … |
| 1 | S1DoShout | no | shout | other | do | … |
| 2 | S1WantCurse | yes | curse | other | want | … |
| 2 | S1WantScold | no | scold | other | want | … |
no/perhaps/yes (or equivalently 0/1/2) to two binary pseudo-items per original item. no → adj1=0, adj2=NA; perhaps → adj1=1, adj2=0; yes → adj1=NA, adj2=1. Both pseudo-items share the same item attribute row in the W matrix.resp (except person-ID, item, and response columns) are treated as item attributes and used to build the LLTM design matrix W. Drag them into the Add Predictors panel in the sidebar. Categorical attributes are dummy-coded; numeric attributes enter as-is.id, person_id, sid, or similar. The item column must be named item or key. The response column should be named resp or response; alternatively r2 for a binary version. An optional binary column named r2 (Y/N) can also be used — select which column to use as the response in the What to Predict? sidebar panel.Use this format when items have binary (correct/incorrect) responses and you want to model item difficulty as a function of item design features. Each item needs a set of attributes (content area, cognitive level, word count, etc.) that are constant for all persons who saw that item.
| id | item | resp | content | dok | format | wordcount |
|---|---|---|---|---|---|---|
| Person ID | Item identifier | 0 or 1 | Content area (categorical) | Depth of Knowledge (categorical) | Item format (categorical) | Word count (numeric) |
| EX001 | MATH_01 | 1 | algebra | 2 | MC | 42 |
| EX001 | MATH_02 | 0 | geometry | 3 | CR | 87 |
| EX001 | MATH_03 | 1 | algebra | 1 | MC | 28 |
| EX002 | MATH_01 | 1 | algebra | 2 | MC | 42 |
| EX002 | MATH_02 | 1 | geometry | 3 | CR | 87 |
wordcount) enter W as-is. Categorical attributes (e.g. content, format) are dummy-coded with first-occurrence reference coding. Select which columns are predictors in the Add Predictors sidebar panel after upload.0/1 directly — no internal transformation. Polytomous format uses no/perhaps/yes (or 0/1/2) and PACER creates two binary pseudo-items per original item. Both formats use the same long-format layout and are processed identically after the response column is resolved.Test Construction requires up to three files: an Item Bank (required), a Blueprint (optional), and a TIF Spec (optional). The item bank drives everything — any metadata column you include automatically becomes an available blueprint dimension with no configuration needed.
Binary and polytomous items go in the same file. Binary items use a, b, c and leave threshold columns blank. Polytomous items use a and threshold columns (b1, b2…) and leave b and c blank. Any extra columns — content_area, strand, dok, anything — become blueprint dimensions automatically.
| itemid | model | a | b | c | d1 | d2 | content_area | item_type | enemy_set | group_id |
|---|---|---|---|---|---|---|---|---|---|---|
| Unique ID | Model name | Discrimination | Difficulty (binary) | Guessing (3PL only) | Threshold 1 (poly) | Threshold 2 (poly) | Any metadata | Any metadata | Enemy items (optional) | Passage group (optional) |
| 1 | 3PL | 0.073 | 2.553 | 0.066 | — | — | Strand1 | Binary | — | — |
| 2 | 3PL | 0.330 | -3.646 | 0.006 | — | — | Strand1 | Binary | — | — |
| 3 | 3PL | 0.172 | 1.880 | 0.175 | — | — | Strand1 | Binary | 4;5 | — |
| 4 | GPCM | 0.780 | — | — | 0.583 | 2.987 | Strand1 | Polytomous | 3;5 | — |
| 5 | GPCM | 0.354 | — | — | -2.099 | 0.457 | Strand1 | Polytomous | 3;4 | — |
| 6 | 3PL | 0.687 | 2.957 | 0.073 | — | — | Strand2 | Binary | — | — |
| 7 | 3PL | 0.960 | -1.016 | 0.104 | — | — | Strand2 | Binary | — | passage_A |
| 8 | GPCM | 0.868 | — | — | 1.050 | 2.650 | Strand2 | Polytomous | — | passage_A |
| 9 | GPCM | 0.560 | — | — | -1.090 | -0.550 | Strand2 | Polytomous | — | passage_A |
model column — no separate files needed.a, b, c (leave c blank for non-3PL). Polytomous: fill a and threshold columns d1, d2… Leave unused cells blank, not zero.content_area, dok, strand, etc.) automatically becomes a blueprint dimension — no configuration required.4. Multiple: 3;5 or "3;4;5". One-directional declaration is enough — PACER resolves symmetrically.group_id form a stimulus group — selected all-or-nothing (strict mode) or with pruning (pruned mode). To enable group-level blueprint constraints, add a GROUP descriptor row per group: set model = GROUP, set group_id to the group's own ID, and fill in group metadata columns (group_type, subject, etc.). Leave IRT columns blank. See the Item Groups card below.Groups are collections of items that belong together — a science scenario, a math exhibit, a reading passage, a topic cluster, or any atomic set. To use group-level blueprint constraints, add one GROUP descriptor row per group directly in your item bank file. Items in the group reference it via group_id. Standalone items (no group_id) coexist in the same file and are unaffected.
GROUP row's metadata columns (e.g. group_type, subject) are used for group-level blueprint constraints. Item metadata columns (e.g. content_area, dok) are used for item-level blueprint constraints. Both live in the same file — they never conflict.
| itemid | model | group_id | group_type | subject | a | b | c | d1 | d2 | content_area | dok |
|---|---|---|---|---|---|---|---|---|---|---|---|
| ID or group name | GROUP or model name | Points to self (GROUP) or parent group (item) | Group-level metadata | Group-level metadata | IRT params — blank for GROUP rows | Item-level metadata | Item-level metadata | ||||
| G001 | GROUP | G001 | literary | reading | — | — | — | — | — | — | — |
| item_01 | 3PL | G001 | — | — | 1.20 | -0.50 | 0.18 | — | — | reading | 2 |
| item_02 | 3PL | G001 | — | — | 0.95 | 0.10 | 0.21 | — | — | reading | 1 |
| item_03 | 3PL | G001 | — | — | 1.10 | 0.80 | 0.15 | — | — | reading | 3 |
| G002 | GROUP | G002 | persuasive | reading | — | — | — | — | — | — | — |
| item_04 | 3PL | G002 | — | — | 1.40 | -0.20 | 0.14 | — | — | reading | 2 |
| item_05 | GPCM | G002 | — | — | 1.05 | — | — | -0.80 | 0.60 | reading | 3 |
| G003 | GROUP | G003 | physics | science | — | — | — | — | — | — | — |
| item_06 | 2PL | G003 | — | — | 1.30 | -0.40 | — | — | — | science | 2 |
| item_07 | 2PL | G003 | — | — | 1.00 | 0.30 | — | — | — | science | 1 |
| item_08 | 2PL | — | — | — | 0.88 | -0.80 | — | — | — | science | 1 |
| item_09 | 2PL | — | — | — | 1.20 | 0.60 | — | — | — | reading | 2 |
When your bank has GROUP rows, the blueprint can use constraint_unit = group to constrain how many groups of each type are selected. Item-level constraints work exactly as before — both types can coexist in the same blueprint file.
| dimension | category | min_items | max_items | constraint_unit | notes |
|---|---|---|---|---|---|
| Column name or keyword | Value to match | Min count per form | Max count per form | item (default) or group | Free text |
| ── Total row ──────────────────────────────────────────────────────────────────────────── | |||||
| total | — | 32 | 32 | — | Total items per form |
── Group-level constraints — constraint_unit = group means min/max count groups, not items ── |
|||||
| group_type | literary | 2 | 2 | group | Exactly 2 literary groups |
| group_type | persuasive | 1 | 1 | group | Exactly 1 persuasive group |
| subject | science | 1 | 2 | group | 1–2 science groups |
| ── Item-level constraints — unchanged from standard blueprint, constraint_unit defaults to item ── | |||||
| content_area | reading | 18 | 22 | — | 18–22 reading items total |
| content_area | science | 8 | 12 | — | 8–12 science items total |
| dok | 1 | 6 | 10 | — | DOK 1 items |
| dok | 2 | 14 | 18 | — | DOK 2 items |
| dok | 3 | 4 | 8 | — | DOK 3 items |
model = GROUP, set group_id to the group's own ID (references itself), and fill any metadata columns (group_type, subject, etc.). Leave all IRT parameter columns blank — GROUP rows are metadata only, not items.group_type = literary). Each item owns its item-level dimensions (content_area = reading). They are independent and never compete — both live in the same file.group to make min_items / max_items count groups, not items. Matches against GROUP descriptor metadata. Leave blank or item for normal item-level behaviour.group_id behave exactly as in a standard bank. Grouped and standalone items can be freely mixed in the same file and blueprint.group_id with no matching GROUP row, PACER warns at import. The group still works for atomicity, but group-level blueprint constraints cannot apply to it.Each row is one constraint or directive. The dimension column references either a metadata column from your bank or a built-in keyword (model_type, model). All blueprint row types are shown below.
| dimension | category | min_items | max_items | dimension2 | category2 | constraint_type | target_theta | constraint_unit | notes |
|---|---|---|---|---|---|---|---|---|---|
| Column name or keyword | Value to match | Min per form | Max per form | 2nd dimension (joint only) | 2nd category (joint only) | Objective row only | Objective row only | item (default) or group | Free text |
| ── Total row — required; sets form length ────────────────────────────────────────────────────── | |||||||||
| total | — | 20 | 20 | — | — | — | — | — | Total items per form |
| ── Content constraints — any metadata column in the bank ────────────────────────────────────── | |||||||||
| content_area | Strand1 | 5 | 5 | — | — | — | — | — | Exactly 5 from Strand1 |
| content_area | Strand2 | 5 | 5 | — | — | — | — | — | Exactly 5 from Strand2 |
| content_area | Strand3 | 5 | 5 | — | — | — | — | — | Exactly 5 from Strand3 |
| content_area | Strand4 | 5 | 5 | — | — | — | — | — | Exactly 5 from Strand4 |
| ── model_type — built-in keyword: dichotomous or polytomous ─────────────────────────────────── | |||||||||
| model_type | dichotomous | 15 | 18 | — | — | — | — | — | Binary items |
| model_type | polytomous | 2 | 5 | — | — | — | — | — | Polytomous items |
| ── model — built-in keyword: exact model name ────────────────────────────────────────────────── | |||||||||
| model | 3PL | 10 | 15 | — | — | — | — | — | 3PL items only |
| model | GPCM | 2 | 5 | — | — | — | — | — | GPCM items only |
| ── Joint constraint — both dimensions must match simultaneously ───────────────────────────────── | |||||||||
| content_area | Strand1 | 2 | 3 | item_type | Polytomous | — | — | — | Polytomous items in Strand1 |
| ── Group-level constraint — constraint_unit = group counts groups, not items ────────────────── | |||||||||
| group_type | literary | 2 | 2 | — | — | — | — | group | Exactly 2 literary groups |
| ── Objective row — dimension and category left blank; constraint_type and target_theta used ──── | |||||||||
| — | — | — | — | — | — | maximize_tif | 0.0 | — | Maximize info at θ=0 |
dimension = total with min_items and max_items to define form length. When present, the Target input in the PACER toolbar is locked to this value.dimension to any metadata column from your bank (content_area, dok, etc.) and category to the value to match. min_items / max_items are per-form counts.model_type — values: dichotomous or polytomous. model — exact name: 3PL, 2PL, 1PL, GRM, GPCM, PCM, RSM. No extra bank column needed.dimension2 and category2 to require items matching both dimensions simultaneously (e.g. strand=Reading AND dok=3). Both must be present or both absent.dimension and category blank. Set constraint_type to maximize_tif or minimize_sem and target_theta to the ability point. Only the first objective row is used.group to count groups instead of items. Requires GROUP descriptor rows in the bank. Leave blank or item for standard item-level behaviour — see the Item Groups card above.dimension and category blank (and no constraint_type) are silently skipped — safe to use as visual separators. Constraint minimums must be jointly satisfiable given your bank size, or the solver returns Infeasible.Each row tells the solver that the assembled form's Test Information Function must fall within [min_info, max_info] at that exact θ. All rows are hard constraints — the solver will report Infeasible if the bank cannot satisfy them. You can edit these values directly in the TIF Spec table within the app after uploading.
| theta | min_info | max_info | label |
|---|---|---|---|
| θ value (any real number) | Minimum information required | Maximum information allowed (blank = no upper bound) | Optional display label |
| -3 | 0 | 8 | low range |
| -2 | 3 | 12 | below average |
| -1 | 5 | 10 | lower target |
| 0 | 6 | 12 | target region |
| 1 | 5 | 10 | upper target |
| 2 | 3 | 12 | above average |
| 3 | 0 | 8 | high range |
max_info blank for a floor only (no ceiling). Set min_info = 0 for a ceiling only (no floor).min_info at any θ point, the solver reports Infeasible rather than returning a violating solution.