1 Pendahuluan

Berbeda dari analisis sebelumnya yang memuat seluruh 118 relasi sejarah tes psikologi kerja, dokumen ini hanya memuat relasi yang berhubungan langsung dengan Tes Pauli.

Kriteria penyaringan (dua jalur, gabungan):

  1. Jalur silsilah berarah — seluruh ancestors dan descendants dari node Richard Pauli dalam graf berarah.
  2. Jalur kata kunci label — entri yang kolom Jenis Tes-nya secara harfiah menyebut Pauli, Kraepelin, Arbeitskurve/kurva kerja, penjumlahan berkelanjutan, Uchida, Braille, Fehlerkurve, atau psikofisik.

Hasilnya: 28 edge, 23 node, turun dari 118 edge / 140 node pada jaringan penuh.

Batas interpretasi. Node dan edge berasal langsung dari dokumen. Metrik sentralitas, penomoran generasi, dan pengelompokan fase adalah hasil perhitungan — bukan pernyataan yang tertulis dalam dokumen. Dokumen tidak memuat kolom negara/wilayah.

Catatan dua node khusus. Helmut Reuning (1957) dan Blume & Trankle (1955) masuk lewat jalur kata kunci, bukan jalur silsilah. Dokumen mencatat pengaruh metodologis mereka berasal dari Hotelling (PCA) dan Fourier, sementara objek yang mereka analisis adalah Tes Pauli / kurva kerja. Keduanya karena itu tampil sebagai komponen terpisah dalam graf.


2 Persiapan

install.packages(c("tidyverse", "igraph", "tidygraph", "ggraph",
                   "visNetwork", "ggrepel", "knitr", "kableExtra"))
paket <- c("tidyverse", "igraph", "tidygraph", "ggraph",
           "visNetwork", "ggrepel", "knitr", "kableExtra")
belum <- paket[!vapply(paket, requireNamespace, logical(1), quietly = TRUE)]
if (length(belum) > 0) {
  stop("Paket belum terpasang: ", paste(belum, collapse = ", "),
       "\nJalankan: install.packages(c(",
       paste0('"', belum, '"', collapse = ", "), "))", call. = FALSE)
}

suppressPackageStartupMessages({
  library(tidyverse); library(igraph); library(tidygraph)
  library(ggraph);    library(visNetwork); library(ggrepel)
  library(knitr);     library(kableExtra)
})

theme_set(theme_minimal(base_size = 12))

pal_fase <- c(
  "I. Fondasi Psikofisika (1860-1902)"   = "#8a8060",
  "II. Perumusan Pauli (1913-1938)"      = "#b23c17",
  "III. Difusi & Validasi (1950-1975)"   = "#5a6b52",
  "IV. Modernisasi (1976-kini)"          = "#5a6f8a"
)

3 Data

Data ditanam langsung di dalam dokumen — tidak ada file eksternal yang perlu dimuat, sehingga file ini bisa di-knit dari folder mana pun.

