Visualize the use of alphabets in country code

On a commuting train, random browsing between international news outlets left me a kind of fun question; which character of the Latin alphabet is most popular in the use for the 2-character country code? I am living in the country represented by ‘J’ and ‘P’ and wondering how likely this pair can arise by random chance.

R language is so handy to quickly satisfy this kind of curiosity that more or less 30-min coding provided me with some visuals. The countrycode package largely helped me do this.

The first visual is a 2D tile plot in which the used pairs are filled with blue. In this plot, its y (x) axis is arranged in the descending order of appearance count as the first (second) character. Characters ‘M’, ‘S’, ‘G’ and ‘T’ seem popular both as the first and second ones. The ordered pair from ‘J’ to ‘P’ finds its place close to the right-bottom corner, which implies this combination is fairly unexpected soley in terms of frequency.

Human mind cannot help seeing the tile plot as an adjacency matrix between the characters, defining a directed network among them. Therefore, the second visual is a plot of the directed network between the 26 characters in which an edge is drawn from the first to second characters used in an actual code. The size of a vertex is roughly proportional to the total number of connections it holds. Core, medium, and peripheral characters loosely form a complex web.

Below is the script to reproduce these figures:

library(countrycode)
library(dplyr)
library(ggplot2)
library(ggthemes)
library(igraph)

# Extract the relevant data
df_country_name_iso2c <- codelist %>%
  select(country.name.en, iso2c) %>% 
  filter(!is.na(iso2c)) %>%
  mutate(fst = substr(iso2c, 1, 1),
         scd = substr(iso2c, 2, 2),
         val = 1)

# Count how many times each letter appears as the first one
fst_rank <- df_country_name_iso2c %>% 
  group_by(fst) %>% 
  summarise(count = n()) %>% 
  arrange(count)

# fst "X" should be added manually
fst_rank <- data.frame(fst = "X", count = 0) %>% 
  bind_rows(fst_rank)

# Count how many times each letter appears as the second one
scd_rank <- df_country_name_iso2c %>% 
  group_by(scd) %>%
  summarise(count = n()) %>%
  arrange(desc(count))

# Draw a tile plot 
ggplot(data = df_country_name_iso2c,
       aes(x = scd, y = fst, fill = val)) +
  geom_tile() +
  scale_y_discrete(limits = fst_rank$fst) +
  scale_x_discrete(limits = scd_rank$scd) + 
  guides(fill = FALSE) +
  coord_fixed() +
  ggtitle("ISO alpha-2 country code") +
  theme_minimal(base_size = 15)
  
# Convert the data into a graph
g <- graph.data.frame(d = df_country_name_iso2c %>% 
                        select(fst, scd))

# Draw a plot of the graph
plot.igraph(x = g,
            vertex.size = 0.6*(2+degree(graph = g, mode = "total")),
            vertex.color = "white",
            vertex.label.family = "sans",
            edge.arrow.size = 0.2,
            edge.curved = TRUE,
            layout = layout.kamada.kawai(graph = g))
Advertisements

ウェブサイエンス研究会オープンセミナー vol.6 で登壇しました

東京大学の橋本康弘さんにお招きいただき、ウェブサイエンス研究会オープンセミナー vol. 6 において講演を行いました。
久々に研究の雰囲気に触れて議論することができ、大いに刺激を受けました。
当日ご議論いただいた講演者・参加者の皆様、運営スタッフの皆様、貴重な機会をいただきありがとうございました。

企業に移って半年後の所感

2017年10月に研究機関から民間企業に移って、ちょうど半年が過ぎました。
周囲からよく尋ねられることもありますし自分自身でも覚えておきたいので、いま考えていることを書き留めておきます。

TL;DR 毎日とても楽しくやっています。

なぜ企業に移ったのか
転職時に考えたことは複数の階層にまたがっているので、決断の理由を一言で表すのは難しいです。具体的には、自分個人、家族、所属機関、国、他国を含めた研究コミュニティのそれぞれの現状と将来についてよく考えました。抽象的には「自分が5年後、10年後に楽しく生きているためには今どうすべきか」を中心に考えていました。

