두 변수의 선형 관계 확인
상관계수가 1에 가까울수록 선형관계가 강함
-> 상관계수가 0일 경우 선형관계 없다고 봄!
(그렇다고 두 개가 완전히 관계가 없는 건 아님! 그냥 선형관계만 아닌 거...)
pandas 객체에서 상관계수를 출력해내는 메서드
파라미터 값으로 pearson
, kendall
, spearman
줄 수 있음
-> 기본값은 pearson
-> 특별한 일 없으면 기본으로 출력해도 되는 것 같음!
- 기온, 체감온도, 상대습도, 총 자전거 대여 숫자의 상관관계를 분석하였을 때 가장 낮은 상관계수는 얼마인가?
⭐ 입력
import pandas as pd
# 상관계수는 pandas 객체의 메서드 활용하기 때문에
# 다른 라이브러리 안 불러와도 됨
bike = pd.read_csv("bike.csv")
bike[["temp", "atemp", "humidity", "casual"]].corr()
# 하면 상관계수 출력되는데
# 문제 보기에 소수점 둘째자리까지만 나와있어서
bike[["temp", "atemp", "humidity", "casual"]].corr().round(2)
# 나도 소수점 둘째자리까지 출력!
📌 출력
여기서 제일 작은 숫자는 -0.35니까
가장 낮은 상관계수는 -0.35
- 계절별로 체감온도와 자전거 대여 숫자의 상관관계를 알아보고자 한다. 이 때 적절한 상관분석기법을 사용하였을 때 상관계수로 옳은 것은?
⭐ 입력
import pandas as pd
# 얘도 corr() 메서드만 이용함
bike = pd.read_csv("bike.csv")
bike[["season", "atemp", "casual"]].groupby("season").corr().round(3)
# ~별로 나오면 groupby 함수 쓰기!
📌 출력
뭐야 왜 두 줄로 나와 싶은데 잘 보면 숫자 똑같음
좀 더 깔끔하게 보려면 후처리 해주면 되는데 나는 그것까지는 무리인 것 같아...
이렇게 해도 문제는 풀 수 있으니까...ㅠ
- 날씨에 따른 기온과 자전거 대여의 상관계수 변화를 알아보고자 한다. 날씨가 맑은 날과 그렇지 않은 날의 상관계수 차이의 절대값은 얼마인가?
import pandas as pd
bike = pd.read_csv("bike.csv")
bike["sunny"] = (bike["weather"] == 1) +0
# weather 변수에 1이 있을 경우 1을 넣고 아니면 0 값을 넣는 새로운 변수 만듦
bike_corr = bike.groupby("sunny")[["temp", "casual"]].corr
# groupby 함수를 사용해서 sunny랑 묶고 상관계수 출력
bike_corr.iloc[1, 0] - bike_corr.iloc[3, 0]
# iloc로 배열에서 값을 꺼내주면 되는데
# 글자 있는 건 다 인덱스라서 숫자만 0, 1, 2, 3 / 0, 1이라고 보면 됨
abs(bike_corr.iloc[1, 0] - bike_corr.iloc[3, 0])
# abs() 메서드 이용해서 절대값 구하기
round(abs(bike_corr.iloc[1, 0] - bike_corr.iloc[3, 0]), 3)
# 문제 보기에 소수점 셋째자리까지 나와있어서 맞춰줬음
Pearson 상관 분석 실시하는 scipy의 메서드
상관계수와 p-value 차례대로 출력함
import pandas as pd
form scipy.stats import pearsonr
bike = pd.read_csv("bike.csv")
stat, p = pearsonr(bike["casual"], bike["registered"])
print(stat) # 상관계수
print(p) # p-value