edges_raw <- tibble::tribble(
  ~Source,                  ~Target,            ~Label,                          ~Year,       ~Ref,
  "Ernst Weber",            "Gustav Fechner",   "Psikofisik (jnd)",              "1860",      "1",
  "Wilhelm Wundt",          "Emil Kraepelin",   "Continuous Addition Test",      "1880-an",   "3,4,5,6",
  "Wilhelm Wundt",          "Emil Kraepelin",   "Ermuedung und Uebung",          "1890",      "7",
  "Emil Kraepelin",         "A. Oehrn",         "Kraepelinschen Arbeitsversuchs","1896",      "8",
  "Wilhelm Wundt",          "Emil Kraepelin",   "Arbeitskurve",                  "1902",      "11,12,13,14,9,15,7,16",
  "Gustav Fechner",         "Emil Kraepelin",   "Arbeitskurve",                  "1902",      "11,12,13,14,9,15,7,16",
  "Wilhelm Wundt",          "Richard Pauli",    "Dasar Tes Pauli",               "1913-1914", "13,14,15",
  "Gustav Fechner",         "Richard Pauli",    "Dasar Tes Pauli",               "1913-1914", "13,14,15",
  "Oswald Kuelpe",          "Richard Pauli",    "Dasar Tes Pauli",               "1913-1914", "13,14,15",
  "Oswald Kuelpe",          "Richard Pauli",    "Tes Penjumlahan Berkelanjutan", "1921",      "11",
  "Psikiatri E. Kraepelin", "Emil Kraepelin",   "Kurva kerja mental",            "1922",      "24",
  "Ritme Sirkadian",        "Otto Graf",        "Kurva Kerja Fisiologis",        "1934",      "7",
  "Emil Kraepelin",         "Otto Graf",        "Kurva Kerja Fisiologis",        "1934",      "7",
  "Emil Kraepelin",         "Richard Pauli",    "Pauli-Test (P-T)",              "1936",      "8",
  "Emil Kraepelin",         "Richard Pauli",    "TES PAULI (Universaltest)",     "1938",      "11,12,13,14,9,15,25,21,5",
  "Psikologi Gestalt",      "Richard Pauli",    "TES PAULI (Universaltest)",     "1938",      "11,12,13,14,9,15,25,21,5",
  "Richard Pauli",          "G. Weiss",         "Tes Kerja Tunanetra (Braille)", "1950",      "12",
  "Emil Kraepelin",         "Yuzaburo Uchida",  "Uchida-Kraepelin Test",         "1950-an",   "11,12,13,24",
  "Richard Pauli",          "Yuzaburo Uchida",  "Uchida-Kraepelin Test",         "1950-an",   "11,12,13,24",
  "Teori fluktuasi kinerja","Otto Graf",        "Fehlerkurve",                   "1954",      "7",
  "Joseph Fourier",         "Blume & Trankle",  "Analisis Fourier Kurva Kerja",  "1955",      "12",
  "Hotelling (PCA)",        "Helmut Reuning",   "Analisis Faktor Tes Pauli",     "1957",      "11,12,13",
  "Richard Pauli",          "Fischer & Ulich",  "Koordinasi Motorik-Visual",     "1961",      "12",
  "Richard Pauli",          "Wilhelm Arnold",   "Revisi Pauli-Test Ed. 5",       "1975",      "11,12,13,14,27,28",
  "Mieczyslaw Choynowski",  "Wilhelm Arnold",   "Revisi Pauli-Test Ed. 5",       "1975",      "11,12,13,14,27,28",
  "Emil Kraepelin",         "G. Schuhfried",    "ALS Work Performance Test",     "2004",      "24",
  "Richard Pauli",          "G. Schuhfried",    "ALS Work Performance Test",     "2004",      "24",
  "Richard Pauli",          "Adaptasi Digital", "Tes Pauli Online",              "Modern",    "5"
)

edges <- edges_raw %>%
  mutate(
    tahun = suppressWarnings(as.integer(str_extract(Year, "\\d{4}"))),
    tahun = if_else(is.na(tahun), 2015L, tahun),   # "Modern" ditempatkan di 2015 untuk plot
    fase = case_when(
      tahun <= 1902 ~ "I. Fondasi Psikofisika (1860-1902)",
      tahun <= 1938 ~ "II. Perumusan Pauli (1913-1938)",
      tahun <= 1975 ~ "III. Difusi & Validasi (1950-1975)",
      TRUE          ~ "IV. Modernisasi (1976-kini)"
    ),
    fase = factor(fase, levels = names(pal_fase))
  ) %>%
  rename(from = Source, to = Target, label = Label, ref = Ref)

nodes <- tibble(name = sort(unique(c(edges$from, edges$to))))

cat("Edge:", nrow(edges), "| Node:", nrow(nodes), "\n")
## Edge: 28 | Node: 23

4 Timeline Historis Tes Pauli

4.1 Garis waktu peristiwa

peristiwa <- edges %>%
  distinct(label, Year, tahun, fase, .keep_all = TRUE) %>%
  group_by(label, Year, tahun, fase) %>%
  summarise(pelaku = paste(unique(to), collapse = ", "),
            dari   = paste(unique(from), collapse = " + "),
            .groups = "drop") %>%
  arrange(tahun) %>%
  mutate(
    judul = paste0(label, "  (", Year, ")"),
    judul = fct_reorder(judul, tahun, .desc = TRUE),
    sisi  = if_else(row_number() %% 2 == 0, 1, -1)
  )

