gtrendsRで今が旬のサバゲー装備をグーグル先生に訊いてみる
という訳で、グーグル先生での検索数から気になる装備がどれくらい興味を持たれているか、{gtrendsR}を使って調べてみる。
今回は調査というより「こうやれば調べられる」みたいなところに主眼を置いてるので、別に東京マルイの全機種調べたりとかはしてない。
それと先に断っておくと、「検索数=人気」ではないので、これだけで人気とかを語るのは難しいと思う(例:M92Fの新型の販売が決定すると、人気はどうあれ検索数は増えると予想される)。
でも目安として簡単に拾ってくる分には楽しい。
それと今回は検索対象がwebだけど、これってSNS入ってるのかどうかが気になる。ツイッターとかのデータも引っこ抜いて比較すると何か見つかるかもってのも思う。
まずは準備から。頭を空っぽにしてこれを走らせる。
ちなみに自分の環境だとなぜか{Rcpp}が上手く更新されなくて、一度remove.packagesしてから再度入れ直す羽目になった。謎。
install.packages("drat") # easier repo access + creation drat:::add("ghrr") # make it known install.packages("gtrendsR") if (!require("devtools")) install.packages("devtools") devtools::install_github("PMassicotte/gtrendsR")
それと今回使うパッケージを入れておく。
library(gtrendsR) library(tidyverse) library(DT) library(plotly) library(dygraphs)
早速だが試しに調べてみる。デフォルトだと1週ごとのデータを5年分も拾ってくれるけど、そこまでいらない人は期間を設定すれば解決する。
keywordで調べたい単語、geoで検索地域を設定する。
国は日本で設定した。海外を調べると実銃のデータしか拾ってこない気がする。
ちなみに、日本語で検索すると「マルチバイトが~」とか言い出して動かなくなるので英語(というかアルファベット)で検索した。エンコードを何とかすればいいのかもしれないが、調べて出てきた解決法が「Ubuntuを使う」だったのでそっ閉じした。コンソールに出力される結果も日本語と思われる箇所までがっつり文字化けしてるんだけど、これマジで解決法ないの???
gtrendsR::gtrends( keyword = c("M92F"), geo = c("JP") )
結果はリスト形式で、「期間 time」「国 country」「地域 region」「都市 city」などでそれぞれ検索された(≒興味を持たれた interest)数が表示される。
また検索ワードに対する「関連項目 related topics」も出してくれる。でもこれが一緒に検索された単語なのか、一緒に書かれることが多い単語なのか分からない。
3種類の検索された回数を纏めて取りたい場合はキーワードを纏めて指定。5個まで同時に調べられるらしい。
結果は表形式で出力して確認する。
WeeklyTrends <- gtrendsR::gtrends( keyword = c("M92F", "Glock", "SIG Sauer", "Desert Eagle", "M1911"), geo = c("JP") )$interest_over_time %>% as_tibble() %>% dplyr::select(date,hits,keyword) %>% dplyr::mutate(keyword = keyword %>% as.factor() ) WeeklyTrends %>% DT::datatable()
見返してみると、検索する単語が型番だったり社名だったりが混じっていて適当にも程があるけど、"Beletta"より"M92F"の方が引っ掛かるから大目に見てください(適当)。
何はともあれ、これで集計とかがしやすくなった。検索数の平均を出してやるとこんな感じ。
WeeklyTrends %>% dplyr::group_by(keyword) %>% dplyr::summarize(Hit = mean(hits))
## # A tibble: 5 x 2
## keyword Hit
## <fct> <dbl>
## 1 Desert Eagle 2.22
## 2 Glock 10.5
## 3 M1911 13.5
## 4 M92F 12.5
## 5 SIG Sauer 3.34
国内のベレッタに対する興味の高さに震える。いいぞもっとやれ。
あとシグザウエルは結構カッコいいのでもっと人気出てほしい。というか純正メーカーとしてエアソフトガンやり始めてるし、ぜひ頑張ってくれ。
「今興味を持たれているのはこれです!」みたいなことが言いたければ箱ひげ図で可視化すればいいと思う。外れ値が入っててもデータの概形は把握できるし。
WeeklyTrends %>% ggplot(aes(keyword, hits, colour=keyword)) + stat_boxplot(geom = "errorbar", coef = 1.5, width = 1) + geom_boxplot() + ylim(c(0,30)) + theme_cowplot() + theme(legend.position="none")
せっかく時間の情報も持っているので、時系列データとしてインタラクティブな可視化をやってみる。
{plotly}パッケージ内のggplotlyでやる方法と、{dygraph}パッケージでやる方法と2つある。
ちなみに後者はtidyな見た目のデータだと上手くグラフにならないので、pivot_widerで検索対象ごとに列を作ってから変換すると良さげ。
あと残念ながら未だにインタラクティブなグラフの貼り付けができない人なので、上の画像はpngで貼り付けた。 下はpngにすらできなかったので気になる人はRで実行してもらえれば。
g <- WeeklyTrends %>% ggplot(aes(date, hits, colour=keyword)) + geom_line()+ theme_cowplot() ggplotly(g)
WeeklyTrends %>% tidyr::pivot_wider(names_from = keyword, values_from = hits) %>% read.zoo() %>% xts::as.xts() %>% dygraphs::dygraph() %>% dyOptions(drawPoints = TRUE, pointSize = 1.5, colors = c("red", "blue", "green"), stepPlot = FALSE, fillGraph = FALSE, fillAlpha = 0.4) %>% dyRangeSelector(height = 20, strokeColor = "red")
最後に、今回一番面白かった検索結果を。
関連項目が上で調べたものに比べて結構面白いことになってる。
GGOでピンク色になってたもんな、うん。
gtrendsR::gtrends( keyword = c("P90"), geo = c("JP") )$related_topics
## subject related_topics value geo
## 1 100 top FN P90 JP
## 2 16 top P-90 JP
## 3 12 top Gun JP
## 4 10 top custom JP
## 5 7 top Airsoft gun JP
## 6 7 top Magazine JP
## 7 7 top Pickup JP
## 8 5 top Tokyo Marui JP
## 9 5 top Airsoft JP
## 10 5 top Gibson Les Paul JP
## 11 4 top Guitar JP
## 12 4 top Bullet JP
## 13 4 top Rifle JP
## 14 3 top Gibson Brands, Inc. JP
## 15 3 top M4 carbine JP
## 16 3 top Battlefield 4 JP
## 17 3 top Heckler & Koch MP5 JP
## 18 2 top Machine gun JP
## 19 2 top Sight JP
## 20 2 top Submachine gun JP
## 21 2 top Epiphone JP
## 22 2 top Gun barrel JP
## 23 2 top Silencer JP
## 24 2 top Weapon JP
## 25 Breakout rising Pink JP
## 26 Breakout rising Girls' Frontline JP
## 27 Breakout rising Knives Out JP
## 28 Breakout rising Huawei P9 JP
## 29 Breakout rising Tom Clancy's Rainbow Six Siege JP
## 30 Breakout rising Nikon Coolpix P900 JP
## 31 Breakout rising Electrical wiring JP
## 32 Breakout rising Tom Clancy's Ghost Recon JP
## 33 Breakout rising Mod JP
## 34 Breakout rising Splatoon 2 JP
## 35 Breakout rising Yamaha Pacifica JP
## 36 Breakout rising Tom Clancy's The Division JP
## 37 Breakout rising Tom Clancy's Ghost Recon Wildlands JP
## 38 Breakout rising Fender Telecaster Thinline JP
## 39 Breakout rising Hero JP
## 40 Breakout rising FujiGen JP
## 41 Breakout rising Tom Clancy's Rainbow Six JP
## 42 Breakout rising Hand JP
## 43 Breakout rising Vector JP
## 44 Breakout rising Counter-Strike: Global Offensive JP
## 45 Breakout rising PlayerUnknown's Battlegrounds JP
## 46 Breakout rising DiMarzio JP
## 47 Breakout rising Call of Duty: Modern Warfare Remastered JP
## 48 +850% rising Sword Art Online Alternative Gun Gale Online JP
## 49 +250% rising Humbucker JP
## keyword category
## 1 P90 0
## 2 P90 0
## 3 P90 0
## 4 P90 0
## 5 P90 0
## 6 P90 0
## 7 P90 0
## 8 P90 0
## 9 P90 0
## 10 P90 0
## 11 P90 0
## 12 P90 0
## 13 P90 0
## 14 P90 0
## 15 P90 0
## 16 P90 0
## 17 P90 0
## 18 P90 0
## 19 P90 0
## 20 P90 0
## 21 P90 0
## 22 P90 0
## 23 P90 0
## 24 P90 0
## 25 P90 0
## 26 P90 0
## 27 P90 0
## 28 P90 0
## 29 P90 0
## 30 P90 0
## 31 P90 0
## 32 P90 0
## 33 P90 0
## 34 P90 0
## 35 P90 0
## 36 P90 0
## 37 P90 0
## 38 P90 0
## 39 P90 0
## 40 P90 0
## 41 P90 0
## 42 P90 0
## 43 P90 0
## 44 P90 0
## 45 P90 0
## 46 P90 0
## 47 P90 0
## 48 P90 0
## 49 P90 0