はじめに

ここでは、EDA Salon 第5回 - Airbnbの東京の宿泊施設データを使って、宿泊先の決定を左右するアメニティ(以降、Important_Amenityと呼ぶ)とpriceの関係性を明らかにする。つまり、Important_Amenityがある宿泊施設とない宿泊施設では、1泊の金額を表すpriceに差があるのかどうかを明らかにする。

Important_Amenitypriceの関係をみる理由としては、ユーザーが宿泊先を選択する基準として、アメニティは宿泊先を検討する上で重要な要素だと考えられる。部屋の中にベッドだけおかれている宿泊先は選ばないだろうし、一方で、すべての宿泊先で用意されているようなアメニティ(例えばWifi)は、宿泊先を検討する上で宿泊先を決定する要因とはならない。つまり、あると便利だけど、なくても困らないようなアメニティであって、それが設置されてるから少し高くてもよいと思うようなアメニティを探したいという意図。なんとなく理解してほしい。したがって、宿泊先を区別したり、価格の違いを説明するのに役立つようなアメニティを探したいというのが今回の目的。

そこで、ここでのImportant_Amenityというのは、12,829件の宿泊先のうちおよそ40%(から60%)の宿泊先には用意されているが、残りの60%(から40%)の宿泊先は用意されていないアメニティが金額の差をつけるものなのかを明らかにする。

説明が下手で申し訳ないが、例えばデータが100件あった場合でアメニティとしてバルコニーを考える場合、バルコニーがあり宿泊先のサンプルサイズが40件で、バルコニーなしのサンプルサイズが60件というのようなアメニティを対象としている。なので、他にもイメージとしては、「あり60件-ない40件」、「あり50件-ない50件」も対象であるが、「あり20件-ない80件」、「あり80件-ない20件」、「あり10件-ない90件」など、極端にサンプルサイズに偏りがあるものは除外し、ありとなしの群比較で双方にある程度のサンプルサイズをもたせるという意味。

つまり、どこにでもあるようなアメニティや、どこかの宿泊先にしかないようなアメニティ(例:Walk-in showerPool with pool hoist)は除外している。

ここでの恣意的な閾値なので、もっと妥当な方法があれば知りたい。また、因果関係を見つけるというたぐいの話ではないので注意。

データの加工

提供されているデータにはImportant_Amenityはないので、計算して求めた。

データ加工の方針としては、各宿泊先idごとに持っている{a,b,...,n}という文字型のAmenitiesを分解した。Amenitiesのユニーク数は147種類である。各アメニティの設置率は下記の通り。

Loading...

そこからデータ構造を変形(wide to long)し、そこから再度データ構造を変形(long to wide)しなおすことで、12,829件の各宿泊先idごとにAmenitiesのフラグ(0と1)をもたせた。この状態では、12,829行×148例(1列がid+147列がAmenities)である。2列目のNo_Amenityというのはアメニティがない施設もある(登録ミス?)ため存在するカラムであるが、のちの分析との関わりはないので、ほっておく。

あとは各宿泊先idごとにpriceを結合し、再度、データ構造を変形(wide to long)し、アメニティの割合をもとに40%(n=4,081件)~60%(n=7,722件)の宿泊先に限定し、一気にウェルチのt検定を行って、差があるアメニティを抽出した。下記、14種類のアメニティが検定の対象である。

  • Refrigerator(冷蔵庫)
  • Carbon monoxide detector(一酸化炭素検知器)
  • Iron(アイロン)
  • Microwave(電子レンジ)
  • Dishes and silverware(食器)
  • Private entrance(プライベートエントランス)
  • Long term stays allowed(長期宿泊許可)
  • Bed linens(ベッドリネン)
  • Self check-in(セルフチェックイン)
  • Stove(ストーブ)
  • Elevator(エレベータ)
  • Lock on bedroom door(ベッドルームの施錠)
  • Cooking basics(料理関係の基本的ななんか)
  • Dryer(ドライヤー)

サンプルサイズが大きいので、微小な差も検知することから、有意だからどうこう言うつもりはないし、効果量もここでは計算しない。あくまでも、分析目的である価格に差をつけるようなアメニティのあたりをつけたいだけである。

データの可視化

t検定の結果Important_Amenitypriceの関係を可視化してみる。棒の高さは、アメニティありの宿泊先の平均金額アメニティなしの宿泊先の平均金額における、平均金額の差である。オレンジが5%水準で有意なアメニティである。

Loading...

Private entranceはさておき、Self check-inElevatorLong term stays allowedDryerDishes and silverwareなどは、このアメニティがある宿泊先と、ない宿泊先では金額に1500円~2000円の差がついており、これらのアメニティは宿泊先の決定に関わる重要なアメニティなのかもしれない。 ちなみにCarbon monoxide detectorは一酸化炭素検知器は、Airbnbが設置を推奨しているアメニティらしい。

まとめ

Important_Amenityごとに、金額priceに差がつくかどうかを明らかにした。

結果としては、Self check-inElevatorLong term stays allowedDryerDishes and silverwareなどは平均金額に差をつけるアメニティであることがわかった。したがって、priceの予測モデルを作る際には、priceのばらつきを説明する上で、アメニティの特徴量として有効である可能性がある。