ggplot(peristiwa, aes(x = tahun, y = judul, colour = fase)) +
  geom_segment(aes(x = 1855, xend = tahun, yend = judul),
               linetype = "dotted", alpha = 0.45, linewidth = 0.4) +
  geom_point(size = 4.2) +
  geom_text(aes(label = pelaku), hjust = -0.12, size = 3.1,
            colour = "grey25", show.legend = FALSE) +
  scale_colour_manual(values = pal_fase) +
  scale_x_continuous(
    breaks = c(1860, 1880, 1900, 1920, 1938, 1960, 1980, 2004, 2015),
    labels = c("1860","1880","1900","1920","1938","1960","1980","2004","kini"),
    limits = c(1855, 2050)
  ) +
  geom_vline(xintercept = 1938, linetype = "dashed",
             colour = "#b23c17", linewidth = 0.6) +
  labs(
    title    = "Timeline historis Tes Pauli",
    subtitle = "Garis merah = 1938, tahun Tes Pauli (Universaltest) diformalkan",
    x = "Tahun", y = NULL, colour = "Fase"
  ) +
  theme(
    legend.position = "bottom",
    panel.grid.major.y = element_blank(),
    axis.text.y = element_text(size = 8.6)
  )

4.2 Tabel kronologi

peristiwa %>%
  transmute(
    Tahun   = Year,
    Fase    = str_remove(as.character(fase), "^[IV]+\\. "),
    Peristiwa = label,
    Pelaku  = pelaku,
    `Dipengaruhi oleh` = dari
  ) %>%
  kable(caption = "Kronologi 24 peristiwa dalam silsilah Tes Pauli") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed"),
                full_width = TRUE) %>%
  column_spec(3, bold = TRUE)
Kronologi 24 peristiwa dalam silsilah Tes Pauli
Tahun Fase Peristiwa Pelaku Dipengaruhi oleh
1860 Fondasi Psikofisika (1860-1902) Psikofisik (jnd) Gustav Fechner Ernst Weber
1880-an Fondasi Psikofisika (1860-1902) Continuous Addition Test Emil Kraepelin Wilhelm Wundt
1890 Fondasi Psikofisika (1860-1902) Ermuedung und Uebung Emil Kraepelin Wilhelm Wundt
1896 Fondasi Psikofisika (1860-1902) Kraepelinschen Arbeitsversuchs A. Oehrn Emil Kraepelin
1902 Fondasi Psikofisika (1860-1902) Arbeitskurve Emil Kraepelin Wilhelm Wundt
1913-1914 Perumusan Pauli (1913-1938) Dasar Tes Pauli Richard Pauli Wilhelm Wundt
1921 Perumusan Pauli (1913-1938) Tes Penjumlahan Berkelanjutan Richard Pauli Oswald Kuelpe
1922 Perumusan Pauli (1913-1938) Kurva kerja mental Emil Kraepelin Psikiatri E. Kraepelin
1934 Perumusan Pauli (1913-1938) Kurva Kerja Fisiologis Otto Graf Ritme Sirkadian
1936 Perumusan Pauli (1913-1938) Pauli-Test (P-T) Richard Pauli Emil Kraepelin
1938 Perumusan Pauli (1913-1938) TES PAULI (Universaltest) Richard Pauli Emil Kraepelin
1950 Difusi & Validasi (1950-1975) Tes Kerja Tunanetra (Braille) G. Weiss Richard Pauli
1950-an Difusi & Validasi (1950-1975) Uchida-Kraepelin Test Yuzaburo Uchida Emil Kraepelin
1954 Difusi & Validasi (1950-1975) Fehlerkurve Otto Graf Teori fluktuasi kinerja
1955 Difusi & Validasi (1950-1975) Analisis Fourier Kurva Kerja Blume & Trankle Joseph Fourier
1957 Difusi & Validasi (1950-1975) Analisis Faktor Tes Pauli Helmut Reuning Hotelling (PCA)
1961 Difusi & Validasi (1950-1975) Koordinasi Motorik-Visual Fischer & Ulich Richard Pauli
1975 Difusi & Validasi (1950-1975) Revisi Pauli-Test Ed. 5 Wilhelm Arnold Richard Pauli
2004 Modernisasi (1976-kini) ALS Work Performance Test G. Schuhfried Emil Kraepelin
Modern Modernisasi (1976-kini) Tes Pauli Online Adaptasi Digital Richard Pauli

