{
  "_id": "6a29109e732311cd87596341",
  "Type": "Package",
  "Package": "autoFC",
  "Title": "Automatic Toolkit for Construction, Optimization, Scoring and\nSimulation of Forced-Choice Tests",
  "Version": "1.0.0.1001",
  "Authors@R": "c(person(\"Mengtong\", \"Li\", email = \"mt_li@fudan.edu.cn\", role = c(\"cre\", \"aut\"), comment = c(ORCID = \"0000-0002-1766-4976\")), person(\"Tianjun\", \"Sun\", email = \"tsun5@illinois.edu\", role = \"aut\", comment = c(ORCID = \"0000-0002-3655-0042\")), person(\"Bo\", \"Zhang\", email = \"bozhang3065@gmail.com\", role = \"aut\", comment = c(ORCID = \"0000-0002-6730-7336\")))",
  "Description": "Forced-choice (FC) response has gained increasing\npopularity and interest for its resistance to faking when\nwell-designed (Cao & Drasgow, 2019 <doi:10.1037/apl0000414>).\nTo established well-designed FC scales, typically each item\nwithin a block should measure different trait and have similar\nlevel of social desirability (Zhang et al., 2020\n<doi:10.1177/1094428119836486>). Recent study also suggests the\nimportance of high inter-item agreement of social desirability\nbetween items within a block (Pavlov et al., 2021\n<doi:10.31234/osf.io/hmnrc>).  In addition to this, FC\ndevelopers may also need to maximize factor loading differences\n(Brown & Maydeu-Olivares, 2011 <doi:10.1177/0013164410375112>)\nor minimize item location differences (Cao & Drasgow, 2019\n<doi:10.1037/apl0000414>) depending on scoring models. Decision\nof which items should be assigned to the same block, also\ncalled as item pairing, is thus critical to the quality of an\nFC test. Because such pairing process often requires\nresearchers to meet multiple objectives, manual pairing becomes\nimpractical or even not feasible once the number of latent\ntraits and/or number of items per elevates. To address these\nproblems, autoFC is developed as a automatic and efficient tool\nfor facilitating the automatic construction of FC tests (Li et\nal., 2022 <doi:10.1177/01466216211051726>), essentially\nexempting users from the burden of manual item pairing. Given\ncharacteristics of each item (and item responses), FC measures\ncan be constructed either automatically based on user-defined\npairing criteria and weights, or based on exact specifications\nof each block (i.e., blueprint; see Li et al., 2025\n<doi:10.1177/10944281241229784>). Users can also generate\nsimulated responses based on the Thurstonian Item Response\nTheory model (Brown & Maydeu-Olivares, 2011\n<doi:10.1177/0013164410375112>) and predict trait scores of\nsimulated/actual respondents based on an estimated model.",
  "License": "GPL (>= 3)",
  "Additional_repositories": "https://stan-dev.r-universe.dev",
  "Encoding": "UTF-8",
  "LazyData": "true",
  "RoxygenNote": "7.3.3",
  "VignetteBuilder": "knitr",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-06-10 07:15:52 UTC",
    "User": "root"
  },
  "Author": "Mengtong Li [cre, aut] (ORCID:\n<https://orcid.org/0000-0002-1766-4976>), Tianjun Sun [aut]\n(ORCID: <https://orcid.org/0000-0002-3655-0042>), Bo Zhang\n[aut] (ORCID: <https://orcid.org/0000-0002-6730-7336>)",
  "Maintainer": "Mengtong Li <mt_li@fudan.edu.cn>",
  "Repository": "https://cran.r-universe.dev",
  "Date/Publication": "2026-06-10 06:45:49 UTC",
  "RemoteUrl": "https://github.com/cran/autoFC",
  "RemoteRef": "HEAD",
  "RemoteSha": "777e2844bafddc83a2ffa40cb8cebfe4e63fe1c7",
  "MD5sum": "6567099e26b34339a4548959b5d3d04b",
  "_user": "cran",
  "_type": "src",
  "_file": "autoFC_1.0.0.1001.tar.gz",
  "_fileid": "adacab5b6ad5554638d28ef1e1e8386ac1e312a442c0228f6f437f3ae2245e01",
  "_filesize": 467984,
  "_sha256": "adacab5b6ad5554638d28ef1e1e8386ac1e312a442c0228f6f437f3ae2245e01",
  "_created": "2026-06-10T07:15:52.000Z",
  "_published": "2026-06-10T07:22:06.260Z",
  "_distro": "noble",
  "_jobs": [
    {
      "job": 80502650153,
      "time": 251,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "7529022228"
    },
    {
      "job": 80502650269,
      "time": 255,
      "config": "linux-release-x86_64",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7529023876"
    },
    {
      "job": 80501704384,
      "time": 373,
      "config": "source",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7528944984"
    },
    {
      "job": 80502650162,
      "time": 330,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7529045658"
    }
  ],
  "_buildurl": "https://github.com/r-universe/cran/actions/runs/27259537538",
  "_status": "success",
  "_host": "GitHub-Actions",
  "_upstream": "https://github.com/cran/autoFC",
  "_commit": {
    "id": "777e2844bafddc83a2ffa40cb8cebfe4e63fe1c7",
    "author": "Mengtong Li <mt_li@fudan.edu.cn>",
    "committer": "cran-robot <csardi.gabor+cran@gmail.com>",
    "message": "version 1.0.0.1001\n",
    "time": 1781073949
  },
  "_maintainer": {
    "name": "Mengtong Li",
    "email": "mt_li@fudan.edu.cn",
    "orcid": "0000-0002-1766-4976"
  },
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 3.5",
      "role": "Depends"
    },
    {
      "package": "lavaan",
      "role": "Imports"
    },
    {
      "package": "MASS",
      "role": "Imports"
    },
    {
      "package": "MplusAutomation",
      "role": "Imports"
    },
    {
      "package": "pbapply",
      "role": "Imports"
    },
    {
      "package": "rstan",
      "role": "Imports"
    },
    {
      "package": "stats",
      "role": "Imports"
    },
    {
      "package": "knitr",
      "role": "Suggests"
    },
    {
      "package": "rmarkdown",
      "role": "Suggests"
    },
    {
      "package": "cmdstanr",
      "role": "Suggests"
    }
  ],
  "_owner": "cran",
  "_selfowned": false,
  "_usedby": 0,
  "_updates": [
    {
      "week": "2026-18",
      "n": 1
    },
    {
      "week": "2026-22",
      "n": 1
    },
    {
      "week": "2026-24",
      "n": 1
    }
  ],
  "_tags": [
    {
      "name": "0.2.0.1010",
      "date": "2026-04-29"
    },
    {
      "name": "1.0.0.1000",
      "date": "2026-05-27"
    },
    {
      "name": "1.0.0.1001",
      "date": "2026-06-10"
    }
  ],
  "_stars": 0,
  "_contributors": [
    {
      "user": "mengtong805",
      "count": 3,
      "uuid": 126314013
    }
  ],
  "_userbio": {
    "uuid": 6899542,
    "type": "organization",
    "name": "cran",
    "description": "Unofficial read-only mirror of all CRAN R packages"
  },
  "_downloads": {
    "count": 614,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/autoFC"
  },
  "_searchresults": 3,
  "_rbuild": "4.6.0",
  "_assets": [
    "extra/autoFC.html",
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/readme.html",
    "extra/readme.md",
    "manual.pdf"
  ],
  "_homeurl": "https://github.com/tspsyched/autofc",
  "_realowner": "tspsyched",
  "_cranurl": false,
  "_releases": [
    {
      "version": "0.1.2",
      "date": "2021-06-07"
    },
    {
      "version": "0.2.0.1001",
      "date": "2024-02-17"
    },
    {
      "version": "0.2.0.1002",
      "date": "2025-03-13"
    },
    {
      "version": "0.2.0.1010",
      "date": "2026-04-29"
    },
    {
      "version": "1.0.0.1000",
      "date": "2026-05-27"
    }
  ],
  "_exports": [
    "build_blueprint_blocks",
    "build_target_dist",
    "cal_block_energy",
    "cal_block_energy_with_iia",
    "convert_mole_to_pairwise",
    "convert_ranks_to_pairwise",
    "create_blueprint_template",
    "empirical_reliability",
    "extract_adjacent_pairs_stan",
    "extract_tirt_stan_scores",
    "facfun",
    "generate_tirt_lavaan_syntax",
    "generate_tirt_mplus_syntax",
    "generate_tirt_stan_syntax",
    "get_CFA_estimates",
    "get_iia",
    "get_simulation_matrices",
    "make_random_block",
    "optimize_blocks",
    "plot_scores",
    "predict_tirt_stan",
    "prepare_tirt_stan_data",
    "RMSE_range",
    "score_tirt_ipsative",
    "score_tirt_lavaan",
    "score_tirt_mplus",
    "score_tirt_stan",
    "summarize_trait_pairs"
  ],
  "_datasets": [
    {
      "name": "FC_blocks",
      "title": "Actual FC Blocks construted from HEXACO-60 Items from Four Respondent Groups",
      "object": "FC_blocks",
      "class": [
        "tbl_df",
        "tbl",
        "data.frame"
      ],
      "fields": [
        "FC1_Blocks",
        "FC2_Blocks",
        "FC3_Blocks",
        "FC4_Blocks",
        "Block"
      ],
      "rows": 60,
      "table": true,
      "tojson": true
    },
    {
      "name": "FC_item_info",
      "title": "Keying and factor information for HEXACO-60 items",
      "object": "FC_item_info",
      "class": [
        "tbl_df",
        "tbl",
        "data.frame"
      ],
      "fields": [
        "Item ID",
        "keying",
        "factor"
      ],
      "rows": 60,
      "table": true,
      "tojson": true
    },
    {
      "name": "HEXACO_example_data",
      "title": "Example HEXACO Response Data",
      "object": "HEXACO_example_data",
      "class": [
        "tbl_df",
        "tbl",
        "data.frame"
      ],
      "fields": [
        "Group",
        "SS1",
        "SS2",
        "SS3",
        "SS4",
        "SS5",
        "SS6",
        "SS7",
        "SS8",
        "SS9",
        "SS10",
        "SS11",
        "SS12",
        "SS13",
        "SS14",
        "SS15",
        "SS16",
        "SS17",
        "SS18",
        "SS19",
        "SS20",
        "SS21",
        "SS22",
        "SS23",
        "SS24",
        "SS25",
        "SS26",
        "SS27",
        "SS28",
        "SS29",
        "SS30",
        "SS31",
        "SS32",
        "SS33",
        "SS34",
        "SS35",
        "SS36",
        "SS37",
        "SS38",
        "SS39",
        "SS40",
        "SS41",
        "SS42",
        "SS43",
        "SS44",
        "SS45",
        "SS46",
        "SS47",
        "SS48",
        "SS49",
        "SS50",
        "SS51",
        "SS52",
        "SS53",
        "SS54",
        "SS55",
        "SS56",
        "SS57",
        "SS58",
        "SS59",
        "SS60"
      ],
      "rows": 2166,
      "table": true,
      "tojson": true
    },
    {
      "name": "MOLE_data",
      "title": "Actual Response to FC scales in MOLE format",
      "object": "MOLE_data",
      "class": [
        "tbl_df",
        "tbl",
        "data.frame"
      ],
      "fields": [
        "Q1_0_GROUP_T1",
        "Q1_1_GROUP_T1",
        "Q2_0_GROUP_T1",
        "Q2_1_GROUP_T1",
        "Q3_0_GROUP_T1",
        "Q3_1_GROUP_T1",
        "Q4_0_GROUP_T1",
        "Q4_1_GROUP_T1",
        "Q5_0_GROUP_T1",
        "Q5_1_GROUP_T1",
        "Q6_0_GROUP_T1",
        "Q6_1_GROUP_T1",
        "Q7_0_GROUP_T1",
        "Q7_1_GROUP_T1",
        "Q8_0_GROUP_T1",
        "Q8_1_GROUP_T1",
        "Q9_0_GROUP_T1",
        "Q9_1_GROUP_T1",
        "Q10_0_GROUP_T1",
        "Q10_1_GROUP_T1",
        "Q11_0_GROUP_T1",
        "Q11_1_GROUP_T1",
        "Q12_0_GROUP_T1",
        "Q12_1_GROUP_T1",
        "Q13_0_GROUP_T1",
        "Q13_1_GROUP_T1",
        "Q14_0_GROUP_T1",
        "Q14_1_GROUP_T1",
        "Q15_0_GROUP_T1",
        "Q15_1_GROUP_T1",
        "Q16_0_GROUP_T1",
        "Q16_1_GROUP_T1",
        "Q17_0_GROUP_T1",
        "Q17_1_GROUP_T1",
        "Q18_0_GROUP_T1",
        "Q18_1_GROUP_T1",
        "Q19_0_GROUP_T1",
        "Q19_1_GROUP_T1",
        "Q20_0_GROUP_T1",
        "Q20_1_GROUP_T1",
        "Group"
      ],
      "rows": 2173,
      "table": true,
      "tojson": true
    }
  ],
  "_help": [
    {
      "page": "build_blueprint_blocks",
      "title": "Build Forced-Choice Blocks from a Custom Blueprint",
      "topics": [
        "build_blueprint_blocks"
      ]
    },
    {
      "page": "build_target_dist",
      "title": "Create Target Pair Distribution for Scale-Level Fit",
      "topics": [
        "build_target_dist"
      ]
    },
    {
      "page": "cal_block_energy",
      "title": "Fast Calculation of Item Block \"Energy\"",
      "topics": [
        "cal_block_energy"
      ]
    },
    {
      "page": "cal_block_energy_with_iia",
      "title": "Fast Calculation of Item Block \"Energy\" with Inter-Item Agreement",
      "topics": [
        "cal_block_energy_with_iia"
      ]
    },
    {
      "page": "convert_mole_to_pairwise",
      "title": "Convert Most/Least (MOLE) Survey Data into Pairwise Binary Outcomes",
      "topics": [
        "convert_mole_to_pairwise"
      ]
    },
    {
      "page": "convert_ranks_to_pairwise",
      "title": "Convert Ranked Blocks into Pairwise Binary Outcomes",
      "topics": [
        "convert_ranks_to_pairwise"
      ]
    },
    {
      "page": "create_blueprint_template",
      "title": "Generate a Blueprint Template for Forced-Choice Scales",
      "topics": [
        "create_blueprint_template"
      ]
    },
    {
      "page": "empirical_reliability",
      "title": "Empirical Reliability Estimates",
      "topics": [
        "empirical_reliability"
      ]
    },
    {
      "page": "extract_adjacent_pairs_stan",
      "title": "Extract Only Adjacent Rank Pairs for Stan (Heister et al., 2025)",
      "topics": [
        "extract_adjacent_pairs_stan"
      ]
    },
    {
      "page": "extract_tirt_stan_scores",
      "title": "Extract Trait Scores and SEs from a Fitted Stan TIRT Model",
      "topics": [
        "extract_tirt_stan_scores"
      ]
    },
    {
      "page": "facfun",
      "title": "Function for Checking If All Items in a Vector Are Unique",
      "topics": [
        "facfun"
      ]
    },
    {
      "page": "FC_blocks",
      "title": "Actual FC Blocks construted from HEXACO-60 Items from Four Respondent Groups",
      "topics": [
        "FC_blocks"
      ]
    },
    {
      "page": "FC_item_info",
      "title": "Keying and factor information for HEXACO-60 items",
      "topics": [
        "FC_item_info"
      ]
    },
    {
      "page": "generate_tirt_lavaan_syntax",
      "title": "Generate lavaan Syntax for Thurstonian Models",
      "topics": [
        "generate_tirt_lavaan_syntax"
      ]
    },
    {
      "page": "generate_tirt_mplus_syntax",
      "title": "Generate Mplus Syntax for Thurstonian IRT (TIRT) or Thurstonian Factor Model (TFM)",
      "topics": [
        "generate_tirt_mplus_syntax"
      ]
    },
    {
      "page": "generate_tirt_stan_syntax",
      "title": "Generate Stan Syntax and Data for TIRT Models",
      "topics": [
        "generate_tirt_stan_syntax"
      ]
    },
    {
      "page": "get_CFA_estimates",
      "title": "Conduct Confirmatory Factor Analysis (CFA) and Obtain Parameter Estimates",
      "topics": [
        "get_CFA_estimates"
      ]
    },
    {
      "page": "get_iia",
      "title": "Helper Function for Outputting IIA Characteristics of Each Block",
      "topics": [
        "get_iia"
      ]
    },
    {
      "page": "get_simulation_matrices",
      "title": "Generate Simulated Person and Item Parameter Matrices for the TIRT Model",
      "topics": [
        "get_simulation_matrices"
      ]
    },
    {
      "page": "HEXACO_example_data",
      "title": "Example HEXACO Response Data",
      "topics": [
        "HEXACO_example_data"
      ]
    },
    {
      "page": "make_random_block",
      "title": "Construction of Random Item Blocks",
      "topics": [
        "make_random_block"
      ]
    },
    {
      "page": "MOLE_data",
      "title": "Actual Response to FC scales in MOLE format",
      "topics": [
        "MOLE_data"
      ]
    },
    {
      "page": "optimize_blocks",
      "title": "Automatic Item Pairing Method in Forced-Choice Test Construction",
      "topics": [
        "optimize_blocks"
      ]
    },
    {
      "page": "plot_scores",
      "title": "Scatter Plot for True vs Estimated Scores, True Score vs Absolute Error, etc.",
      "topics": [
        "plot_scores"
      ]
    },
    {
      "page": "predict_tirt_stan",
      "title": "Predict Trait Scores for New Data using a Fitted Stan Model",
      "topics": [
        "predict_tirt_stan"
      ]
    },
    {
      "page": "prepare_tirt_stan_data",
      "title": "Prepare pairwise list data for Stan",
      "topics": [
        "prepare_tirt_stan_data"
      ]
    },
    {
      "page": "RMSE_range",
      "title": "Calculate Overall or Binned RMSE of Trait Scores",
      "topics": [
        "RMSE_range"
      ]
    },
    {
      "page": "score_tirt_ipsative",
      "title": "Calculate Classical Ipsative (Sum) Scores for Forced-Choice Measures",
      "topics": [
        "score_tirt_ipsative"
      ]
    },
    {
      "page": "score_tirt_lavaan",
      "title": "Fast, Analytical Trait Scoring for Second-Order TIRT using optim()",
      "topics": [
        "score_tirt_lavaan"
      ]
    },
    {
      "page": "score_tirt_mplus",
      "title": "Fast Analytical Trait Scoring for Mplus TIRT/TFM Models",
      "topics": [
        "score_tirt_mplus"
      ]
    },
    {
      "page": "score_tirt_stan",
      "title": "Run Stan TIRT Model and Extract Formatted Scores",
      "topics": [
        "score_tirt_stan"
      ]
    },
    {
      "page": "summarize_trait_pairs",
      "title": "Summarize Trait and Keying Pairs in a Constructed Forced-Choice Test",
      "topics": [
        "summarize_trait_pairs"
      ]
    }
  ],
  "_readme": "https://github.com/cran/autoFC/raw/HEAD/README.md",
  "_rundeps": [
    "abind",
    "askpass",
    "backports",
    "BH",
    "boot",
    "callr",
    "checkmate",
    "cli",
    "coda",
    "cpp11",
    "curl",
    "data.table",
    "desc",
    "digest",
    "distributional",
    "farver",
    "fastDummies",
    "generics",
    "ggplot2",
    "glue",
    "gridExtra",
    "gsubfn",
    "gtable",
    "httr",
    "inline",
    "isoband",
    "jsonlite",
    "labeling",
    "lattice",
    "lavaan",
    "lifecycle",
    "loo",
    "magrittr",
    "MASS",
    "matrixStats",
    "mime",
    "mnormt",
    "MplusAutomation",
    "numDeriv",
    "openssl",
    "otel",
    "pander",
    "pbapply",
    "pbivnorm",
    "pillar",
    "pkgbuild",
    "pkgconfig",
    "plyr",
    "posterior",
    "processx",
    "proto",
    "ps",
    "quadprog",
    "QuickJSR",
    "R6",
    "RColorBrewer",
    "Rcpp",
    "RcppEigen",
    "RcppParallel",
    "rlang",
    "rstan",
    "S7",
    "scales",
    "StanHeaders",
    "stringi",
    "stringr",
    "sys",
    "tensorA",
    "texreg",
    "tibble",
    "utf8",
    "vctrs",
    "viridisLite",
    "withr",
    "xtable"
  ],
  "_vignettes": [
    {
      "source": "intro-to-autoFC.Rmd",
      "filename": "intro-to-autoFC.html",
      "title": "Getting Started with autoFC",
      "author": "Mengtong Li",
      "engine": "knitr::rmarkdown",
      "headings": [
        "1. Load the Package and Example Data",
        "2. Generate Initial Block Solution",
        "3. Optimize Blocks using Simulated Annealing",
        "4. Evaluate Scale-Level Trait Diagnostics",
        "5. Ipsative FC Scoring",
        "6. Thurstonian IRT (TIRT) FC Scoring",
        "Scoring in lavaan",
        "Scoring in stan"
      ],
      "created": "2026-05-27 08:51:51",
      "modified": "2026-05-27 08:51:51",
      "commits": 1
    }
  ],
  "_score": 3.1760912590556813,
  "_indexed": false,
  "_nocasepkg": "autofc",
  "_universes": [
    "cran"
  ],
  "_indexurl": "https://tspsyched.r-universe.dev/autoFC",
  "_previous": "1.0.0.1000",
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "1.0.0.1001",
      "date": "2026-06-10T07:20:09.000Z",
      "distro": "noble",
      "commit": "777e2844bafddc83a2ffa40cb8cebfe4e63fe1c7",
      "fileid": "49e4fc988625331613f083f075997d1098f9198859683cc4b7fe9823dcf351c5",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/27259537538"
    },
    {
      "r": "4.6.0",
      "os": "linux",
      "version": "1.0.0.1001",
      "date": "2026-06-10T07:20:12.000Z",
      "distro": "noble",
      "commit": "777e2844bafddc83a2ffa40cb8cebfe4e63fe1c7",
      "fileid": "bf247e687ca12d6310c879c76a9655d27e5d8987e4eeb2911b4bbe5028c42dda",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/27259537538"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "1.0.0.1001",
      "date": "2026-06-10T07:21:45.000Z",
      "commit": "777e2844bafddc83a2ffa40cb8cebfe4e63fe1c7",
      "fileid": "d576459f96954610ce3e73ee4a056db03d9ff75557db99dc89e24de3dbdb95ee",
      "status": "success",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/27259537538"
    }
  ]
}