ここでは、EDA Salon 第5回 - Airbnbの東京の宿泊施設データを使って、宿泊先の決定を左右するアメニティ(以降、Important_Amenity
と呼ぶ)とprice
の関係性を明らかにする。つまり、Important_Amenity
がある宿泊施設とない宿泊施設では、1泊の金額を表すprice
に差があるのかどうかを明らかにする。
Important_Amenity
とprice
の関係をみる理由としては、ユーザーが宿泊先を選択する基準として、アメニティは宿泊先を検討する上で重要な要素だと考えられる。部屋の中にベッドだけおかれている宿泊先は選ばないだろうし、一方で、すべての宿泊先で用意されているようなアメニティ(例えばWifi
)は、宿泊先を検討する上で宿泊先を決定する要因とはならない。つまり、あると便利だけど、なくても困らないようなアメニティであって、それが設置されてるから少し高くてもよいと思うようなアメニティを探したいという意図。なんとなく理解してほしい。したがって、宿泊先を区別したり、価格の違いを説明するのに役立つようなアメニティを探したいというのが今回の目的。
そこで、ここでのImportant_Amenity
というのは、12,829件の宿泊先のうちおよそ40%(から60%)の宿泊先には用意されているが、残りの60%(から40%)の宿泊先は用意されていないアメニティが金額の差をつけるものなのかを明らかにする。
説明が下手で申し訳ないが、例えばデータが100件あった場合でアメニティとしてバルコニーを考える場合、バルコニーがあり宿泊先のサンプルサイズが40件で、バルコニーなしのサンプルサイズが60件というのようなアメニティを対象としている。なので、他にもイメージとしては、「あり60件-ない40件」、「あり50件-ない50件」も対象であるが、「あり20件-ない80件」、「あり80件-ない20件」、「あり10件-ない90件」など、極端にサンプルサイズに偏りがあるものは除外し、ありとなしの群比較で双方にある程度のサンプルサイズをもたせるという意味。
つまり、どこにでもあるようなアメニティや、どこかの宿泊先にしかないようなアメニティ(例:Walk-in shower
やPool with pool hoist
)は除外している。
ここでの恣意的な閾値なので、もっと妥当な方法があれば知りたい。また、因果関係を見つけるというたぐいの話ではないので注意。
提供されているデータにはImportant_Amenity
はないので、計算して求めた。
データ加工の方針としては、各宿泊先id
ごとに持っている{a,b,...,n}
という文字型のAmenities
を分解した。Amenities
のユニーク数は147種類である。各アメニティの設置率は下記の通り。
そこからデータ構造を変形(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種類のアメニティが検定の対象である。
サンプルサイズが大きいので、微小な差も検知することから、有意だからどうこう言うつもりはないし、効果量もここでは計算しない。あくまでも、分析目的である価格に差をつけるようなアメニティのあたりをつけたいだけである。
t検定の結果Important_Amenity
とprice
の関係を可視化してみる。棒の高さは、アメニティありの宿泊先の平均金額とアメニティなしの宿泊先の平均金額における、平均金額の差である。オレンジが5%水準で有意なアメニティである。
Private entrance
はさておき、Self check-in
やElevator
、Long term stays allowed
、Dryer
、Dishes and silverware
などは、このアメニティがある宿泊先と、ない宿泊先では金額に1500円~2000円の差がついており、これらのアメニティは宿泊先の決定に関わる重要なアメニティなのかもしれない。 ちなみにCarbon monoxide detector
は一酸化炭素検知器は、Airbnbが設置を推奨しているアメニティらしい。
Important_Amenity
ごとに、金額price
に差がつくかどうかを明らかにした。
結果としては、Self check-in
やElevator
、Long term stays allowed
、Dryer
、Dishes and silverware
などは平均金額に差をつけるアメニティであることがわかった。したがって、price
の予測モデルを作る際には、price
のばらつきを説明する上で、アメニティの特徴量として有効である可能性がある。