気がするのでちょっと見て欲しい。
まず、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")
農薬の名称はランダムに決まっている…?
ところで最初に雑に「農薬の名前」と言ってしまったが、農薬の名前には「農薬の名称(=商品名)」の他に「種類名」と「化学名」があってややこしいのだが、今回ポアソン分布っぽい分布をしているのは商品名だ。
ちなみに今回プロット対象にした項目の実質的な意味は次の通り。
- 正式名称...販売しているメーカーの名前。
- 総使用回数における有効成分...使用回数のカウントの際に用いる有効成分名。なんと実際の有効成分名とイコールではなく厄介(分かりやすい例で言うとこちらでは光学異性体をまとめて1つの扱いにしているものがある)。
- 農薬の種類...種類名。
- 農薬の名称...商品名。
- 有効成分...有効成分名。
なぜもっと単純にならないのか…。