GIS奮闘記

元GISエンジニアの技術紹介ブログ。主にPythonを使用。

スポンサーリンク

Python で相関係数を算出する方法

さて、本日は Python で相関係数を算出してみようと思います。今の業務で Tableau を使って相関係数を計算しているのですが、計算対象のデータパターンが多くて(相関係数を算出する対象が何十、何百パターンもある)、 Python で一括処理をしたいと思っているというのが背景にあります。

相関係数とは

相関係数とは、二つの変数の関係性の強さを示す数値である。変数とはたとえば人の体温や身長、体重、気温や株価など、刻々と変化する様々な数値のことである。特定の二つの変数の関係性の強さを表す場合に相関係数が用いられ、相関係数を導き出す手法が相関分析である。(出典:DIAMOND Chain Store 相関係数とは?相関係数を知ることで何がわかる?Excelを使った計算方法から、実例まで解説!)

正の相関と負の相関

相関係数は-1から1の値をとり1に近いほど二つの変数の相関関係が強いと言えます。(以下画像は「5分でわかる!「正の相関」「負の相関」と「相関係数」」より抜粋)

使用するデータ

以下のエントリーで収集した SUUMO の中古物件情報を使います。

www.gis-py.com

相関関係を分析する属性

SUUMO の中古物件情報の以下の属性を使います。

  • 築年数
  • 販売価格
二つの属性に相関関係がある場合

築年数が高くなれば販売価格が高くなり、築年数が低くなれば販売価格が低くなります。

実行環境

macOS 12.3.1
Python 3.9.6

サンプルコード

築年数と販売価格の相関係数を算出するサンプルコードです。

import csv
import pandas as pd

input_file = "property.csv"
attribute_list = []

with open(input_file, 'r', encoding='utf-8') as f:
    header = next(csv.reader(f))
    reader = csv.reader(f)

    price_list = []
    building_area_list = []
    for row in reader:
        
        # 販売価格を格納
        price_list.append(int(row[1]))

        # 築年数を格納
        building_area_list.append(int(row[12]))

price_ser = pd.Series(price_list)
building_area_ser = pd.Series(building_area_list)

# 相関係数を算出
res = price_ser.corr(building_area_ser)

print(res)

相関係数は約-0.32という結果になりました。そのため、築年数と販売価格には負の相関関係にあると言えます。

さいごに

大量のデータパターン(相関係数を算出する対象が何十、何百パターンもある場合)での相関分析をする際は Python での相関係数の算出が役に立ちそうですね。ちなみにですが、 GIS の世界にも空間相関分析というものがあるみたいですね。本日は以上です。