Here, we look at the difference in the distributions across languages, with three measures: mean and variance in original (200) dimensionality.


Read in doctag indices, docvecs, and metadata, and merge

doctag_indices <- read_feather("../../../data/processed/models/all_model/doctag_indices_all_model.feather") 
docvecs <- read_feather("../../../data/processed/models/all_model/docvecs_all_model.feather") %>%
  as.data.frame() %>%
  mutate(offset = 0:(n()-1)) %>%
  select(offset, everything())

metadata <- read_csv("../../../data/raw/merged_metadata.csv") 
metadata_clean <- metadata %>%
  mutate_if(is.character, as.factor)  %>%
  mutate(essay_id = as.character(essay_id))

#Merge all data sources together
d <- doctag_indices %>%
  left_join(metadata_clean) %>%
  left_join(docvecs) %>%
  nest(-1:-10, .key = "doc_vector") %>%
  select(-doc_count, -offset, -test_center_country_code) 

0.1 Centroids

0.1.1 Distances

Pairwise distances between languages

centroids_prompt <- d %>%
  mutate(L1_prompt = paste0(L1_code, "_", prompt_id )) %>%
  split(.$L1_prompt) %>% 
  map_df(get_group_centroid, "L1_prompt") %>%
  separate(L1_prompt, c("L1_code", "prompt_id"), sep = "_")

prompt_mean_centroids <- centroids_prompt %>%
  split(.$L1_code) %>% 
  map_df(~colMeans(.[,-1:-2])) %>%
  t() %>% 
  as.data.frame() %>%
  rownames_to_column("L1_code")

prompt_mean_centroids_mat = as.matrix(prompt_mean_centroids[,-1])
rownames(prompt_mean_centroids_mat) = prompt_mean_centroids[,1]

