農薬の名前はポアソン分布に従っている

気がするのでちょっと見て欲しい。

まず、rvestを使ってFAMICから農薬登録情報のcsvをダウンロードして保存する。URLがちょいちょい変わるのでxpathとかで抽出したほうが良い。

library(rvest)
library(dplyr)
url <- "http://www.acis.famic.go.jp/ddata/index2.htm"
read_html(url) %>%
  html_node(xpath = '//*[@id="mainArea"]/ul/li[1]/ul/li/a') %>% 
  html_attr(name = "href") %>% 
  url_absolute(base = url) %>% 
  download.file("kihon.zip")
kihon <- unzip("kihon.zip") %>% 
  readr::read_csv(locale = readr::locale(encoding = "CP932")) %>%
  mutate_if(is.character, stringi::stri_trans_nfkc)

次に農薬の名称を文字数に変換する。比較のために他の文字列情報もいくつか一緒に変換しておく。

kihon %>% 
  select_if(is.character) %>% 
  select(-c(濃度, 用途, 剤型名, 登録年月日, 登録の有効期限)) %>%
  tidyr::gather() %>%
  unique() %>% 
  mutate(n = nchar(value)) -> kihon_mod

次にポアソン分布の確率質量を各変数の平均値から計算しておく。

# 平均値
lambda <- kihon_mod %>% 
  group_by(key) %>% 
  summarise(lambda = mean(n, na.rm = TRUE))
# 確率質量
pois <- data.frame(n = 1:50, key = rep(lambda$key, rep(50, nrow(lambda)))) %>% 
  left_join(lambda, by = "key") %>% 
  mutate(theory = dpois(n, lambda))

そしてプロットする。

library(ggplot2)
library(gghighlight)
kihon_mod  %>% 
  ggplot(aes(x = n)) +
  geom_bar(aes(y = ..prop..)) +
  geom_line(data = pois, 
            aes(x = n, y = theory)) +
  gghighlight(key == "農薬の名称") +
  facet_grid(key ~ ., scales = "free_y") +
  lims(x = c(0, 30)) +
  theme_bw(base_family = "IPAexGothic") 

f:id:Rion778:20180902224525p:plain

農薬の名称はランダムに決まっている…?

ところで最初に雑に「農薬の名前」と言ってしまったが、農薬の名前には「農薬の名称(=商品名)」の他に「種類名」と「化学名」があってややこしいのだが、今回ポアソン分布っぽい分布をしているのは商品名だ。

ちなみに今回プロット対象にした項目の実質的な意味は次の通り。

  • 正式名称...販売しているメーカーの名前。
  • 総使用回数における有効成分...使用回数のカウントの際に用いる有効成分名。なんと実際の有効成分名とイコールではなく厄介(分かりやすい例で言うとこちらでは光学異性体をまとめて1つの扱いにしているものがある)。
  • 農薬の種類...種類名。
  • 農薬の名称...商品名。
  • 有効成分...有効成分名。

なぜもっと単純にならないのか…。