同時期に読んだ Duncan J. Watts の Should social science be more solution-oriented? には強く影響を受けました。Watts 自身が企業に所属する研究者なので「実問題の解決を目指そう」というスローガンはポジショントーク的に聞こえるかと思います。しかしながら、あくまで「結果の再現可能性を重視する」「異分野の連携を高める」という目的のために実問題の解決という手段を提案しているということが、丁寧に読むとわかります。自分が研究活動を通じて真に実現したいことは何かを改めて考える上で、重要な示唆を得ました。
(全くの余談ですが、学部3年の講義で Watts-Strogatz 論文について知ったことが研究の道を志した大きなきっかけの1つでした。今回のキャリアチェンジでも大きな影響を受けたので、勝手に心の中で Watts 先生と思っています。)

どんな仕事をしているのか、研究はしないのか
職務はいわゆるデータサイエンティストで、実際にサービスを企画し運用する事業サイドの方々とやりとりしながら、データに基づいてビジネス上の課題を解決することが主な業務です。課題を解決することが最優先なので、新規な分析手法を研究開発することは必須ではありません。個人的には、課題が解決できるなら手法はベーシックなものでよいと思いながら仕事をしています。

現在の業務において、博士卒ないしは研究者出身という経験が役立っていると思うところは2点あります。

1つ目は、課題解決に適切な方法を見極めることです。
与えられた課題に対して答えを与えうるだけの複雑さがあり、かつ結果をもとにビジネス上のアクションにつなげられる解釈性がある方法を選ぶことはまったく自明ではありません。別の観点から言うと、答えに求められる精度と答えを出すまでに要する時間とのトレードオフを見定めることも重要です。さらに言えば、「なぜその方法を選んだのか」「結果の適用範囲はどこまでか」を事業サイドの方々に根拠をもって説明する必要があります。上記を達成する上では数学や理論についての広範な知識と理解が必要であり、これまでに身に着けてきた基礎的な知識と勉強の仕方が役立っていると感じます。

2つ目は、課題解決のフレームワークを体得していることです。
研究では、まず既存研究を調べたり人と議論したりして今解くべき問題を見つけます。次にその問題に答えを与えます。最後に問題と答えについて文書やプレゼンテーションにまとめて発表して、フィードバックを得ます。現在の業務でも、この一連の流れはまったく同一であると思っています。違うところは2つあって、「何が価値ある問題と答えか」という基準と、「何をアウトプットとして誰に評価されるか」という基準です。逆に言うとこの2つの基準について頭の中で置き換えただけで、それ以外はこれまでと何も変わっていません。与えられた課題をこなすだけでなく自発的に課題を見つけて業務を進めるうえで、このような課題解決のフレームワークを身に着けていることがとても役立っています。

今のところ、業務においてアカデミックな研究をすることは、自分の中ではあまり重視していません。(所属部署においては、論文を書いたりしてアカデミックなアウトプットを出すことはオプションとしてはむしろ推奨されています。)当面は、目の前の課題に取り組んでいるほうが面白くて仕方ないという状況が続きそうです。

企業の環境はどうなのか
特に不満も不自由もなく、やりたいことをやりたいように進められています。少なくとも所属する部署やチームにおいては、博士卒や研究者出身といって別扱いされる雰囲気は一切なく、「いまどう貢献できる能力があるか」という観点だけで評価されていると感じます。チームの定例ミーティングと進捗に応じて不定期に開かれる事業サイドとのミーティング以外は決まったスケジュールがなく、使える時間のほぼすべてを論文などを読む・分析用のデータを成形する・コードを書く・レポートを書くに充てることができています。多様な国籍やバックグラウンドの人々が集まっている点も、自分にとっては居心地よく感じる大きな要因です。計算機環境や設備等については細々とは述べませんが、申し分ないものであると言えます。

おわりに
総じて「ここでしかできない・今しかできない・自分しかできないことに取り組むことができ、その成果を評価してもらえる環境がある」と感じており、それが業務を遂行する上でのモチベーションになっています。私の志向と適性を理解してタスクを割り当ててくださっている部署とチームの方々にとても感謝しています。また、末筆にはなりますが、転職活動に際して有形無形の支援とアドバイスをいただいた皆様にも、あらためて感謝の意を述べたいです。

最後に、弊社に関心がある、もしくは弊社に限らずとも民間企業への転職を考えている方がもしありましたら、お気軽にご相談いただければと思います。