dist_matrix <- dist(prompt_mean_centroids_mat)
dist_matrix_kable <- as.matrix(dist_matrix)
dist_matrix_kable[upper.tri(dist_matrix_kable)] <- NA
kable(as.data.frame(dist_matrix_kable), digits = 2)
ARA BEN BUL CHI DUT ENG FAS FRE GER GRE GUJ HIN IBO IND ITA JPN KAN KOR MAL MAR NEP PAN POL POR RUM RUS SPA TAM TEL TGL THA TUR URD VIE YOR
ARA 0.00 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
BEN 1.89 0.00 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
BUL 1.29 2.06 0.00 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
CHI 1.61 2.03 1.45 0.00 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
DUT 2.05 2.30 1.45 1.97 0.00 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
ENG 1.65 1.05 1.66 1.90 1.74 0.00 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
FAS 1.23 1.89 1.41 1.44 2.10 1.83 0.00 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
FRE 1.70 2.14 1.16 1.61 1.32 1.80 1.56 0.00 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
GER 2.05 2.28 1.38 1.94 0.96 1.83 1.98 1.25 0.00 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
GRE 1.73 1.86 1.27 1.69 1.74 1.57 1.43 1.29 1.61 0.00 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
GUJ 1.65 1.20 2.10 2.15 2.51 1.51 1.88 2.31 2.44 2.17 0.00 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
HIN 2.02 0.75 2.20 2.33 2.39 0.98 2.14 2.37 2.39 2.03 1.21 0.00 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
IBO 1.78 1.42 1.94 2.16 2.04 0.99 2.07 2.07 2.19 1.90 1.78 1.39 0.00 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
IND 1.49 2.04 1.41 1.20 1.91 1.83 1.48 1.60 1.90 1.72 2.05 2.32 2.06 0.00 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
ITA 1.82 2.34 1.19 1.80 1.54 2.12 1.67 1.04 1.40 1.58 2.47 2.59 2.38 1.75 0.00 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
JPN 1.84 2.45 1.66 1.36 2.16 2.30 1.68 1.78 2.07 2.05 2.49 2.75 2.39 1.38 1.77 0.00 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
KAN 2.21 1.01 2.28 2.43 2.36 1.02 2.33 2.43 2.40 2.16 1.52 0.71 1.42 2.40 2.63 2.80 0.00 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
KOR 1.89 2.30 1.72 1.34 2.18 2.13 1.73 1.87 2.11 1.93 2.41 2.59 2.22 1.46 1.95 0.96 2.61 0.00 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
MAL 1.98 0.81 2.07 2.18 2.21 0.87 2.05 2.24 2.28 1.91 1.42 0.67 1.29 2.18 2.45 2.60 0.76 2.39 0.00 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
MAR 2.09 0.82 2.31 2.38 2.50 1.16 2.21 2.48 2.49 2.17 1.13 0.52 1.54 2.38 2.66 2.78 0.82 2.64 0.79 0.00 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
NEP 1.67 1.02 1.99 1.94 2.42 1.32 1.78 2.21 2.39 2.00 0.99 1.21 1.63 1.84 2.37 2.26 1.38 2.11 1.26 1.22 0.00 NA NA NA NA NA NA NA NA NA NA NA NA NA NA
PAN 1.58 0.92 1.94 2.02 2.33 1.19 1.72 2.19 2.33 1.89 0.83 0.91 1.55 1.98 2.37 2.45 1.23 2.32 1.04 0.94 0.93 0.00 NA NA NA NA NA NA NA NA NA NA NA NA NA
POL 1.55 2.01 0.92 1.41 1.59 1.68 1.51 1.23 1.47 1.35 2.17 2.23 2.08 1.43 1.29 1.67 2.27 1.71 2.06 2.32 2.00 1.99 0.00 NA NA NA NA NA NA NA NA NA NA NA NA
POR 1.52 2.12 1.02 1.59 1.32 1.72 1.49 1.06 1.37 1.41 2.24 2.30 2.02 1.50 1.13 1.75 2.35 1.78 2.11 2.40 2.12 2.06 1.07 0.00 NA NA NA NA NA NA NA NA NA NA NA
RUM 1.35 1.91 0.87 1.57 1.28 1.48 1.40 1.04 1.38 1.25 2.06 2.05 1.74 1.49 1.15 1.81 2.13 1.83 1.89 2.17 1.94 1.86 1.05 0.88 0.00 NA NA NA NA NA NA NA NA NA NA
RUS 1.40 1.99 0.88 1.42 1.47 1.73 1.43 1.10 1.37 1.43 2.04 2.20 2.00 1.49 1.09 1.65 2.32 1.77 2.07 2.26 2.00 1.92 0.93 1.08 0.95 0.00 NA NA NA NA NA NA NA NA NA
SPA 1.38 2.23 1.09 1.75 1.48 1.85 1.47 1.16 1.52 1.56 2.19 2.38 2.09 1.50 1.20 1.86 2.46 1.95 2.24 2.48 2.14 2.08 1.32 0.77 0.97 1.23 0.00 NA NA NA NA NA NA NA NA
TAM 2.23 0.90 2.32 2.35 2.46 1.07 2.27 2.45 2.48 2.09 1.53 0.70 1.39 2.38 2.67 2.77 0.74 2.54 0.60 0.82 1.42 1.23 2.31 2.38 2.16 2.32 2.53 0.00 NA NA NA NA NA NA NA
TEL 1.90 1.00 2.28 2.27 2.61 1.34 2.04 2.53 2.59 2.20 1.09 0.91 1.62 2.23 2.67 2.64 1.07 2.53 0.99 0.89 1.09 0.89 2.29 2.38 2.18 2.30 2.41 1.04 0.00 NA NA NA NA NA NA
TGL 1.70 1.75 1.47 1.91 1.53 1.12 1.90 1.74 1.80 1.67 2.02 1.72 1.44 1.71 1.98 2.28 1.76 2.21 1.57 1.89 1.82 1.73 1.55 1.56 1.31 1.62 1.60 1.82 1.93 0.00 NA NA NA NA NA
THA 1.53 2.34 1.55 1.25 2.07 2.09 1.50 1.71 1.98 1.88 2.24 2.59 2.21 1.08 1.89 1.25 2.65 1.33 2.43 2.63 2.13 2.23 1.68 1.65 1.70 1.64 1.66 2.60 2.48 2.08 0.00 NA NA NA NA
TUR 1.25 1.88 1.13 1.39 1.76 1.68 1.01 1.28 1.69 1.28 1.91 2.12 1.95 1.28 1.47 1.47 2.25 1.45 1.99 2.19 1.77 1.75 1.24 1.19 1.17 1.18 1.24 2.22 2.08 1.72 1.37 0.00 NA NA NA
URD 1.65 0.81 1.87 2.09 2.12 0.79 1.83 2.09 2.15 1.81 1.12 0.64 1.24 2.04 2.32 2.50 0.92 2.33 0.73 0.82 1.06 0.71 1.94 1.99 1.75 1.91 2.04 0.94 0.93 1.45 2.30 1.81 0.00 NA NA
VIE 1.52 2.28 1.42 1.11 2.08 2.11 1.46 1.67 1.97 1.80 2.20 2.56 2.35 1.17 1.77 1.32 2.65 1.34 2.39 2.60 2.06 2.14 1.43 1.52 1.61 1.45 1.62 2.61 2.44 2.05 0.98 1.29 2.25 0.00 NA
YOR 1.92 1.41 2.01 2.23 2.01 0.92 2.16 2.12 2.15 1.92 1.81 1.36 0.56 2.09 2.43 2.45 1.33 2.26 1.25 1.51 1.64 1.60 2.10 2.09 1.82 2.09 2.17 1.34 1.65 1.46 2.27 2.02 1.25 2.42 0
ggdendro::ggdendrogram(hclust(dist_matrix)) +
  ggtitle("High-Dimensional Pairwise Centroid Distance, averaging across prompts")

#write_csv(as.data.frame(dist_matrix_kable), "../../../data/processed/pairwise_country_distances/HD_centroid_distances_all.csv")

1 Variance

Diameter is average pairwise distance between within-language essays in HD space.

d_diameters_prompt <- d %>%
  mutate(L1_prompt = paste0(L1_code, "_", prompt_id )) %>%
  split(.$L1_prompt) %>% 
  map_df(get_group_diameter, "L1_prompt", "mean_dist")  %>%
  separate(L1_prompt, c("L1_code", "prompt_id"), sep = "_")

d_prompt_mean_diameter <- d_diameters_prompt %>%
  group_by(L1_code) %>%
  multi_boot_standard(col = "diameter", na.rm = T)

ggplot(d_prompt_mean_diameter, aes(x = reorder(L1_code, mean), 
                      y = mean, 
                      fill = L1_code)) +
  geom_bar(stat = "identity") +
  geom_linerange(aes(ymin = ci_lower, ymax = ci_upper)) +
  xlab("L1") +
  ggtitle("Diameter, averaging across prompts") +
  theme_minimal() +
  theme(legend.position = "none",
        axis.text.x = element_text(angle = 90, hjust = 1))