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.
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 |
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
)