# Leadership Trait Analysis (LTA)

This vignette walks through Leadership Trait Analysis (LTA) with leadeR, from computing trait scores to classifying leaders into Hermann’s typology.

## Setup

    library(leadeR)
    library(data.table)

    spacyr::spacy_initialize()
    set.seed(02138)

    own_ent <- "United States"
    B <- 1000

    jfk1 <- clean_text(jfk19610120)
    jfk2 <- clean_text(jfk19610925)
    jfk3 <- clean_text(jfk19630610)

## Computing trait scores

### All traits at once

`get_lta()` computes all eight LTA traits in one call and returns a one-row tibble per speech. Set `bootstrap = TRUE` to obtain bootstrap means and delta-method variances for the trait proportions.

    res_lta <- data.table::rbindlist(
      lapply(c(jfk1, jfk2, jfk3), function(x)
        get_lta(own_entity = own_ent, text = x, bootstrap = TRUE, B = B))
    )

    print(res_lta)

The output includes:

- Bootstrap means and variances for raw counts (e.g., `meanP`, `varP`, `meanOP`, `varOP`)
- Trait proportions and their delta-method variances (e.g., `Pp`, `varPp`, `D`, `varD`, `C`, `varC`, `Ta`, `varTa`, `Ss`, `varSs`, `Na`, `varNa`, `B`, `varB`)

The seven trait proportions are:

Abbreviation | Trait
--- | ---
`Pp` | Need for power
`B` | Belief in ability to control events
`C` | Conceptual complexity
`Ss` | Self-confidence
`Ta` | Task orientation
`D` | Distrust
`Na` | Nationalism (in-group bias)

### Individual traits

You can also compute traits one at a time:

    res_nat     <- get_nat(own_entity = own_ent, text = jfk1, bootstrap = TRUE, B = B)
    res_ctrl    <- get_ctrl(own_entity = own_ent, text = jfk1, bootstrap = TRUE, B = B)
    res_power   <- get_power(own_entity = own_ent, text = jfk1, bootstrap = TRUE, B = B)
    res_aff     <- get_aff(own_entity = own_ent, text = jfk1, bootstrap = TRUE, B = B)
    res_dist    <- get_dist(own_entity = own_ent, text = jfk1, bootstrap = TRUE, B = B)
    res_complex <- get_complex(text = jfk1, bootstrap = TRUE, B = B)
    res_conf    <- get_conf(text = jfk1, bootstrap = TRUE, B = B)
    res_task    <- get_task(text = jfk1, bootstrap = TRUE, B = B)

## Leader typology

Using the per-speech LTA traits, `type_lta()` aggregates scores across speeches and classifies the leader into Hermann’s typology.

### Aggregation methods

The way speech-level traits are aggregated matters for classification. `type_lta()` supports two approaches:

Simple mean (`precision_weighted = FALSE`, the default): Takes the arithmetic mean of each trait across speeches. All speeches contribute equally regardless of how precisely each trait was estimated.

Precision-weighted mean (`precision_weighted = TRUE`): Uses inverse-variance weighting via random-effects meta-analysis (`metafor::rma()` with REML). Speeches with lower bootstrap variance (i.e., more precisely estimated traits) receive higher weight. This requires that `get_lta()` was run with `bootstrap = TRUE` so that the variance columns (`varPp`, `varB`, etc.) are available.

    # Simple mean
    type_lta(res_lta)

    # Precision-weighted
    type_lta(res_lta, precision_weighted = TRUE)

### Classification dimensions

`type_lta()` classifies the leader along three dimensions:

Constraint (Respect vs. Challenge): Based on need for power (`Pp`) and belief in control (`B`). A leader who scores below both thresholds respects constraints; otherwise, they challenge constraints.

Openness (Open vs. Closed): Based on conceptual complexity (`C`) and self-confidence (`Ss`). A leader is open to information if complexity exceeds self-confidence, or if both exceed their respective high thresholds.

Motivation toward world (four categories): Based on distrust (`D`) and nationalism (`Na`):

Distrust | Nationalism | Motivation
--- | --- | ---
Low | Low | Cooperative
Low | High | Cooperative (in-group bias)
High | Low | Competitive (out-group focus)
High | High | Competitive

### Leadership styles

Constraint, openness, and task orientation (`Ta`) map to one of eight leadership styles:

Constraint | Openness | Task orientation | Style
--- | --- | --- | ---
Challenge | Closed | Problem | Expansionistic
Challenge | Closed | Relationship | Evangelistic
Challenge | Open | Problem | Incremental
Challenge | Open | Relationship | Charismatic
Respect | Closed | Problem | Directive
Respect | Closed | Relationship | Consultative
Respect | Open | Problem | Reactive
Respect | Open | Relationship | Accommodative

    out_lta <- type_lta(res_lta, precision_weighted = TRUE)
    out_lta[, c("constraint", "openness", "motivation_toward_world", "typology")]

### Custom thresholds

All classification thresholds are configurable. The defaults correspond to the norming sample:

    type_lta(
      res_lta,
      precision_weighted = TRUE,
      need_for_power  = 0.50,
      control         = 0.44,
      complex_high    = 0.56,
      confidence_high = 0.81,
      task            = 0.59,
      distrust        = 0.41,
      ingroup         = 0.42
    )