GIS奮闘記

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

スポンサーリンク

Python で無相関検定をしてみる

さて、本日は Python を使って無相関検定をしてみようと思います。以下二つのエントリーで「相関係数の算出」と「データの散布図へのプロット」を実施しましたが、使用した二つの変数(築年数と販売価格)に対して無相関検定を実施します。

www.gis-py.com

www.gis-py.com

相関と仮説検定

データ分析を行なっていると、「たまたま」相関係数の値が大きくなってしまうことがよくあります。算出した相関係数が「たまたま」出たものなのか、それとも相関係数に有意性があるのかを確かめる手法が仮説検定です。今回は「無相関検定」というものを使ってみます。

無相関検定とは

「相関係数が r = 0である」ことを帰無仮説として採用して、「本当は相関が無いのに、たまたまデータに見られた相関係数の値が発生する確率」を p値として計算します。この値が事前に設定した有意水準を下回っていれば、対立仮説となる「相関係数が0ではない」という主張を支持することができるのが無相関検定です。

つまり、無相関検定は二つの変数間に相関が無いと仮定して、標本にみられる相関がどれだけ「たまたま」発生するかを評価します。

p値とは

統計的仮説検定において、帰無仮説の元で検定統計量がその値となる確率のこと。P値が小さいほど、検定統計量がその値となることはあまり起こりえないことを意味する。一般的にP値が5%または1%以下の場合に帰無仮説を偽として棄却し、対立仮説を採択する。(出典:統計WEB)

有意水準とは

有意水準は、検定において帰無仮説を設定したときにその帰無仮説を棄却する基準となる確率のことです。(アルファ)で表され、5%(0.05)や1%(0.01)といった値がよく使われます。有意水準は検定を行う前に設定しておきます。(出典:統計WEB)

本エントリーでは有意水準を5%(0.05)とします。

相関係数r と p 値のパターンとその解釈

  1. r の絶対値が大きく、p値も有意水準を下回っている場合
    二つの変数の間に何らかの関係があると解釈します。

  2. r の絶対値は小さいが、p値は有意水準を下回っている場合
    相関は存在すると考えられるが、関係の強さは弱いと解釈します。

  3. p値が有意水準を上回っている場合
    標本から得られた r の値は相関の無い変数の間からでもたまたま生じうる程度のものなので、相関関係があるかどうかはこのデータからは結論づけられないと解釈します。

使用するデータ

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

www.gis-py.com

相関関係を分析する属性

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

  • 築年数
  • 販売価格

実行環境

macOS 12.3.1
Python 3.9.6

サンプルコード

「築年数」「販売価格」の二変数に対して無相関検定を実施するサンプルです。

import pandas as pd
from scipy.stats import pearsonr

df = pd.read_csv("property.csv")

# 築年数と販売価格で無相関検定を実施
age_of_building = df["築年数"].values
price = df["販売価格"].values

#相関係数とp値を算出
res = pearsonr(age_of_building, price)
r_value = res[0]
p_value = res[1]

print('相関係数:', r_value)
print('p値:', p_value)

p値が有意水準(今回は0.05)を上回っているため、帰無仮説は棄却せずに二つの変数に相関関係があるかどうかはこのデータからは結論づけられないと言えるかと思います。

さいごに

最近は GIS ではなく統計に関するエントリーが増えてきてしまっていますが、GIS の世界でも統計的な処理をする機会は少なくないかと思います。興味のある方は相関分析など統計的な処理にチャレンジしてみてください。