4.3 Kepadatan peristiwa per dekade

edges %>%
  mutate(dekade = (tahun %/% 10) * 10) %>%
  count(dekade, fase) %>%
  ggplot(aes(x = dekade, y = n, fill = fase)) +
  geom_col(width = 8) +
  scale_fill_manual(values = pal_fase) +
  scale_x_continuous(breaks = seq(1860, 2020, 20)) +
  labs(title = "Kepadatan relasi pengaruh per dekade",
       x = "Dekade", y = "Jumlah relasi", fill = "Fase") +
  theme(legend.position = "bottom")


5 Social Network Analysis

5.1 Konstruksi graf

g <- tbl_graph(nodes = nodes, edges = edges, directed = TRUE)

# Generasi = jarak terjauh dari node sumber mana pun (untuk tata letak hierarkis)
akar <- V(g)$name[degree(g, mode = "in") == 0]
jarak <- distances(g, v = akar, mode = "out")
jarak[is.infinite(jarak)] <- NA

g <- g %>%
  activate(nodes) %>%
  mutate(
    generasi   = apply(jarak, 2, function(x) if (all(is.na(x))) 0 else max(x, na.rm = TRUE)),
    deg_all    = centrality_degree(mode = "all"),
    deg_out    = centrality_degree(mode = "out"),
    deg_in     = centrality_degree(mode = "in"),
    betweennes = centrality_betweenness(directed = TRUE, normalized = TRUE),
    pagerank   = centrality_pagerank(),
    peran = case_when(
      name == "Richard Pauli"   ~ "Poros",
      deg_in == 0 & deg_out > 0 ~ "Sumber",
      deg_out == 0 & deg_in > 0 ~ "Turunan",
      TRUE                      ~ "Broker"
    )
  )

tibble(
  Metrik = c("Node", "Edge", "Densitas", "Komponen lemah",
             "Diameter", "Rata-rata derajat"),
  Nilai = c(gorder(g), gsize(g), round(edge_density(g), 4),
            components(g, mode = "weak")$no,
            diameter(g, directed = FALSE),
            round(mean(degree(g, mode = "all")), 2))
) %>% kable(caption = "Struktur jaringan inti Pauli") %>%
  kable_styling(full_width = FALSE)
Struktur jaringan inti Pauli
Metrik Nilai
Node 23.0000
Edge 28.0000
Densitas 0.0553
Komponen lemah 3.0000
Diameter 5.0000
Rata-rata derajat 2.4300

5.2 Sentralitas

sent <- g %>% activate(nodes) %>% as_tibble()

sent %>%
  arrange(desc(deg_all), desc(betweennes)) %>%
  transmute(
    Aktor = name, Generasi = generasi, Degree = deg_all,
    `Out` = deg_out, `In` = deg_in,
    Betweenness = round(betweennes, 4),
    PageRank = round(pagerank, 4), Peran = peran
  ) %>%
  kable(caption = "Sentralitas seluruh 23 aktor dalam jaringan inti") %>%
  kable_styling(bootstrap_options = c("striped", "hover"),
                full_width = FALSE) %>%
  row_spec(1:2, bold = TRUE, background = "#fbe9e3")   # dua baris teratas
