๐Ÿ” ๋ฐ์ดํ„ฐ ๋ถ„์„/04. Data Analysis

[Python] ์ƒ๊ด€ ๊ด€๊ณ„ ๋ถ„์„

xod22 2022. 3. 17. 00:02
728x90
์ƒ๊ด€๊ด€๊ณ„

 

๋‘ ๊ฐœ ๊ทธ๋ฃน๊ฐ„์˜ ์ƒ๊ด€๊ด€๊ณ„๋ฅผ ๋ถ„์„ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์ด๋‹ค.

1. Pearson

2. Spearman

3. Kendall

ํฌ๊ฒŒ ์ด๋Ÿฌํ•œ ๋ฐฉ๋ฒ•์ด ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๊ณ , ์‹ค์Šต์œผ๋กœ ํ”ผ์–ด์Šจ, ์Šคํ”ผ์–ด๋งŒ ์ƒ๊ด€๊ณ„์ˆ˜ ๋ถ„์„์„ ํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค!

 

* ์ƒ๊ด€๊ด€๊ณ„๊ฐ€ ๋ฐ˜๋“œ์‹œ ์ธ๊ณผ๊ด€๊ณ„๋ฅผ ๋œปํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ์ƒ๊ด€๊ด€๊ณ„๊ฐ€ ์กด์žฌํ•˜๋”๋ผ๋„ ์•„๋ฌด๋Ÿฐ ์ธ๊ณผ๊ด€๊ณ„๊ฐ€ ์—†์„ ์ˆ˜๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•ด์„์— ์ฃผ์˜ํ•ด์•ผํ•œ๋‹ค..!

 

Pearson correlation(ํ”ผ์–ด์Šจ ์ƒ๊ด€๊ณ„์ˆ˜)

 

๋‘ ๋ณ€์ˆ˜ ๊ฐ„์˜ ์ƒ๊ด€๊ด€๊ณ„๋ฅผ ๊ตฌํ•  ๋•Œ ๊ฐ€์žฅ ๋งŽ์ด ํ™œ์šฉ๋˜๋Š” ๊ณต์‹์ด๋‹ค.

ํ•ด๋‹น ์ƒ๊ด€๊ณ„์ˆ˜๋Š” ๋‘ ๋ณ€์ˆ˜๊ฐ„ ์„ ํ˜•์ ์ธ ๊ด€๊ณ„๊ฐ€ ์žˆ๋Š”์ง€ ํŒ๋‹จํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.

ํ”ผ์–ด์Šจ ์ƒ๊ด€๊ณ„์ˆ˜๊ฐ€ 0์— ๊ฐ€๊นŒ์šด ์ˆ˜์น˜๋ฅผ ๋ณด์ด๋”๋ผ๋„ ์„ ํ˜•์ ์ธ ๊ด€๊ณ„๊ฐ€ ๋‚ฎ๋‹ค๋Š” ๊ฒƒ์ผ ๋ฟ ๋น„์„ ํ˜•์ ์ธ ๊ด€๊ณ„๋กœ ์œ ์˜๋ฏธํ•œ ๊ด€๋ จ์ด ์žˆ์„ ์ˆ˜๋„ ์žˆ๋‹ค. 

์ˆ˜์น˜๋Š” -1~1์˜ ๊ฐ’์„ ๊ฐ€์ง€๋ฉฐ -1์— ๊ฐ€๊นŒ์šธ ์ˆ˜๋ก ๋‘ ๋ณ€์ˆ˜๋Š” ์Œ์˜ ์„ ํ˜•์ ์ธ ์ƒ๊ด€๊ด€๊ณ„๋ฅผ ๊ฐ€์ง€๋ฉฐ 1์— ๊ฐ€๊นŒ์šธ ์ˆ˜๋ก ๋‘ ๋ณ€์ˆ˜๋Š” ์–‘์˜ ์„ ํ˜•์ ์ธ ์ƒ๊ด€๊ด€๊ณ„๋ฅผ ๊ฐ€์ง„๋‹ค.

 

H0 : ์ƒ๊ด€๊ณ„์ˆ˜๋Š” 0์ด๋‹ค.

H1 : ์ƒ๊ด€๊ณ„์ˆ˜๋Š” 0์ด ์•„๋‹ˆ๋‹ค.

 

Spearman correlation(์Šคํ”ผ์–ด๋งŒ ์ƒ๊ด€๊ณ„์ˆ˜)

 

์Šคํ”ผ์–ด๋งŒ ์ƒ๊ด€๊ณ„์ˆ˜๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ํ”ผ์–ด์Šจ ์ƒ๊ด€๊ณ„์ˆ˜์™€ ๊ฐ™์€ ์›๋ฆฌ๋กœ ์‚ฐ์ถœ๋œ๋‹ค. ํ”ผ์–ด์Šจ ์ƒ๊ด€๊ณ„์ˆ˜๋Š” ์› ๋ฐ์ดํ„ฐ ์ˆ˜์น˜๊ฐ’์„ ๊ทธ๋Œ€๋กœ ํ™œ์šฉํ•˜๋Š” ๋ฐ˜๋ฉด, ์Šคํ”ผ์–ด๋งŒ ์ƒ๊ด€๊ณ„์ˆ˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์ˆœ์„œํ†ต๊ณ„๋Ÿ‰ ๊ฐ’์„ ํ™œ์šฉํ•˜์—ฌ ์ˆœ์„œ๊ฐ’์˜ ํ”ผ์–ด์Šจ ์ƒ๊ด€๊ณ„์ˆ˜๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. 

 

์‹ค์Šต

 

1. ํŒจํ‚ค์ง€ ์ž„ํฌํŠธ

from scipy.stats import pearsonr
from scipy.stats import spearmanr

 

2. ๋ฐ์ดํ„ฐ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

from sklearn.datasets import load_iris
import pandas as pd
iris=load_iris()
iris_dataframe=pd.DataFrame(iris.data, columns=iris.feature_names)

 

3. ์ƒ๊ด€๊ด€๊ณ„

print(pearsonr(iris_dataframe['sepal width (cm)'], iris_dataframe['petal width (cm)']))
print(spearmanr(iris_dataframe['sepal width (cm)'], iris_dataframe['petal width (cm)']))

์ƒ๊ด€๊ด€๊ณ„ ๋ฐ p-value ๊ฐ’์„ ๋‚˜ํƒ€๋‚ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 

-ํ”ผ์–ด์Šจ

์ƒ๊ด€๊ด€๊ณ„ : -0.35, p-value : 0.00

=> ์•ฝํ•œ ์Œ์  ์ƒ๊ด€๊ด€๊ณ„๋ฅผ ๊ฐ€์ง€๋ฉฐ p-value๊ฐ€ 0.05๋ณด๋‹ค ์ž‘๊ธฐ ๋•Œ๋ฌธ์— ๊ท€๋ฌด๊ฐ€์„ค์„ ๊ธฐ๊ฐํ•˜์—ฌ ์ƒ๊ด€๊ณ„์ˆ˜๊ฐ€ 0์€ ์•„๋‹ˆ๋‹ค๋ผ๋Š” ๋Œ€๋ฆฝ๊ฐ€์„ค์ด ์ฑ„ํƒ๋œ๋‹ค.

 

-์Šคํ”ผ์–ด๋งŒ

์ƒ๊ด€๊ด€๊ณ„ : -0.29, p-value : 0.0

728x90