{
  "_id": "6a6358afaecbde9870bb2718",
  "Package": "ackwards",
  "Title": "Bass-Ackwards Hierarchical Structural Analysis",
  "Version": "0.1.1",
  "Authors@R": "c(\nperson(\"Jeffrey M.\", \"Girard\", , \"me@jmgirard.com\", role = c(\"aut\", \"cre\"),\ncomment = c(ORCID = \"0000-0002-7359-3746\")),\nperson(\"Miriam K.\", \"Forbes\", role = \"cph\",\ncomment = \"Author of the bundled AMH correlation matrix (data/forbes2023.rda), CC-BY 4.0\"))",
  "Description": "Implements Goldberg's (2006)\n<doi:10.1016/j.jrp.2006.01.001> bass-ackwards method and modern\ndescendants for hierarchical structural analysis. Extracts\nsolutions from 1 to k factors using principal component\nanalysis (PCA), exploratory factor analysis (EFA), or\nexploratory structural equation modeling (ESEM) engines, then\ncharacterizes the hierarchy via between-level factor-score\ncorrelations computed via exact linear algebra (Waller, 2007,\n<doi:10.1016/j.jrp.2006.08.005>) or materialized scores.\nIncludes the Forbes (2023) <doi:10.1037/met0000546> extension\nfor redundancy pruning and all-levels cross-correlations.",
  "License": "MIT + file LICENSE",
  "Encoding": "UTF-8",
  "LazyData": "true",
  "Config/testthat/edition": "3",
  "Config/testthat/parallel": "true",
  "Config/testthat/start-first": "suggest_k, boot_edges, esem, layout,\nmissing, vignette-m24",
  "VignetteBuilder": "knitr",
  "URL": "https://jmgirard.github.io/ackwards/,\nhttps://github.com/jmgirard/ackwards",
  "BugReports": "https://github.com/jmgirard/ackwards/issues",
  "Config/roxygen2/version": "8.0.0",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-07-24 12:15:26 UTC",
    "User": "root"
  },
  "Author": "Jeffrey M. Girard [aut, cre] (ORCID:\n<https://orcid.org/0000-0002-7359-3746>), Miriam K. Forbes\n[cph] (Author of the bundled AMH correlation matrix\n(data/forbes2023.rda), CC-BY 4.0)",
  "Maintainer": "Jeffrey M. Girard <me@jmgirard.com>",
  "Repository": "https://cran.r-universe.dev",
  "Date/Publication": "2026-07-24 10:00:13 UTC",
  "RemoteUrl": "https://github.com/cran/ackwards",
  "RemoteRef": "HEAD",
  "RemoteSha": "65b3be1a257580c9e51ea86712882fb0e117f436",
  "_user": "cran",
  "_type": "src",
  "_file": "ackwards_0.1.1.tar.gz",
  "_fileid": "https://r2.ropensci.org/51e8f1fd3c637ef8941bbd1758c7605f6c41fc20a30dade6886a85fdc88eb642",
  "_filesize": 3339520,
  "_sha256": "51e8f1fd3c637ef8941bbd1758c7605f6c41fc20a30dade6886a85fdc88eb642",
  "_expires": "2026-11-01T12:21:00.000Z",
  "_created": "2026-07-24T12:15:26.000Z",
  "_published": "2026-07-24T12:21:03.191Z",
  "_jobs": [
    {
      "job": 89478563479,
      "time": 274,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "8596301791"
    },
    {
      "job": 89478563505,
      "time": 280,
      "config": "linux-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "8596303842"
    },
    {
      "job": 89477658091,
      "time": 284,
      "config": "source",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "8596201647"
    },
    {
      "job": 89478563470,
      "time": 124,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "8596246972"
    },
    {
      "job": 89478563497,
      "time": 212,
      "config": "windows-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "8596279899"
    }
  ],
  "_host": "GitHub-Actions",
  "_buildurl": "https://github.com/r-universe/cran/actions/runs/30092126535",
  "_status": "success",
  "_upstream": "https://github.com/cran/ackwards",
  "_commit": {
    "id": "65b3be1a257580c9e51ea86712882fb0e117f436",
    "author": "Jeffrey M. Girard <me@jmgirard.com>",
    "committer": "cran-robot <csardi.gabor+cran@gmail.com>",
    "message": "version 0.1.1\n",
    "time": 1784887213
  },
  "_maintainer": {
    "name": "Jeffrey M. Girard",
    "email": "me@jmgirard.com",
    "login": "jmgirard",
    "twitter": "@jeffreymgirard",
    "description": "Associate Professor of Psychology",
    "uuid": 6829033,
    "orcid": "0000-0002-7359-3746"
  },
  "_distro": "resolute",
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 4.1.0",
      "role": "Depends"
    },
    {
      "package": "cli",
      "role": "Imports"
    },
    {
      "package": "generics",
      "role": "Imports"
    },
    {
      "package": "psych",
      "role": "Imports"
    },
    {
      "package": "rlang",
      "role": "Imports"
    },
    {
      "package": "stats",
      "role": "Imports"
    },
    {
      "package": "utils",
      "role": "Imports"
    },
    {
      "package": "covr",
      "role": "Suggests"
    },
    {
      "package": "EFAtools",
      "role": "Suggests"
    },
    {
      "package": "future",
      "role": "Suggests"
    },
    {
      "package": "future.apply",
      "role": "Suggests"
    },
    {
      "package": "ggplot2",
      "role": "Suggests"
    },
    {
      "package": "gt",
      "role": "Suggests"
    },
    {
      "package": "knitr",
      "role": "Suggests"
    },
    {
      "package": "lavaan",
      "version": ">= 0.6-13",
      "role": "Suggests"
    },
    {
      "package": "rmarkdown",
      "role": "Suggests"
    },
    {
      "package": "testthat",
      "version": ">= 3.0.0",
      "role": "Suggests"
    }
  ],
  "_owner": "cran",
  "_selfowned": false,
  "_usedby": 0,
  "_updates": [
    {
      "week": "2026-30",
      "n": 1
    }
  ],
  "_tags": [
    {
      "name": "0.1.1",
      "date": "2026-07-24"
    }
  ],
  "_stars": 0,
  "_contributors": [
    {
      "user": "jmgirard",
      "count": 1,
      "uuid": 6829033
    }
  ],
  "_userbio": {
    "uuid": 6899542,
    "type": "organization",
    "name": "cran",
    "followers": 623,
    "description": "Unofficial read-only mirror of all CRAN R packages"
  },
  "_downloads": {
    "count": 0,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/ackwards"
  },
  "_devurl": "https://github.com/jmgirard/ackwards",
  "_pkgdown": "https://jmgirard.github.io/ackwards/",
  "_rbuild": "4.6.1",
  "_assets": [
    "extra/ackwards.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",
    "LICENSE",
    "manual.pdf"
  ],
  "_cranurl": false,
  "_releases": [
    {
      "version": "0.1.1",
      "date": "2026-07-24"
    }
  ],
  "_exports": [
    "ackwards",
    "augment",
    "autoplot",
    "ba_layout",
    "boot_edges",
    "check_items",
    "comparability",
    "factor_labels",
    "factorability",
    "glance",
    "label_template",
    "prune",
    "set_factor_labels",
    "suggest_k",
    "tidy",
    "top_items"
  ],
  "_datasets": [
    {
      "name": "bfi25",
      "title": "Big Five Inventory - 25-item IPIP example dataset",
      "object": "bfi25",
      "class": [
        "data.frame"
      ],
      "fields": [
        "A1",
        "A2",
        "A3",
        "A4",
        "A5",
        "C1",
        "C2",
        "C3",
        "C4",
        "C5",
        "E1",
        "E2",
        "E3",
        "E4",
        "E5",
        "N1",
        "N2",
        "N3",
        "N4",
        "N5",
        "O1",
        "O2",
        "O3",
        "O4",
        "O5"
      ],
      "rows": 1000,
      "table": true,
      "tojson": true
    },
    {
      "name": "forbes2023",
      "title": "Assessing Mental Health symptom correlation matrix (Forbes 2023 applied example)",
      "object": "forbes2023",
      "class": [
        "matrix",
        "array"
      ],
      "fields": [
        "Impulsivity",
        "Reckless_behaviour__i_",
        "Blurting",
        "Interrupting",
        "Talkative__i_",
        "Difficulty_delaying_gratification__i_",
        "Difficulty_waiting_turn__i_",
        "Misjudged_time__i_",
        "Inattention",
        "Fidgety",
        "Restless",
        "Difficulty_concentrating",
        "Needed_deadlines__i_",
        "Irritable",
        "Impatient",
        "Stubborn__i_",
        "Bored",
        "Difficulty_sleeping",
        "Checking_for_mistakes",
        "Difficult_to_touch_rubbish__i_",
        "Contamination_concerns",
        "Performed_rituals__i_",
        "Compulsions",
        "Checking__i_",
        "Try_to_prevent_harm__i_",
        "Checking_so_nothing_terrible_would_happen__i_",
        "Rituals_for_protection__i_",
        "Fear_of_mistakes",
        "Perfectionism",
        "Responsibility_to_ensure_everything_was_in_order__i_",
        "Very_strict_with_self__i_",
        "One_right_way_to_do_things__i_",
        "Upsetting_thoughts",
        "Obsessive_thoughts__i_",
        "Compulsions__i_",
        "Fear_of_acting_on_compulsions",
        "Guilt_about_obsessions__i_",
        "Thoughts_would_harm_other_people_unintentionally__i_",
        "Having_upsetting_thought_made_it_more_likely_to_happen__i_",
        "Repeat_words_to_stop_obsessions__i_",
        "Need_for_order__i_",
        "Strict_routine_doing_ordinary_things__i_",
        "Do_everything_exactly_right_leaving_home__i_",
        "Got_stuck_doing_routine_behaviours__i_",
        "Suicidal_ideation",
        "Intrusive_thoughts_about_self.harm__i_",
        "Suicidal_ideation_and_plans",
        "Told_someone_about_suicidality__i_",
        "Fear_of_fear",
        "Sought_help_for_panic__i_",
        "Rush_of_fear._and_related_impairment",
        "Fear_of_specific_situations",
        "Claustrophobia__i_",
        "Safety_zone__i_",
        "Thought_might_be_dying",
        "Afraid_of_physical_symptoms",
        "Frightened_by_nausea__i_",
        "Fear_of_loss_of_control",
        "Disconnected_or_detached",
        "Racing_or_pounding_heart",
        "Trembling__i_",
        "Feeling_anxious_",
        "Fear",
        "Avoidance_of_social_situations",
        "Avoid_disagreeing_with_others__i_",
        "Concerns_about_being_observed.public_speaking",
        "Tension_headaches_before_social_situations__i_",
        "Angry",
        "Bad_temper",
        "Guilt_about_anger__i_",
        "Felt_like_breaking_things__i_",
        "Anger_fixation",
        "Resentful",
        "Guilt_and_low_self.worth",
        "Envy__i_",
        "Hostile",
        "Loss_of_control_of_drinking",
        "Using_larger_amounts_of_alcohol_than_intended",
        "Fast_drinking_for_quick_effect__i_",
        "Drank_for_negative_affect_",
        "Drank_because_nothing_to_do__i_",
        "Drank_because_angry_with_self__i_",
        "Drank_because_lonely__i_",
        "Drank_because_annoyed",
        "Drank_because_tense",
        "Drank_because_of_physical_pain__i_",
        "Large_amounts_of_time_drinking",
        "Used_drugs_to_get_high",
        "Time_recovering_from_drugs__i_",
        "Drank_because_deserved_it__i_",
        "Drank_to_unwind",
        "Depressed_mood",
        "Felt__attacked__i_",
        "Paranoia__people_are_against_them_",
        "Thoughts_of_people_trying_to_upset_deliberately__i_",
        "Olfactory_hallucination__i_",
        "Sense_of_unreality",
        "Sense_of_danger_or_dread__i_",
        "Something_seriously_wrong_with_body__i_",
        "Lights_or_colours_seemed_brighter__i_",
        "Paranormal_experiences",
        "Thought_insertion__i_",
        "Doubted_dreams_were_the_product_of_own_mind__i_",
        "Thought_broadcasting",
        "Someone.something_playing_games_with_mind__i_",
        "Felt_part_of_body_did_not_belong__i_",
        "Paranoia__people_want_to_hurt_them_",
        "Paranoia__being_followed_or_observed_",
        "Auditory_hallucinations",
        "Mistook_noises_for_voices__i_",
        "Ideas_of_reference__i_",
        "Special_powers",
        "Felt_was_very_special__i_",
        "Had_a_sixth_sense__i_",
        "Heard_voices",
        "Anxious_arousal_due_to_trauma",
        "Dysphoria_due_to_trauma",
        "Avoidance_of_cues_and_emotional_detachment",
        "Self.blame_for_trauma",
        "Trauma_amnesia",
        "Reexperiencing_trauma",
        "Social_interaction_concerns",
        "Role_and_relationship_impairment_from_drug_use",
        "Relationship_friction_around_drug_use",
        "Urge_to_use_drugs",
        "Money_problems_due_to_drug_use",
        "Used_drugs_in_hazardous_situations__i_",
        "Prioritising_drug_use",
        "Dependence_on_drugs",
        "Withdrawal_from_drugs__i_",
        "Had_to_keep_taking_drugs_once_started__i_",
        "Used_drugs_after_deciding_not_to",
        "Tolerance_to_drugs",
        "More_drugs_than_intended_and_despite_psychological_problems",
        "Suicidal_plans",
        "Hopelessness",
        "Suicidal_thoughts__better_off_dead_",
        "Unafraid_of_dying__i_",
        "Worry_about_panic__i_",
        "Fear_of_leaving_the_house_alone__i_",
        "Nervous_or_anxious__i_",
        "Panic_episode",
        "Afraid_would_have_a_heart_attack._stroke._suffocate._or_die__i_",
        "Chest_pain__i_",
        "Felt_could_not_breathe__i_",
        "Dizzy_or_lightheaded__i_",
        "Feared_fainting__i_",
        "Avoidance_of_social_situations__i_",
        "Avoidance_of_crowded_places__i_",
        "Fear_of_negative_evaluation",
        "Fear_of_being_centre_of_attention",
        "Drinking_large_amounts",
        "Felt_should_cut_down_drinking__i_",
        "Anhedonia",
        "Felt_like_a_failure__i_"
      ],
      "rows": 155,
      "table": true,
      "tojson": true
    },
    {
      "name": "sim16",
      "title": "Simulated continuous bass-ackwards teaching example (16 items, known hierarchy)",
      "object": "sim16",
      "class": [
        "data.frame"
      ],
      "fields": [
        "i1",
        "i2",
        "i3",
        "i4",
        "i5",
        "i6",
        "i7",
        "i8",
        "i9",
        "i10",
        "i11",
        "i12",
        "i13",
        "i14",
        "i15",
        "i16"
      ],
      "rows": 1000,
      "table": true,
      "tojson": true
    }
  ],
  "_help": [
    {
      "page": "ackwards",
      "title": "Bass-ackwards hierarchical structural analysis",
      "topics": [
        "ackwards"
      ]
    },
    {
      "page": "augment.ackwards",
      "title": "Augment data with factor scores from an ackwards object",
      "topics": [
        "augment.ackwards"
      ]
    },
    {
      "page": "autoplot",
      "title": "autoplot generic",
      "topics": [
        "autoplot"
      ]
    },
    {
      "page": "autoplot.ackwards",
      "title": "Plot a bass-ackwards diagram or per-level fit index chart",
      "topics": [
        "autoplot.ackwards",
        "plot.ackwards"
      ]
    },
    {
      "page": "autoplot.comparability",
      "title": "Plot a comparability diagnostic",
      "topics": [
        "autoplot.comparability"
      ]
    },
    {
      "page": "autoplot.suggest_k",
      "title": "Plot a suggest_k diagnostic",
      "topics": [
        "autoplot.suggest_k"
      ]
    },
    {
      "page": "ba_layout",
      "title": "Compute a layered layout for a bass-ackwards diagram",
      "topics": [
        "ba_layout"
      ]
    },
    {
      "page": "bfi25",
      "title": "Big Five Inventory - 25-item IPIP example dataset",
      "topics": [
        "bfi25"
      ]
    },
    {
      "page": "boot_edges",
      "title": "Bootstrap confidence intervals for between-level edges",
      "topics": [
        "boot_edges",
        "boot_edges.ackwards"
      ]
    },
    {
      "page": "check_items",
      "title": "Screen items for problems before factor analysis",
      "topics": [
        "check_items"
      ]
    },
    {
      "page": "comparability",
      "title": "Split-half factor comparability",
      "topics": [
        "comparability"
      ]
    },
    {
      "page": "factor_labels",
      "title": "Read the factor labels stored on an ackwards object",
      "topics": [
        "factor_labels"
      ]
    },
    {
      "page": "factorability",
      "title": "Screen a dataset for factorability and sampling adequacy",
      "topics": [
        "factorability"
      ]
    },
    {
      "page": "forbes2023",
      "title": "Assessing Mental Health symptom correlation matrix (Forbes 2023 applied example)",
      "topics": [
        "forbes2023"
      ]
    },
    {
      "page": "glance.ackwards",
      "title": "Glance at an ackwards object",
      "topics": [
        "glance.ackwards"
      ]
    },
    {
      "page": "label_template",
      "title": "Generate a node-label scaffold for autoplot",
      "topics": [
        "label_template",
        "print.ackwards_labels"
      ]
    },
    {
      "page": "predict.ackwards",
      "title": "Score new observations with a fitted ackwards model",
      "topics": [
        "predict.ackwards"
      ]
    },
    {
      "page": "print.ackwards",
      "title": "Print an ackwards object",
      "topics": [
        "print.ackwards"
      ]
    },
    {
      "page": "print.check_items",
      "title": "Print an item quality check",
      "topics": [
        "print.check_items"
      ]
    },
    {
      "page": "print.comparability",
      "title": "Print a comparability object",
      "topics": [
        "print.comparability"
      ]
    },
    {
      "page": "print.factorability",
      "title": "Print a factorability screen",
      "topics": [
        "print.factorability"
      ]
    },
    {
      "page": "print.suggest_k",
      "title": "Print a suggest_k object",
      "topics": [
        "print.suggest_k"
      ]
    },
    {
      "page": "print.summary_ackwards",
      "title": "Print a summary_ackwards object",
      "topics": [
        "print.summary_ackwards"
      ]
    },
    {
      "page": "print.top_items",
      "title": "Print a top_items object",
      "topics": [
        "print.top_items"
      ]
    },
    {
      "page": "prune",
      "title": "Flag redundant or artifactual factors (Forbes 2023 extension)",
      "topics": [
        "prune",
        "prune.ackwards"
      ]
    },
    {
      "page": "set_factor_labels",
      "title": "Attach persistent factor labels to an ackwards object",
      "topics": [
        "set_factor_labels"
      ]
    },
    {
      "page": "sim16",
      "title": "Simulated continuous bass-ackwards teaching example (16 items, known hierarchy)",
      "topics": [
        "sim16"
      ]
    },
    {
      "page": "suggest_k",
      "title": "Suggest a maximum number of factors for bass-ackwards analysis",
      "topics": [
        "suggest_k"
      ]
    },
    {
      "page": "summary.ackwards",
      "title": "Summarise an ackwards object",
      "topics": [
        "summary.ackwards"
      ]
    },
    {
      "page": "tidy.ackwards",
      "title": "Tidy an ackwards object into a long data frame",
      "topics": [
        "tidy.ackwards"
      ]
    },
    {
      "page": "top_items",
      "title": "Display the salient items for each factor",
      "topics": [
        "top_items"
      ]
    }
  ],
  "_pkglogo": "https://github.com/cran/ackwards/raw/HEAD/man/figures/logo.png",
  "_readme": "https://github.com/cran/ackwards/raw/HEAD/README.md",
  "_rundeps": [
    "cli",
    "generics",
    "GPArotation",
    "lattice",
    "mnormt",
    "nlme",
    "psych",
    "rlang"
  ],
  "_vignettes": [
    {
      "source": "ackwards-engines.Rmd",
      "filename": "ackwards-engines.html",
      "title": "Choosing an Engine: PCA, EFA, and ESEM",
      "engine": "knitr::rmarkdown",
      "headings": [
        "The three engines at a glance",
        "Setup",
        "PCA: components from total variance",
        "EFA: factors from common variance",
        "How close are EFA and PCA loadings?",
        "ESEM: EFA with full model diagnostics",
        "Loading standard errors and confidence intervals",
        "Per-level fit: what it tells you (and what it doesn't)",
        "The key distinction",
        "Reporting fit with tidy() and autoplot()",
        "Should you care about fit in a bass-ackwards workflow?",
        "How much do the edges differ?",
        "Choosing an engine",
        "Missing data",
        "FIML for continuous PCA/EFA",
        "Which option to use?",
        "Correlation-matrix input",
        "Constraints",
        "suggest_k() with a correlation matrix",
        "Performance with many items (ESEM)",
        "References"
      ],
      "created": "2026-07-24 10:00:13",
      "modified": "2026-07-24 10:00:13",
      "commits": 1
    },
    {
      "source": "ackwards-suggest-k.Rmd",
      "filename": "ackwards-suggest-k.html",
      "title": "Choosing k: How Many Factors?",
      "engine": "knitr::rmarkdown",
      "headings": [
        "k is a decision, not an output",
        "The five criteria",
        "PA-PC — Parallel Analysis (PC basis)",
        "PA-FA — Parallel Analysis (FA basis)",
        "MAP — Minimum Average Partial",
        "VSS-1 and VSS-2 — Very Simple Structure",
        "CD — Comparison Data",
        "Summary table",
        "Running suggest_k()",
        "The diagnostic plot",
        "Matching the criterion to your engine",
        "The arguments",
        "criteria — which criteria to compute",
        "cor — correlation basis",
        "n_iter — Monte Carlo iterations",
        "seed — reproducibility",
        "k_max — ceiling for the search",
        "When the criteria agree — and when they don't",
        "A worked recommendation for the BFI",
        "References"
      ],
      "created": "2026-07-24 10:00:13",
      "modified": "2026-07-24 10:00:13",
      "commits": 1
    },
    {
      "source": "ackwards-visualization.Rmd",
      "filename": "ackwards-visualization.html",
      "title": "Customizing the Hierarchy Diagram",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Setup",
        "Encoding sign and magnitude",
        "sign_by — how direction is shown",
        "magnitude_by — how |r| is shown",
        "Filtering edges",
        "cut_show — minimum |r| to display",
        "Edge colors",
        "color_pos / color_neg — custom direction colors",
        "Monochrome mode",
        "mono = TRUE — a black-and-white convenience wrapper",
        "Correlation labels",
        "show_r / r_digits — annotate edges with r values",
        "Node labels",
        "node_labels — rename individual factors",
        "label_template() — generate the scaffold",
        "Structural simplifications",
        "primary_only = TRUE — show only primary-parent edges",
        "Level labels",
        "show_level_labels / level_label_size",
        "Arrowheads",
        "show_arrows = FALSE — plain line ends",
        "Edge width",
        "edge_linewidth — uniform vs. |r|-scaled width",
        "Layout orientation",
        "direction = \"horizontal\" — left-to-right layout",
        "Legend",
        "legend = FALSE — suppress all guides",
        "Worked example: publication-ready figure",
        "Saving plots",
        "Diagnostic scree / criteria plot: autoplot.suggest_k()",
        "References"
      ],
      "created": "2026-07-24 10:00:13",
      "modified": "2026-07-24 10:00:13",
      "commits": 1
    },
    {
      "source": "ackwards-interpret.Rmd",
      "filename": "ackwards-interpret.html",
      "title": "Interpreting and Labeling Factors",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Reading a factor with top_items()",
        "Cross-loadings are signal",
        "Showing item wording instead of codes",
        "The sign convention: negative does not mean \"low\"",
        "Naming in a hierarchy",
        "Borrowing names for the upper levels",
        "Applying your names",
        "Making the names stick with set_factor_labels()",
        "The Forbes letter convention",
        "Starting from a blank slate",
        "References"
      ],
      "created": "2026-07-24 10:00:13",
      "modified": "2026-07-24 10:00:13",
      "commits": 1
    },
    {
      "source": "ackwards-intro.Rmd",
      "filename": "ackwards-intro.html",
      "title": "Introduction to Bass-Ackwards Analysis",
      "engine": "knitr::rmarkdown",
      "headings": [
        "The problem: which factor solution is right?",
        "Data",
        "Step 1: How many factors? suggest_k()",
        "Step 2: Fit the hierarchy ackwards()",
        "Step 3: Summarize the result",
        "High-level summary",
        "Step 4: Visualize the hierarchy autoplot()",
        "Adjusting the diagram",
        "Step 5: Dig into the factors tidy()",
        "Reading each factor — top_items()",
        "Factor loadings (tidy)",
        "Between-level edges",
        "Variance explained",
        "Step 6: Score observations augment()",
        "Using scores for downstream analysis",
        "Scoring new data (train/test)",
        "Summary: the basic toolkit",
        "Next steps",
        "References"
      ],
      "created": "2026-07-24 10:00:13",
      "modified": "2026-07-24 10:00:13",
      "commits": 1
    },
    {
      "source": "ackwards-ordinal.Rmd",
      "filename": "ackwards-ordinal.html",
      "title": "Ordinal Data: Polychoric Correlations and WLSMV",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Why Pearson underestimates for ordinal items",
        "The polychoric solution",
        "Automatic detection",
        "Seeing the difference",
        "Correlation matrices",
        "Loadings",
        "Between-level edges",
        "WLSMV for ESEM with ordinal items",
        "Practical guidance: when to use polychoric",
        "References"
      ],
      "created": "2026-07-24 10:00:13",
      "modified": "2026-07-24 10:00:13",
      "commits": 1
    },
    {
      "source": "ackwards-girard.Rmd",
      "filename": "ackwards-girard.html",
      "title": "Replicability-Gated Hierarchies: A Recommended Workflow",
      "engine": "knitr::rmarkdown",
      "headings": [
        "The problem: depth is where bass-ackwards analyses go wrong",
        "Three verbs, three different questions",
        "Setup",
        "Step 1: Screen the plausible depth range with suggest_k()",
        "Step 2: Gate the depth on replicability with comparability()",
        "Step 3: Fit the hierarchy to the gated depth",
        "Step 4: Find what perpetuates without differentiating — prune()",
        "How sure are we about these edges? boot_edges()",
        "Step 5: Interpret with the built-in guardrails",
        "Step 6: Validate downstream, out of sample",
        "Common mistakes this workflow prevents",
        "Summary: the workflow in six calls",
        "References"
      ],
      "created": "2026-07-24 10:00:13",
      "modified": "2026-07-24 10:00:13",
      "commits": 1
    },
    {
      "source": "ackwards-forbes2023.Rmd",
      "filename": "ackwards-forbes2023.html",
      "title": "Reproducing Forbes (2023): The AMH Applied Example",
      "engine": "knitr::rmarkdown",
      "headings": [
        "The data",
        "Fitting the 10-level hierarchy",
        "Skip-level structure",
        "The redundancy chase",
        "A chain, worked",
        "Why the direct criterion matters here",
        "The pruned-factor diagram",
        "Fidelity",
        "References"
      ],
      "created": "2026-07-24 10:00:13",
      "modified": "2026-07-24 10:00:13",
      "commits": 1
    },
    {
      "source": "ackwards-forbes.Rmd",
      "filename": "ackwards-forbes.html",
      "title": "The Forbes Extension: Skip-Level Connections and Pruning",
      "engine": "knitr::rmarkdown",
      "headings": [
        "The limitation of adjacent-only edges",
        "Setup",
        "Computing every between-level correlation with pairs = \"all\"",
        "Reading the skip-level edge table",
        "Reading the strongest edge with care",
        "Pruning: identifying redundant factors",
        "Chains of near-identical factors with prune(x, \"redundant\")",
        "The pruned-factor diagram",
        "Inspecting structural similarity with prune(x, \"artifact\")",
        "Structural artifact signals",
        "Tuning the thresholds",
        "Practical interpretation",
        "References"
      ],
      "created": "2026-07-24 10:00:13",
      "modified": "2026-07-24 10:00:13",
      "commits": 1
    }
  ],
  "_score": 3.6532125137753435,
  "_indexed": true,
  "_nocasepkg": "ackwards",
  "_universes": [
    "cran",
    "jmgirard"
  ],
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.1.1",
      "date": "2026-07-24T12:18:02.000Z",
      "distro": "resolute",
      "commit": "65b3be1a257580c9e51ea86712882fb0e117f436",
      "fileid": "https://r2.ropensci.org/07deedc8f1b21310ffa68c0368fb970daeb2025b41a47a097866ab5c7ebada7e",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/30092126535"
    },
    {
      "r": "4.6.1",
      "os": "linux",
      "version": "0.1.1",
      "date": "2026-07-24T12:18:05.000Z",
      "distro": "resolute",
      "commit": "65b3be1a257580c9e51ea86712882fb0e117f436",
      "fileid": "https://r2.ropensci.org/ec17c6f6724a433a8bfcc1e6b23e99e4841efd67b220dea78f6bfe384d33a2c5",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/30092126535"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "0.1.1",
      "date": "2026-07-24T12:17:53.000Z",
      "commit": "65b3be1a257580c9e51ea86712882fb0e117f436",
      "fileid": "https://r2.ropensci.org/6d30d92ef26b8b6bc1af928b5f9ba14c39ea90f92e7c7c7a6c16df92c352e2b2",
      "status": "success",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/30092126535"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.1.1",
      "date": "2026-07-24T12:16:46.000Z",
      "commit": "65b3be1a257580c9e51ea86712882fb0e117f436",
      "fileid": "https://r2.ropensci.org/17a4c888e4657a63a16128513eef33b561f529d81b02662fcae1b368280e0315",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/30092126535"
    }
  ]
}