Sentralitas seluruh 23 aktor dalam jaringan inti
Aktor Generasi Degree Out In Betweenness PageRank Peran
Richard Pauli 2 13 6 7 0.0747 0.1163 Poros
Emil Kraepelin 2 11 6 5 0.0400 0.0823 Broker
Wilhelm Wundt 0 4 4 0 0.0000 0.0251 Sumber
Gustav Fechner 1 3 2 1 0.0216 0.0465 Broker
Otto Graf 3 3 0 3 0.0000 0.0795 Turunan
G. Schuhfried 3 2 0 2 0.0000 0.0533 Turunan
Oswald Kuelpe 0 2 2 0 0.0000 0.0251 Sumber
Wilhelm Arnold 3 2 0 2 0.0000 0.0630 Turunan
Yuzaburo Uchida 3 2 0 2 0.0000 0.0533 Turunan
A. Oehrn 3 1 0 1 0.0000 0.0368 Turunan
Adaptasi Digital 3 1 0 1 0.0000 0.0416 Turunan
Blume & Trankle 1 1 0 1 0.0000 0.0465 Turunan
Ernst Weber 0 1 1 0 0.0000 0.0251 Sumber
Fischer & Ulich 3 1 0 1 0.0000 0.0416 Turunan
G. Weiss 3 1 0 1 0.0000 0.0416 Turunan
Helmut Reuning 1 1 0 1 0.0000 0.0465 Turunan
Hotelling (PCA) 0 1 1 0 0.0000 0.0251 Sumber
Joseph Fourier 0 1 1 0 0.0000 0.0251 Sumber
Mieczyslaw Choynowski 0 1 1 0 0.0000 0.0251 Sumber
Psikiatri E. Kraepelin 0 1 1 0 0.0000 0.0251 Sumber
Psikologi Gestalt 0 1 1 0 0.0000 0.0251 Sumber
Ritme Sirkadian 0 1 1 0 0.0000 0.0251 Sumber
Teori fluktuasi kinerja 0 1 1 0 0.0000 0.0251 Sumber
sent %>%
  filter(deg_all > 0) %>%
  select(name, deg_out, deg_in) %>%
  pivot_longer(-name, names_to = "arah", values_to = "n") %>%
  mutate(arah = recode(arah, deg_out = "Memengaruhi", deg_in = "Dipengaruhi"),
         name = fct_reorder(name, n, sum)) %>%
  ggplot(aes(n, name, fill = arah)) +
  geom_col(width = 0.68) +
  scale_fill_manual(values = c(Memengaruhi = "#b23c17", Dipengaruhi = "#5a6f8a")) +
  labs(title = "Aliran pengaruh masuk dan keluar",
       subtitle = "Hanya Richard Pauli dan Emil Kraepelin yang punya kedua arah dalam porsi besar",
       x = "Jumlah relasi", y = NULL, fill = NULL) +
  theme(legend.position = "top")

5.3 Peta jaringan hierarkis

ggraph(g, layout = "sugiyama") +
  geom_edge_fan(
    aes(colour = fase, label = Year),
    arrow = arrow(length = unit(2.4, "mm"), type = "closed"),
    start_cap = circle(7, "mm"), end_cap = circle(7, "mm"),
    label_size = 2.5, angle_calc = "along", label_dodge = unit(2, "mm"),
    alpha = 0.85, width = 0.6
  ) +
  geom_node_point(aes(size = deg_all, colour = peran), alpha = 0.92) +
  geom_node_text(aes(label = name), repel = TRUE, size = 3.4,
                 fontface = "bold", seed = params$seed, max.overlaps = 40) +
  scale_edge_colour_manual(values = pal_fase) +
  scale_colour_manual(values = c(
    "Poros"   = "#b23c17", "Broker" = "#d98324",
    "Sumber"  = "#8a8060", "Turunan" = "#5a6b52"
  )) +
  scale_size_continuous(range = c(3, 15)) +
  labs(
    title    = "Jaringan inti Tes Pauli",
    subtitle = "Tata letak hierarkis Sugiyama; warna panah = fase historis",
    colour = "Peran", size = "Degree", edge_colour = "Fase"
  ) +
  theme_graph(base_family = "sans") +
  theme(legend.position = "right")

5.4 Struktur generasi

ggraph(g, layout = "fr") +
  geom_edge_fan(arrow = arrow(length = unit(2, "mm"), type = "closed"),
                end_cap = circle(6, "mm"), colour = "grey55", alpha = 0.7) +
  geom_node_point(aes(colour = factor(generasi), size = deg_all)) +
  geom_node_text(aes(label = name), repel = TRUE, size = 3.2,
                 seed = params$seed, max.overlaps = 40) +
  scale_colour_viridis_d(option = "inferno", end = 0.85, direction = -1) +
  scale_size_continuous(range = c(3, 14)) +
  labs(title = "Kedalaman generasi dari node sumber",
       colour = "Generasi", size = "Degree") +
  theme_graph(base_family = "sans")

5.5 Jaringan interaktif

vis_nodes <- sent %>%
  transmute(
    id = name, label = name, value = pmax(deg_all, 1),
    group = peran, level = generasi,
    title = paste0("<b>", name, "</b><br>Degree: ", deg_all,
                   " (out ", deg_out, " / in ", deg_in, ")",
                   "<br>Generasi: ", generasi,
                   "<br>Peran: ", peran)
  )

