{
  "_id": "6ac60df7f511ae58c09a52ee",
  "Package": "ackwards",
  "Title": "Bass-Ackwards Hierarchical Structural Analysis",
  "Version": "0.2.0.9000",
  "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. It\nthen describes the hierarchy through the correlations between\nthe factor scores of different levels. It computes them with\nlinear algebra from the scoring weights and the correlation\nmatrix the fit uses, so they are exact for that matrix. Waller\n(2007) <doi:10.1016/j.jrp.2006.08.005> showed, for principal\ncomponents, that these correlations follow from the correlation\nmatrix alone. Includes the Forbes (2023)\n<doi:10.1037/met0000546> extension for redundancy pruning and\nall-levels cross-correlations.",
  "License": "MIT + file LICENSE",
  "Encoding": "UTF-8",
  "Roxygen": "list(markdown = TRUE)",
  "LazyData": "true",
  "Config/testthat/edition": "3",
  "Config/testthat/parallel": "true",
  "Config/testthat/start-first": "suggest_k, boot_edges, oblique, esem,\nlayout, missing, 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.1.0",
  "Repository": "https://jmgirard.r-universe.dev",
  "Date/Publication": "2026-10-06 18:51:49 UTC",
  "RemoteUrl": "https://github.com/jmgirard/ackwards",
  "RemoteRef": "HEAD",
  "RemoteSha": "51368d3c5ac1ffb8d1cbb00e53d053f92ae7f8ab",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-10-07 08:32:34 UTC",
    "User": "root"
  },
  "Author": "Jeffrey M. Girard [aut, cre] (ORCID:\n<https://orcid.org/0000-0002-7359-3746>),\nMiriam K. Forbes [cph] (Author of the bundled AMH correlation matrix\n(data/forbes2023.rda), CC-BY 4.0)",
  "Maintainer": "Jeffrey M. Girard <me@jmgirard.com>",
  "_user": "jmgirard",
  "_type": "src",
  "_file": "ackwards_0.2.0.9000.tar.gz",
  "_fileid": "https://r2.ropensci.org/f767befaf345ec885c6282641a4ac2dd8786db5976f6dba83f19500cc9c04c89",
  "_filesize": 3956049,
  "_sha256": "f767befaf345ec885c6282641a4ac2dd8786db5976f6dba83f19500cc9c04c89",
  "_expires": "2027-01-15T09:16:37.000Z",
  "_created": "2026-10-07T08:32:34.000Z",
  "_published": "2026-10-07T09:16:39.269Z",
  "_buildurl": "https://github.com/r-universe/jmgirard/actions/runs/37593477254",
  "_status": "success",
  "_host": "GitHub-Actions",
  "_jobs": [
    {
      "job": 112703788369,
      "time": 274,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "11470388540"
    },
    {
      "job": 112703788364,
      "time": 348,
      "config": "linux-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11469779795"
    },
    {
      "job": 112703788525,
      "time": 167,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "11471756619"
    },
    {
      "job": 112703788473,
      "time": 288,
      "config": "macos-release-arm64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11471453072"
    },
    {
      "job": 112700993148,
      "time": 244,
      "config": "source",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11470031893"
    },
    {
      "job": 112703788251,
      "time": 111,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "11469948633"
    },
    {
      "job": 112703788298,
      "time": 348,
      "config": "windows-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "11469757882"
    },
    {
      "job": 112703788396,
      "time": 322,
      "config": "windows-oldrel-x86_64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "11470915417"
    },
    {
      "job": 112703788332,
      "time": 258,
      "config": "windows-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11470711479"
    }
  ],
  "_upstream": "https://github.com/jmgirard/ackwards",
  "_commit": {
    "id": "51368d3c5ac1ffb8d1cbb00e53d053f92ae7f8ab",
    "author": "Jeffrey Girard <me@jmgirard.com>",
    "committer": "Jeffrey Girard <me@jmgirard.com>",
    "message": "review M098: done\n",
    "time": 1791312709
  },
  "_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": "GPArotation",
      "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": "jmgirard",
  "_selfowned": true,
  "_usedby": 0,
  "_updates": [
    {
      "week": "2026-26",
      "n": 61
    },
    {
      "week": "2026-27",
      "n": 143
    },
    {
      "week": "2026-28",
      "n": 26
    },
    {
      "week": "2026-29",
      "n": 59
    },
    {
      "week": "2026-30",
      "n": 44
    },
    {
      "week": "2026-31",
      "n": 27
    },
    {
      "week": "2026-37",
      "n": 2
    },
    {
      "week": "2026-38",
      "n": 13
    },
    {
      "week": "2026-39",
      "n": 1
    },
    {
      "week": "2026-40",
      "n": 26
    },
    {
      "week": "2026-41",
      "n": 4
    }
  ],
  "_tags": [
    {
      "name": "v0.1.0",
      "date": "2026-07-05"
    },
    {
      "name": "v0.1.1",
      "date": "2026-07-17"
    },
    {
      "name": "v0.2.0",
      "date": "2026-07-27"
    }
  ],
  "_stars": 8,
  "_contributors": [
    {
      "user": "jmgirard",
      "count": 453,
      "uuid": 6829033
    }
  ],
  "_userbio": {
    "uuid": 6829033,
    "type": "user",
    "name": "Jeffrey Girard",
    "followers": 96,
    "description": "Associate Professor of Psychology"
  },
  "_downloads": {
    "count": 489,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/ackwards"
  },
  "_devurl": "https://github.com/jmgirard/ackwards",
  "_pkgdown": "https://jmgirard.github.io/ackwards/",
  "_searchresults": 23,
  "_rbuild": "4.6.1",
  "_assets": [
    "extra/ackwards.html",
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/manual.pdf",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/readme.html",
    "extra/readme.md",
    "LICENSE"
  ],
  "_homeurl": "https://github.com/jmgirard/ackwards",
  "_realowner": "jmgirard",
  "_cranurl": true,
  "_releases": [
    {
      "version": "0.1.1",
      "date": "2026-07-24"
    },
    {
      "version": "0.2.0",
      "date": "2026-07-27"
    }
  ],
  "_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/jmgirard/ackwards/raw/HEAD/man/figures/logo.png",
  "_readme": "https://github.com/jmgirard/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 does not)",
        "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",
        "Orthogonal or oblique rotation",
        "Varimax and oblimin on the same data",
        "How to decide",
        "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-06-27 22:19:42",
      "modified": "2026-10-02 04:25:26",
      "commits": 31
    },
    {
      "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 on the PC basis",
        "PA-FA: parallel analysis on the 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 do not",
        "A worked recommendation for the BFI",
        "References"
      ],
      "created": "2026-06-28 21:35:30",
      "modified": "2026-09-16 23:00:57",
      "commits": 19
    },
    {
      "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",
        "node_width / node_height: size individual boxes to fit a label",
        "label_template(): generate the scaffold",
        "Item content",
        "show_items: list the items under the deepest-level factors",
        "Structural simplifications",
        "primary_only = TRUE: show only primary-parent edges",
        "order: arrange the deepest level by hand",
        "drop_pruned + show_secondary: the pruned view and its hidden correlations",
        "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-06-28 14:36:35",
      "modified": "2026-09-16 23:00:57",
      "commits": 17
    },
    {
      "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-06-29 04:10:09",
      "modified": "2026-09-16 19:28:59",
      "commits": 10
    },
    {
      "source": "ackwards-intro.Rmd",
      "filename": "ackwards-intro.html",
      "title": "Introduction to Bass-Ackwards Analysis",
      "engine": "knitr::rmarkdown",
      "headings": [
        "The problem: which 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 with 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-06-27 22:01:57",
      "modified": "2026-10-01 17:59:35",
      "commits": 38
    },
    {
      "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-06-27 22:19:42",
      "modified": "2026-10-01 17:59:35",
      "commits": 18
    },
    {
      "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, with 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-02 04:06:52",
      "modified": "2026-10-01 17:59:35",
      "commits": 12
    },
    {
      "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-16 21:25:34",
      "modified": "2026-09-16 23:00:57",
      "commits": 4
    },
    {
      "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\")",
        "The near-redundant band",
        "Structural artifact signals",
        "Tuning the thresholds",
        "Practical interpretation",
        "References"
      ],
      "created": "2026-06-27 22:19:42",
      "modified": "2026-10-01 17:59:35",
      "commits": 30
    }
  ],
  "_score": 6.959423021943104,
  "_indexed": true,
  "_nocasepkg": "ackwards",
  "_universes": [
    "jmgirard"
  ],
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.2.0.9000",
      "date": "2026-10-07T08:41:47.000Z",
      "distro": "resolute",
      "commit": "51368d3c5ac1ffb8d1cbb00e53d053f92ae7f8ab",
      "fileid": "https://r2.ropensci.org/c6f72ff00e99751e175d2a619372395256a9f8efa5a77eb0ffa51365f7b19326",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/jmgirard/actions/runs/37593477254"
    },
    {
      "r": "4.6.1",
      "os": "linux",
      "version": "0.2.0.9000",
      "date": "2026-10-07T08:41:52.000Z",
      "distro": "resolute",
      "commit": "51368d3c5ac1ffb8d1cbb00e53d053f92ae7f8ab",
      "fileid": "https://r2.ropensci.org/d31fdfe6e895f716746dd293accb3f431bf418f65c6631043fa833823d2e57b2",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/jmgirard/actions/runs/37593477254"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.2.0.9000",
      "date": "2026-10-07T09:02:03.000Z",
      "commit": "51368d3c5ac1ffb8d1cbb00e53d053f92ae7f8ab",
      "fileid": "https://r2.ropensci.org/7000ba64f3d2585392a7beef53f37e82cb09a24722014bf7c07f28db09c61a7d",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/jmgirard/actions/runs/37593477254"
    },
    {
      "r": "4.6.1",
      "os": "mac",
      "version": "0.2.0.9000",
      "date": "2026-10-07T09:05:36.000Z",
      "commit": "51368d3c5ac1ffb8d1cbb00e53d053f92ae7f8ab",
      "fileid": "https://r2.ropensci.org/77d6e31b538539ada13ccd11db75908fdb61c36deadce4a302f93c3aa8e81f4e",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/jmgirard/actions/runs/37593477254"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "0.2.0.9000",
      "date": "2026-10-07T08:41:54.000Z",
      "commit": "51368d3c5ac1ffb8d1cbb00e53d053f92ae7f8ab",
      "fileid": "https://r2.ropensci.org/5aa25f9e2c8256307bd072017808d02c5eead6e23ae7fbeb530e8f368011a6b9",
      "status": "success",
      "buildurl": "https://github.com/r-universe/jmgirard/actions/runs/37593477254"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.2.0.9000",
      "date": "2026-10-07T08:34:46.000Z",
      "commit": "51368d3c5ac1ffb8d1cbb00e53d053f92ae7f8ab",
      "fileid": "https://r2.ropensci.org/b5c78fb0a61cd4251dc59cd39492d17734aefe1d62b4a05e1564652e46c54591",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/jmgirard/actions/runs/37593477254"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "0.2.0.9000",
      "date": "2026-10-07T08:34:21.000Z",
      "commit": "51368d3c5ac1ffb8d1cbb00e53d053f92ae7f8ab",
      "fileid": "https://r2.ropensci.org/c80bf5a44afb9cc45afd5afd162c9b02456cb07a934f860be32201c480d3d402",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/jmgirard/actions/runs/37593477254"
    },
    {
      "r": "4.6.1",
      "os": "win",
      "version": "0.2.0.9000",
      "date": "2026-10-07T08:34:15.000Z",
      "commit": "51368d3c5ac1ffb8d1cbb00e53d053f92ae7f8ab",
      "fileid": "https://r2.ropensci.org/6919b20f665e124e7f84336ca88e7baf7e12956d61d46148a095d312402c3ae6",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/jmgirard/actions/runs/37593477254"
    }
  ]
}