【leaflet,ggplot2,ggmap】いたいけな気持ちでラブホテルのデータを集めてみた
毎度お馴染みの札幌からお届けしてます。(現在5℃)
さむい。ほんとさむい。
TokyoRに行ってきました
先日、第51回TokyoRに初参戦してきました。
一緒に行った竹馬の友が会場目前にしてぽつりと
「Rよりモテそうな趣味見つけようかと思って...」
と呟いた時はどうなることかと思いましたが、
最終的には誰よりもテンション高かったので皆様への感謝が止まりません。
モテそうな趣味ってなんだよ私だってモテたいよ。(消音)
勉強になること多すぎたのでちょこちょこDocument読んだり自分でも書いてみたりしつつ、
とりあえず目下、Generated Variables使いこなせるようになりたい...
SappoRoRにも行きます
11/14(土)らしいです。
年2回目開催!!!
関係者各位よろしくお願いします。
なんか納得いく資料できたらLTやりたい..かも..しれない...
本題
今回のテーマは「ラブホテル」です。
※やましい気持ちはありません
※いやらしい気持ちはありません
極めて純粋でいたいけな気持ちです。
極めて純粋でいたいけな気持ちです。
よし。
きっかけは
TokyoRに向かう、成田空港→東京のバスの道中にて。
私「なんかラブホばっかりあってすごい」
高速道路脇にラブホ多くない?なんで?すごくない?
ってなったので、
まず
「本当に千葉の高速道路脇にはラブホが多いのか論」
について考えてみました。
前提
前回エントリとかとあんま変わんない感じで
①スクレイピングやら一部手作業で千葉全域のラブホテル255件取得
②前処理
③GoogleAPIで文字列ベクトルを座標に変換
④評価点と平日一泊の料金をマージ
平日一泊の料金がうまく取得出来たものが、このうち59件だったので
今回はこれを使います。
> location_love lat lon pt price 1 35.78402 140.3352 4.5 6000 2 35.80085 139.9191 4.5 7000 3 35.85322 140.4687 4.3 3880 4 35.91815 139.9271 NA 6450 5 35.48728 140.0462 5.0 3800 6 35.84596 140.0134 4.1 5820 7 35.44062 139.9772 3.5 4400 8 35.78536 139.8991 4.0 5700 9 35.37716 139.9362 4.1 6370 10 35.68156 140.1038 4.7 7400 11 35.82681 139.9213 4.0 6388 12 35.85934 139.9741 3.6 7700 13 35.91011 139.9380 4.7 7400 14 35.84737 139.9579 NA 6800 15 35.57963 140.1280 3.6 5250 16 35.64922 140.3053 4.6 3980 17 35.68822 139.9968 4.0 5980 18 35.65481 140.1078 4.1 5800 19 35.66906 139.9244 4.8 5980 20 35.81030 139.9156 3.5 6880 21 35.68156 140.1038 4.5 7500 22 35.79517 140.0617 4.5 9050 23 35.64458 140.5003 5.0 5500 24 35.41790 139.9408 4.5 6000 25 35.56509 140.1387 4.6 7000 26 35.38031 139.9222 5.0 4800 27 35.46777 140.0390 4.3 6000 28 35.67856 140.1265 4.8 7900 29 35.68342 140.4215 4.7 6300 30 35.57499 140.3303 NA 5500 31 35.61935 140.1264 4.9 7400 32 35.91993 139.9411 4.5 6480 33 35.85748 140.0115 NA 7800 34 35.79861 140.3392 4.0 6000 36 35.71079 140.1187 4.8 8800 37 35.70744 139.9606 3.6 5370 38 35.68763 140.0023 4.7 5800 39 35.37635 139.9365 4.2 6260 40 35.59229 140.3148 NA 7450 41 35.75037 140.3781 4.0 5380 42 35.60800 140.1194 4.6 9300 43 35.90121 139.9466 4.0 7500 44 35.41957 139.9433 4.2 6000 45 35.66947 140.1173 3.2 6800 46 35.66839 139.9241 5.0 7800 47 35.91281 139.9435 4.2 4970 48 35.68868 139.9975 3.7 5670 49 35.83821 139.9435 3.0 6500 50 35.78668 139.9019 4.8 5400 52 35.61221 140.1217 3.8 7300 53 35.67308 140.1259 4.5 7200 54 35.60908 140.1227 4.5 6500 55 35.44983 139.9938 4.0 5100 56 35.74332 140.0629 NA 8970 57 35.68150 140.1256 4.7 5900 58 35.61909 140.1259 4.5 5400 59 35.81782 139.9265 4.5 7500
{leaflet}で見てみる
まず{leaflet}に点を打ってみる。
>library(leaflet) >m <- leaflet() %>% setView(lng = tokyo_station[,1], lat = tokyo_station[,2], zoom = 12) >m %>% addProviderTiles("CartoDB.Positron") %>% addMarkers(data = location_love,~lon, ~lat,popup=~as.character(price))
※leafletほんとはぐりぐり動くんだけど静止画でごめんなさい...
※popupには平日一泊の料金が出るようにしてみました。
これを見ると!
高速道路&幹線道路沿いにきれいにならんでいるように見えます。
{ggmap}で見てみる
さらに詳細な道路情報とかが気になるので、{ggmap}ことgooglemapを使って見てみる。
>tokyo_map <- ggmap::get_googlemap(center = c(lon =tokyo_station[,1] , lat = tokyo_station[,2]), zoom = 9, scale = 2,maptype = "roadmap",color ="color") >love_map<-ggmap::ggmap(tokyo_map)+geom_point(data=location_love,aes(x=lon,y=lat,colour="red"),size=5);love_map
love_mapとかいう最高のオブジェクト名...
marker引数使うの忘れてた...
こっちで見ると、黄色いラインである高速道路、幹線道路沿いなのがはっきり見て取れますね
総合すると
高速道路&幹線道路 + 松戸・柏エリア
にいわゆるラブホテルが分布してる感じでしょうか。
なんかあまりにも綺麗に道路沿いすぎて怖いぞラブホテル...
なんでこんなに道路沿いなの...みんな車なの...?
おまけ
評価点とかって、実は一泊の値段の単回帰とかであっさり予測できたりして!!!という
私の邪な期待はこんな感じで裏切られました。
>d <- ggplot2::ggplot(location_love, aes(price, pt)) >d+stat_binhex(bins = 10)
そんな単純な話じゃなさそうだ...
ICからの距離とか、繁華街からの距離、
築年数とか設備とかの要素も絡んで来るのかな-なんて。
引き続きなんか考えます。
おまけ2
今回使ったラブホテルたちの価格帯をヒストグラムなんぞにしてみました。
千葉の方、参考にしてください。
> summary(location_love$price) #中央値平均値などなど Min. 1st Qu. Median Mean 3rd Qu. Max. 3800 5670 6300 6405 7400 9300 >library(ggthemes) ggplot(location_love,aes(x=price,y= ..density..))+ geom_histogram(alpha = 0.3,binwidth=500,fill="red")+ geom_density(aes(colour="red",fill="red"),alpha=0.1,size=1.5)+ xlim(2500,10500)+ ggthemes::theme_solarized() #透過はalpha引数 #{ggthemes}でplotにthemeを適用 #Generated Variablesはこういう使い方で良いのかな...
追記
ヒストグラムのサイドが切れてしまっていてむむむ、と思っていたら
@berobero11さんに教えて頂きました。qiita.com
xlim()で最小値、最大値に余裕をもたせると
端っこが切れない!!たしかに!!すごい!!
ということでヒストグラムを切れてないタイプに差し替えてます。
さらに追記
最後のヒストグラム、
ヒストグラムの色とdensityの線の色を同じにできなくて、はて???
colourって普通に入れちゃだめだっけ?aesでくくんなきゃだめ?はて??ってなって謎のコードにしていたところ、
twitterにて助けて頂いたので...
@WAFdata ちょっと分かりやすい説明思いつかないので雑なんですけど、、参考になれば。 https://t.co/hNVFttnotq
— Hiroaki Yutani (@yutannihilation) 2015, 10月 14
(感動のわかりやすさ)
(元気のない日に読み返しまくった)
よって直します。
histgarmは変わらず。
geom_lineで線を引いてから、線なしのdensityを重ねて中に色をつけてます。
そしたらalpha指定も思うがまま!!!
ggplot(location_love,aes(x=price,y= ..density..))+ geom_histogram(alpha=0.3, binwidth=500,fill="red") + geom_line(stat = "density", colour="red", alpha=0.3, size=1.5) + geom_density(colour = "transparent", fill="red", alpha=0.3)+ xlim(2500,10500)+ ggthemes::theme_solarized()
できたーー
わーーーい
ビジネスホテルの値段とかもそうだけど、
キリの悪い値段設定なんてなかなかないので、
binwidthで500円単位にカウントしないとスカスカになっちゃうなあ
おわり
私だってラブホテルを利用するチャンスがあれば現地調・・・ry
現場からは以上です。ご査収ください。