vis_edges <- g %>%
  activate(edges) %>%
  mutate(from_name = .N()$name[from], to_name = .N()$name[to]) %>%
  as_tibble() %>%
  transmute(from = from_name, to = to_name,
            title = paste0(label, " (", Year, ")"),
            label = Year, arrows = "to")

visNetwork(vis_nodes, vis_edges,
           main = "Jaringan inti Tes Pauli — interaktif",
           height = "720px", width = "100%") %>%
  visHierarchicalLayout(direction = "LR", levelSeparation = 220,
                        sortMethod = "directed") %>%
  visOptions(highlightNearest = list(enabled = TRUE, degree = 2, hover = TRUE),
             nodesIdSelection = TRUE) %>%
  visGroups(groupname = "Poros",   color = "#b23c17") %>%
  visGroups(groupname = "Broker",  color = "#d98324") %>%
  visGroups(groupname = "Sumber",  color = "#8a8060") %>%
  visGroups(groupname = "Turunan", color = "#5a6b52") %>%
  visLegend(useGroups = TRUE, main = "Peran")

5.6 Ego-network Richard Pauli

P <- "Richard Pauli"
hulu  <- setdiff(names(subcomponent(g, which(V(g)$name == P), mode = "in")), P)
hilir <- setdiff(names(subcomponent(g, which(V(g)$name == P), mode = "out")), P)

cat("HULU  (", length(hulu), "):", paste(hulu, collapse = ", "), "\n\n")
## HULU  ( 7 ): Emil Kraepelin, Gustav Fechner, Oswald Kuelpe, Psikologi Gestalt, Wilhelm Wundt, Psikiatri E. Kraepelin, Ernst Weber
cat("HILIR (", length(hilir), "):", paste(hilir, collapse = ", "), "\n")
## HILIR ( 6 ): Adaptasi Digital, Fischer & Ulich, G. Schuhfried, G. Weiss, Wilhelm Arnold, Yuzaburo Uchida
g %>%
  activate(nodes) %>%
  mutate(posisi = case_when(name == P ~ "Poros",
                            name %in% hulu ~ "Hulu",
                            name %in% hilir ~ "Hilir",
                            TRUE ~ NA_character_)) %>%
  filter(!is.na(posisi)) %>%
  ggraph(layout = "sugiyama") +
  geom_edge_fan(aes(label = Year),
                arrow = arrow(length = unit(2.4, "mm"), type = "closed"),
                start_cap = circle(7, "mm"), end_cap = circle(7, "mm"),
                label_size = 2.6, angle_calc = "along",
                colour = "grey45", alpha = 0.85) +
  geom_node_point(aes(colour = posisi, size = deg_all)) +
  geom_node_text(aes(label = name), repel = TRUE, size = 3.5,
                 fontface = "bold", seed = params$seed) +
  scale_colour_manual(values = c(Poros = "#b23c17",
                                 Hulu = "#8a8060", Hilir = "#5a6b52")) +
  scale_size_continuous(range = c(4, 15)) +
  labs(title = "Ego-network Richard Pauli", colour = NULL, size = "Degree") +
  theme_graph(base_family = "sans")


6 Ringkasan Temuan

sent %>% slice_max(deg_all, n = 3) %>%
  select(name, deg_all, deg_out, deg_in, betweennes) %>%
  mutate(betweennes = round(betweennes, 4)) %>%
  kable(col.names = c("Aktor", "Degree", "Out", "In", "Betweenness"),
        caption = "Tiga aktor paling sentral") %>%
  kable_styling(full_width = FALSE)
Tiga aktor paling sentral
Aktor Degree Out In Betweenness
Richard Pauli 13 6 7 0.0747
Emil Kraepelin 11 6 5 0.0400
Wilhelm Wundt 4 4 0 0.0000

