{
  "_id": "6a1bf1001d7bb097a0a2314f",
  "Package": "tmfast",
  "Title": "Fast Topic Models Using Varimax",
  "Version": "0.1.1",
  "Authors@R": "person(\"D.\", \"Hicks\", , \"hicks.daniel.j@gmail.com\", role = c(\"aut\", \"cre\", \"cph\"),\ncomment = c(ORCID = \"0000-0001-7945-4416\"))",
  "Description": "Fits topic models using varimax-rotated principal\ncomponent analysis (PCA), following the \"vintage factor\nanalysis\" approach of Rohe & Zheng (2020)\n<doi:10.48550/arXiv.2004.05387>. Leverages truncated PCA via\n'irlba' for sparse matrices, enabling fast model fitting on\nlarge corpora. Includes an information-theoretic approach to\nvocabulary selection, 'broom'-compatible tidiers for extracting\nword-topic and topic-document matrices into a tidy data\nworkflow, and samplers for constructing simulated corpora for\nbenchmarking and method evaluation.",
  "License": "GPL (>= 3)",
  "Encoding": "UTF-8",
  "Roxygen": "list(markdown = TRUE)",
  "RoxygenNote": "7.3.2",
  "Additional_repositories": "https://dhicks.github.io/drat/",
  "VignetteBuilder": "knitr",
  "Config/testthat/edition": "3",
  "URL": "https://dhicks.github.io/tmfast/, https://github.com/dhicks/tmfast",
  "BugReports": "https://github.com/dhicks/tmfast/issues",
  "Config/pak/sysreqs": "libicu-dev",
  "Repository": "https://dhicks.r-universe.dev",
  "Date/Publication": "2026-05-27 18:08:07 UTC",
  "RemoteUrl": "https://github.com/dhicks/tmfast",
  "RemoteRef": "HEAD",
  "RemoteSha": "9033a3a5ff158fc3e11129b25932475617d707e4",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-05-31 08:12:16 UTC",
    "User": "root"
  },
  "Author": "D. Hicks [aut, cre, cph] (ORCID:\n<https://orcid.org/0000-0001-7945-4416>)",
  "Maintainer": "D. Hicks <hicks.daniel.j@gmail.com>",
  "MD5sum": "8dc20c418f8e9d8625b3dbd60de67b27",
  "_user": "dhicks",
  "_type": "src",
  "_file": "tmfast_0.1.1.tar.gz",
  "_fileid": "b813132396650abd642dffa0b117965643775a0324dc8cda035181e62daa580f",
  "_filesize": 2392783,
  "_sha256": "b813132396650abd642dffa0b117965643775a0324dc8cda035181e62daa580f",
  "_created": "2026-05-31T08:12:16.000Z",
  "_published": "2026-05-31T08:27:44.633Z",
  "_distro": "noble",
  "_jobs": [
    {
      "job": 78711195800,
      "time": 270,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "7315149674"
    },
    {
      "job": 78711195798,
      "time": 274,
      "config": "linux-release-x86_64",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7315150250"
    },
    {
      "job": 78711195816,
      "time": 328,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "7315215038"
    },
    {
      "job": 78711195822,
      "time": 248,
      "config": "macos-release-arm64",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7315184682"
    },
    {
      "job": 78710778143,
      "time": 448,
      "config": "source",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7315117170"
    },
    {
      "job": 78711195813,
      "time": 251,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7315147632"
    },
    {
      "job": 78711195824,
      "time": 220,
      "config": "windows-devel",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "7315144636"
    },
    {
      "job": 78711195804,
      "time": 215,
      "config": "windows-oldrel",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "7315144112"
    },
    {
      "job": 78711195820,
      "time": 255,
      "config": "windows-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7315148168"
    }
  ],
  "_buildurl": "https://github.com/r-universe/dhicks/actions/runs/26707243175",
  "_status": "success",
  "_host": "GitHub-Actions",
  "_upstream": "https://github.com/dhicks/tmfast",
  "_commit": {
    "id": "9033a3a5ff158fc3e11129b25932475617d707e4",
    "author": "Dan Hicks <hicks.daniel.j@gmail.com>",
    "committer": "Dan Hicks <hicks.daniel.j@gmail.com>",
    "message": "resubmission note and bump version\n",
    "time": 1779905287
  },
  "_maintainer": {
    "name": "D. Hicks",
    "email": "hicks.daniel.j@gmail.com",
    "login": "dhicks",
    "description": "Mathematician turned philosopher of science turned science policy + bibliometrics researcher turned whatever the hell I am now",
    "uuid": 3300682,
    "orcid": "0000-0001-7945-4416"
  },
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 4.1.0",
      "role": "Depends"
    },
    {
      "package": "assertthat",
      "role": "Imports"
    },
    {
      "package": "purrr",
      "role": "Imports"
    },
    {
      "package": "dplyr",
      "role": "Imports"
    },
    {
      "package": "tidyr",
      "role": "Imports"
    },
    {
      "package": "magrittr",
      "role": "Imports"
    },
    {
      "package": "rlang",
      "role": "Imports"
    },
    {
      "package": "stringr",
      "role": "Imports"
    },
    {
      "package": "tibble",
      "role": "Imports"
    },
    {
      "package": "tidyselect",
      "role": "Imports"
    },
    {
      "package": "irlba",
      "role": "Imports"
    },
    {
      "package": "tidytext",
      "role": "Imports"
    },
    {
      "package": "glue",
      "role": "Imports"
    },
    {
      "package": "Matrix",
      "role": "Imports"
    },
    {
      "package": "generics",
      "role": "Imports"
    },
    {
      "package": "psych",
      "role": "Imports"
    },
    {
      "package": "cli",
      "role": "Imports"
    },
    {
      "package": "testthat",
      "version": ">= 3.0.0",
      "role": "Suggests"
    },
    {
      "package": "knitr",
      "role": "Suggests"
    },
    {
      "package": "rmarkdown",
      "role": "Suggests"
    },
    {
      "package": "ggbeeswarm",
      "role": "Suggests"
    },
    {
      "package": "ggplot2",
      "role": "Suggests"
    },
    {
      "package": "Rtsne",
      "role": "Suggests"
    },
    {
      "package": "umap",
      "role": "Suggests"
    },
    {
      "package": "lpSolve",
      "role": "Suggests"
    },
    {
      "package": "janeaustenr",
      "role": "Suggests"
    },
    {
      "package": "stm",
      "role": "Suggests"
    },
    {
      "package": "tictoc",
      "role": "Suggests"
    },
    {
      "package": "furrr",
      "role": "Suggests"
    },
    {
      "package": "reshape2",
      "role": "Suggests"
    },
    {
      "package": "tmfast.realbooks",
      "role": "Suggests"
    }
  ],
  "_owner": "dhicks",
  "_selfowned": true,
  "_usedby": 0,
  "_updates": [
    {
      "week": "2026-12",
      "n": 6
    },
    {
      "week": "2026-13",
      "n": 7
    },
    {
      "week": "2026-17",
      "n": 5
    },
    {
      "week": "2026-18",
      "n": 36
    },
    {
      "week": "2026-19",
      "n": 6
    },
    {
      "week": "2026-21",
      "n": 2
    },
    {
      "week": "2026-22",
      "n": 3
    }
  ],
  "_tags": [],
  "_stars": 3,
  "_contributors": [
    {
      "user": "dhicks",
      "count": 125,
      "uuid": 3300682
    }
  ],
  "_userbio": {
    "uuid": 3300682,
    "type": "user",
    "name": "D. Hicks",
    "description": "Mathematician turned philosopher of science turned science policy + bibliometrics researcher turned whatever the hell I am now"
  },
  "_downloads": {
    "count": 0,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/tmfast"
  },
  "_devurl": "https://github.com/dhicks/tmfast",
  "_pkgdown": "https://dhicks.github.io/tmfast/",
  "_rbuild": "4.6.0",
  "_assets": [
    "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",
    "extra/tmfast.html",
    "manual.pdf"
  ],
  "_homeurl": "https://github.com/dhicks/tmfast",
  "_realowner": "dhicks",
  "_cranurl": true,
  "_releases": [
    {
      "version": "0.1.1",
      "date": "2026-05-30"
    }
  ],
  "_exports": [
    "build_matrix",
    "compare_betas",
    "draw_corpus",
    "entropy",
    "expected_entropy",
    "fit_varimax",
    "hellinger",
    "insert_topics",
    "journal_specific",
    "loadings",
    "ndH",
    "ndR",
    "peak_alpha",
    "rdirichlet",
    "renorm",
    "rotation",
    "scores",
    "solve_power",
    "target_power",
    "tidy",
    "tidy_all",
    "tmfast",
    "tsne",
    "umap",
    "varimax_irlba"
  ],
  "_help": [
    {
      "page": "tmfast-package",
      "title": "Fitting \"topic models\" with PCA+varimax",
      "topics": [
        "tmfast-package"
      ]
    },
    {
      "page": "build_matrix",
      "title": "Convert a long dataframe to a wide (sparse) matrix",
      "topics": [
        "build_matrix"
      ]
    },
    {
      "page": "compare_betas",
      "title": "Compare topic-word distributions using Hellinger distance",
      "topics": [
        "compare_betas"
      ]
    },
    {
      "page": "draw_corpus",
      "title": "Draw a collection of documents",
      "concept": [
        "generators"
      ],
      "topics": [
        "draw_corpus"
      ]
    },
    {
      "page": "entropy",
      "title": "Entropy of a distribution",
      "topics": [
        "entropy"
      ]
    },
    {
      "page": "expected_entropy",
      "title": "Expected entropy for samples from a Dirichlet distribution",
      "topics": [
        "expected_entropy"
      ]
    },
    {
      "page": "fit_varimax",
      "title": "Given a (rank 'n') PCA fit, return a rank 'k < n' varimax fit",
      "topics": [
        "fit_varimax"
      ]
    },
    {
      "page": "hellinger",
      "title": "Hellinger distances",
      "topics": [
        "hellinger",
        "hellinger.data.frame",
        "hellinger.Matrix",
        "hellinger.matrix"
      ]
    },
    {
      "page": "insert_topics",
      "title": "Insert a topic model into a fitted 'tmfast'",
      "topics": [
        "insert_topics"
      ]
    },
    {
      "page": "journal_specific",
      "title": "\"Journal-specific\" simulation scenario",
      "concept": [
        "generators"
      ],
      "topics": [
        "journal_specific"
      ]
    },
    {
      "page": "loadings",
      "title": "Extract a PCA/varimax loadings matrix",
      "topics": [
        "loadings",
        "loadings.default"
      ]
    },
    {
      "page": "ndH",
      "title": "Information gain (uniform distribution)",
      "topics": [
        "ndH"
      ]
    },
    {
      "page": "ndR",
      "title": "Information gain (length-proportional distribution)",
      "topics": [
        "ndR"
      ]
    },
    {
      "page": "peak_alpha",
      "title": "Alpha parameter with a single peak",
      "concept": [
        "generators"
      ],
      "topics": [
        "peak_alpha"
      ]
    },
    {
      "page": "predict.varimaxes",
      "title": "Project new data into PCA score space",
      "topics": [
        "predict.varimaxes"
      ]
    },
    {
      "page": "rdirichlet",
      "title": "Sample from the Dirichlet distribution",
      "concept": [
        "generators"
      ],
      "topics": [
        "rdirichlet"
      ]
    },
    {
      "page": "renorm",
      "title": "Renormalize tidied distributions",
      "topics": [
        "renorm"
      ]
    },
    {
      "page": "rotation",
      "title": "Extract varimax rotation",
      "topics": [
        "rotation"
      ]
    },
    {
      "page": "scores",
      "title": "Extract item scores from a fitted PCA/varimax model",
      "topics": [
        "scores"
      ]
    },
    {
      "page": "solve_power",
      "title": "Solve the equation to find the desired exponent",
      "topics": [
        "solve_power"
      ]
    },
    {
      "page": "target_power",
      "title": "Find target power for renormalization",
      "topics": [
        "target_power"
      ]
    },
    {
      "page": "tidy_all",
      "title": "Extract gamma or beta matrices for all topics",
      "topics": [
        "tidy_all"
      ]
    },
    {
      "page": "tidy.tmfast",
      "title": "Extract beta and gamma matrices from 'tmfast' objects",
      "topics": [
        "tidy.tmfast"
      ]
    },
    {
      "page": "tmfast",
      "title": "Fit a topic model using PCA+varimax",
      "topics": [
        "tmfast"
      ]
    },
    {
      "page": "tsne",
      "title": "Discursive space using t-SNE",
      "topics": [
        "tsne",
        "tsne.data.frame",
        "tsne.STM",
        "tsne.tmfast"
      ]
    },
    {
      "page": "umap",
      "title": "Discursive space using UMAP",
      "topics": [
        "umap",
        "umap.matrix",
        "umap.STM",
        "umap.tmfast"
      ]
    },
    {
      "page": "varimax_irlba",
      "title": "Fit a varimax-rotated PCA using irlba",
      "topics": [
        "varimax_irlba"
      ]
    }
  ],
  "_readme": "https://github.com/dhicks/tmfast/raw/HEAD/README.md",
  "_rundeps": [
    "assertthat",
    "cli",
    "cpp11",
    "dplyr",
    "generics",
    "glue",
    "GPArotation",
    "irlba",
    "janeaustenr",
    "lattice",
    "lifecycle",
    "magrittr",
    "Matrix",
    "mnormt",
    "nlme",
    "pillar",
    "pkgconfig",
    "psych",
    "purrr",
    "R6",
    "Rcpp",
    "rlang",
    "SnowballC",
    "stringi",
    "stringr",
    "tibble",
    "tidyr",
    "tidyselect",
    "tidytext",
    "tokenizers",
    "utf8",
    "vctrs",
    "withr"
  ],
  "_vignettes": [
    {
      "source": "realbooks.Rmd",
      "filename": "realbooks.html",
      "title": "Fast topic modeling with real books",
      "author": "Dan Hicks hicks.daniel.j@gmail.com",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Setup",
        "Corpus assembly",
        "Vocabulary selection",
        "Fit topic models",
        "Topic exploration"
      ],
      "created": "2023-03-01 17:50:44",
      "modified": "2026-04-29 21:02:34",
      "commits": 6
    },
    {
      "source": "simulated.Rmd",
      "filename": "simulated.html",
      "title": "Fitting topic models (and simulating text data) with tmfast",
      "author": "Dan Hicks hicks.daniel.j@gmail.com",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Simulated text data",
        "Simulation parameters",
        "Draw true topic distributions",
        "Draw true word distributions",
        "Document lengths",
        "Draw corpus",
        "Fit the topic model",
        "Fitting a conventional topic model (stm)",
        "Assessing accuracy",
        "Renormalizing fitted distributions",
        "Topic alignment",
        "Topic-document distributions",
        "Discursive space visualization using t-SNE and UMAP"
      ],
      "created": "2023-11-15 16:03:47",
      "modified": "2026-05-04 18:08:35",
      "commits": 10
    }
  ],
  "_score": 5.3222192947339195,
  "_indexed": true,
  "_nocasepkg": "tmfast",
  "_universes": [
    "dhicks"
  ],
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.1.1",
      "date": "2026-05-31T08:16:25.000Z",
      "distro": "noble",
      "commit": "9033a3a5ff158fc3e11129b25932475617d707e4",
      "fileid": "ce88fda86be6d262df495ace142dac521f4716212f44ed7572dd3f9e82ea94ff",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/dhicks/actions/runs/26707243175"
    },
    {
      "r": "4.6.0",
      "os": "linux",
      "version": "0.1.1",
      "date": "2026-05-31T08:16:33.000Z",
      "distro": "noble",
      "commit": "9033a3a5ff158fc3e11129b25932475617d707e4",
      "fileid": "64108c6a9dafdefca1ac97cd13ba2f510476ef5446f27111504f3eb8483a1d69",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/dhicks/actions/runs/26707243175"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.1.1",
      "date": "2026-05-31T08:26:31.000Z",
      "commit": "9033a3a5ff158fc3e11129b25932475617d707e4",
      "fileid": "eeeb4b0d17abbd57f0bee79cac58ed29b53ce92df7c9cbd4254ee437d6ac22e1",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/dhicks/actions/runs/26707243175"
    },
    {
      "r": "4.6.0",
      "os": "mac",
      "version": "0.1.1",
      "date": "2026-05-31T08:21:52.000Z",
      "commit": "9033a3a5ff158fc3e11129b25932475617d707e4",
      "fileid": "c8e2e2b3efe5ed312e578393a57f12952ac06974078791cb5255d6f74948326c",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/dhicks/actions/runs/26707243175"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "0.1.1",
      "date": "2026-05-31T08:16:43.000Z",
      "commit": "9033a3a5ff158fc3e11129b25932475617d707e4",
      "fileid": "ca0255d5eaab66a58f66f750717ae298ebc13554212bf84e404fa4563abbcca9",
      "status": "success",
      "buildurl": "https://github.com/r-universe/dhicks/actions/runs/26707243175"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.1.1",
      "date": "2026-05-31T08:15:31.000Z",
      "commit": "9033a3a5ff158fc3e11129b25932475617d707e4",
      "fileid": "e5607902cf150f756f6d2344a063cc2d1291225dfaeb026477844203519f8478",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/dhicks/actions/runs/26707243175"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "0.1.1",
      "date": "2026-05-31T08:15:25.000Z",
      "commit": "9033a3a5ff158fc3e11129b25932475617d707e4",
      "fileid": "2d0e5129163ff887ebe953cbf5a0975ae096f64122c68fcaa01349f54af798e4",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/dhicks/actions/runs/26707243175"
    },
    {
      "r": "4.6.0",
      "os": "win",
      "version": "0.1.1",
      "date": "2026-05-31T08:16:01.000Z",
      "commit": "9033a3a5ff158fc3e11129b25932475617d707e4",
      "fileid": "f7e982002c5badf84b4a695bc390f8b2d7ac05f7133c3c7282fd3c36fb491166",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/dhicks/actions/runs/26707243175"
    }
  ]
}