akatak blog

プログラム初心者の50代ビジネスマンがセカンドキャリアを目指して働きながらPythonを中心に独学していましたが、昨年IT系企業に転職。新規事業開発の仕事をすることになりました。自らの覚え書きや成果物、感じたことなどを脈絡もなく書き連ねるブログです。

Pythonによる不動産情報のデータ取得&分析(6)【売却物件/分析編】

前回の記事から随分時間がたってしまいました。

昨年10月以降、仕事の関係で海外出張に暫く行っていたほか、現在行っている不動産分析結果を参考にもしながら年末には遂に引越しすることになりまして、片付けから新居の準備と非常に忙しく、そうこうしているうちに年明け。すっかりPythonから離れておりました。

前回記事では中途半端でありましたので、不動産売却物件編(中古マンション)について、今回で一旦完結したいと思っております。

データの基礎分析

前回の記事で前処理として加工したデータを取り込んで、基礎的な分析をしておきましょう。データは前回のものを利用しているので、半年ほど古いですが、ご容赦ください。

まずは、おまじないのごとく、いつものように必要なライブラリを取り込んでおきます。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

次に、前回加工したデータをpandas のDataFrameとして取り込みます。

df = pd.read_csv('data/suumo_used_mansion_mod_owner.csv', index_col=0)

データの概要を見ておきましょう。 f:id:akatak:20190302223111j:plain

14000件ほどのデータがあることが分かります。

前回、加工仕切れていませんでした。不動産価格や平米当りの単価が円単位だと、数値が大きくなってしまうので、万円単位に変更し、新たな列として保存しておきます。

df['価格_万円'] = df['価格']/10000
df['単価_万円'] = df['単価']/10000

さて、賃貸物件の場合と同様に、売却物件数を市区毎に比較してみましょう。 groupbyにて、市区別にデータをカウントし、件数の多い順にソートして表示してみます。

f:id:akatak:20190302225006j:plain

売却物件数と人口を散布図にプロットしたら、以下の通り。

f:id:akatak:20190302225314j:plain

賃貸物件と同様に、相関が見られますね。 次に、seabornをimportして、市区別に単価を比較してみましょう。

f:id:akatak:20190302225634j:plain

更に、築年数と平米単価をグラフ化してみます。

f:id:akatak:20190302230106j:plain

築年数毎に平均平米単価を算出してプロットしてみます。

f:id:akatak:20190302230424j:plain

築50年を超えるとデータ数の減少に伴い歪になりますが、それまでは傾向をよく表している感じですね。

次に、駅からの距離(徒歩何分か)と平均平米単価をプロットしてみましょう。 f:id:akatak:20190303075240p:plain

40分を超えた所に異常値がありそうです。 f:id:akatak:20190303085246p:plain

徒歩91分は流石に異常値なので、除外します。 f:id:akatak:20190303085636p:plain

重回帰分析

さて、ここからは重回帰分析を行っていきましょう。 まず、重回帰分析の説明変数に使うデータの種類を特定します。不動産価格に影響を与えると思われるものを取り敢えず、df_for_analysis_baseとして設定することにします。また、欠損値のあるデータを除外しておきます。

f:id:akatak:20190303091041p:plain

重回帰分析を行うためにscikit-learnライブラリをimportします。

import sklearn
from sklearn.linear_model import LinearRegression as LR

次に、予測モデル作成にあたり、

  1. LinearRegressionクラスを読み込みます。
  2. 説明変数Xに、df_for_analysis_baseから「単価万円」「部屋数」「総戸数」「路線」を除いたものを取り敢えず設定します。「単価万円」は被説明変数なので除外。「部屋数」「総戸数」は単価に殆ど影響がないため除外。「路線」を入れると「駅」と相関が高いため、多重共線性の影響により、回帰係数が異常値となっていますので、除外しています。
  3. 被説明変数yに「単価_万円」を設定します。
  4. 「市区」「駅」「手段」など、質的データをダミー化します。

f:id:akatak:20190303115115p:plain

そして、予測モデルを作成し、結果である回帰係数と切片を呼び出します。

f:id:akatak:20190303105140p:plain

決定係数は76%とまずまずのようです。この結果を見てみると、概略以下のことが言えるかと思います。

  • 築年数が1年経過すると、平米単価で約1.1万円安くなる
  • 駅からの距離が1分遠くなると、平米単価で約1.4万円安くなる
  • 物件階が1階高くなると、平米単価が約1万円高くなる
  • 市区だけでなく、最寄駅の銘柄によって結構、単価が変わる

ただし、方角については、必ずしも南向きが高くなっていないので、実感と異なる状況です。現在、統計については勉強している最中ですので、将来的にこのモデルの評価についてもう少し掘り下げて行いたい、必要があれば修正したいとは思っています。まだ、先になりそうですが。

さて、この結果をダウンロードして、Excel上で簡単に不動産価格を試算できるスプレッドシートを作成しましたので、ご参考までにアップします。ただし、モデルの検証もきちんと行っていないので、あくまで参考の域をでないこと、また、分析に利用したデータは半年以上前のものですので、ご了承ください。

drive.google.com

本日は以上です。