Setelah jaringan dipangkas hanya pada relasi yang berhubungan dengan Tes Pauli, empat pola muncul:

  1. Struktur jam pasir. Jaringan menyempit di dua titik — Kraepelin lalu Pauli — sebelum melebar kembali ke enam turunan. Semua jalur dari fondasi psikofisika abad ke-19 menuju instrumen modern harus melewati dua node ini.

  2. Pauli adalah satu-satunya poros dua arah. Ia menerima pengaruh dari lima sumber dan meneruskannya ke enam turunan. Kraepelin punya pola serupa tetapi dengan jangkauan hilir lebih sempit.

  3. 1938 adalah titik balik, bukan titik awal. Fase I (1860–1902) membangun fondasi metode, Fase II (1913–1938) merumuskan instrumen, dan seluruh 12 relasi setelahnya adalah adaptasi — bukan penciptaan ulang.

  4. Arah perkembangan pasca-1950 adalah spesialisasi, bukan penggantian. Weiss mengadaptasi ke Braille, Uchida ke konteks industri Jepang, Reuning memvalidasi secara statistik, Arnold menstandarkan, Schuhfried mendigitalkan. Tidak ada satu pun yang menggantikan prinsip dasarnya.


7 Ekspor

dir.create("output", showWarnings = FALSE)
readr::write_csv(edges, "output/edges_pauli_core.csv")
readr::write_csv(sent,  "output/node_metrics_pauli_core.csv")
igraph::write_graph(g, "output/pauli_core.graphml", format = "graphml")
sessionInfo()
## R version 4.5.2 (2025-10-31 ucrt)
## Platform: x86_64-w64-mingw32/x64
## Running under: Windows 11 x64 (build 26200)
## 
## Matrix products: default
##   LAPACK version 3.12.1
## 
## locale:
## [1] LC_COLLATE=English_Indonesia.utf8  LC_CTYPE=English_Indonesia.utf8   
## [3] LC_MONETARY=English_Indonesia.utf8 LC_NUMERIC=C                      
## [5] LC_TIME=English_Indonesia.utf8    
## 
## time zone: Asia/Jakarta
## tzcode source: internal
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
##  [1] kableExtra_1.4.0 knitr_1.50       ggrepel_0.9.6    visNetwork_2.1.4
##  [5] ggraph_2.2.2     tidygraph_1.3.1  igraph_2.2.0     lubridate_1.9.4 
##  [9] forcats_1.0.0    stringr_1.5.1    dplyr_1.1.4      purrr_1.1.0     
## [13] readr_2.1.5      tidyr_1.3.1      tibble_3.3.0     ggplot2_4.0.2   
## [17] tidyverse_2.0.0 
## 
## loaded via a namespace (and not attached):
##  [1] gtable_0.3.6       xfun_0.52          bslib_0.9.0        htmlwidgets_1.6.4 
##  [5] tzdb_0.5.0         vctrs_0.6.5        tools_4.5.2        generics_0.1.4    
##  [9] pkgconfig_2.0.3    RColorBrewer_1.1-3 S7_0.2.1           lifecycle_1.0.4   
## [13] compiler_4.5.2     farver_2.1.2       textshaping_1.0.3  ggforce_0.5.0     
## [17] graphlayouts_1.2.2 htmltools_0.5.8.1  sass_0.4.10        yaml_2.3.10       
## [21] pillar_1.11.0      jquerylib_0.1.4    MASS_7.3-65        cachem_1.1.0      
## [25] viridis_0.6.5      tidyselect_1.2.1   digest_0.6.37      stringi_1.8.7     
## [29] labeling_0.4.3     polyclip_1.10-7    fastmap_1.2.0      grid_4.5.2        
## [33] cli_3.6.5          magrittr_2.0.3     withr_3.0.2        scales_1.4.0      
## [37] timechange_0.3.0   rmarkdown_2.29     gridExtra_2.3      hms_1.1.3         
## [41] memoise_2.0.1      evaluate_1.0.5     viridisLite_0.4.2  rlang_1.1.6       
## [45] Rcpp_1.1.0         glue_1.8.0         tweenr_2.0.3       xml2_1.4.0        
## [49] svglite_2.2.1      rstudioapi_0.17.1  jsonlite_2.0.0     R6_2.6.1          
## [53] systemfonts_1.2.3

Sumber data: Sejarah dan Evolusi Tes Psikologi Kerja – Table 1.pdf, halaman 1–2. Sumber pendukung: pauli_1408_compressed.pdf hal. 37–38; bookpauli.pdf hal. 1; Der+Pauli-Test.pdf (daftar pustaka).