(기초통계 학습 내용은 도서 : Practical Statistics for Data Scientists 책을 참고하여 학습 후 내용을 정리한 포스팅입니다.)
데이터를 살펴보는 기초 단계중 하나는 각 feature(변수)의 대푯값을 구하는 것이다. 이는 곧 값이 어디쯤 위치하는지(중심경향성)를 나타내는 추정값이다.
# 적용 예시
from scipy import stats
df = pd.DataFrame({'House' :[1,2,51,52,53,54,55,99,100,50000],
'Car' : [0,0,1,1,1,1,1,1,1,3]})
df['House'].mean()
>>> 5046.7
trim_mean(df['House'],0.1)
>>> 58.25
# 아무렇게나 만든데이터이고 Car는 House가 낮으면 0 보통은1로하고 높은값은 3으로 만들었다
df = pd.DataFrame({'House' :[1,2,51,52,53,54,55,99,100,50000],
'Car' : [0,0,1,1,1,1,1,1,1,3]})
import numpy as np
np.average(df['House'], weights = df['Car']) # 가중평균구하기
>>> 15046.4
# 평균 : 5046.7/ 절사평균 : 58.25/ 가중평균 15046.4
실제우리는 데이터를 커스텀하여 가중치를 부여해주는 경우가 많다 따라서 numpy만을 사용하여 가중치를 컨트롤 하는방법을 알고있어야한다.
import numpy as np
values = np.array([10.0, 20.0, 30.0])
weights = np.full_like(values, 1/3)
print(f'weights : {weights}')
print('mean :',np.mean(values))
print('weights means :', np.dot(weights, values))
>>>
weights : [0.33333333 0.33333333 0.33333333]
mean : 20.0
weights means : 20.0
평균은 가중 합(값과 가중치 곱의 총합)으로 표현될 수 있다(이때는 모든 값의 가중치가 같다.). 하지만, 만약 가중치에 변형을 가하면 가중 평균이라는 개념이 된다. 동일한 가중치 대신에 가중 평균의 가중치는 직접 설정할 수 있다. 아래는 세 가지 값에 1/2, 1/4, 1/4이라는 가중치를 매긴다고 해보자. 무슨 의미일까?? 해당 가중치들은 첫 번째 옵션이 두 번째와 세 번째보다 두배 중요하다는 것이며, 두 번째와 세 번째의 가치는 동일하는 것을 의미한다. 또한 확률적 시나리오에서 보면 첫 번째 옵션의 발생 가능성이 다른 두 가지 옵션보다 두 배 높다는 것을 의미할 수도 있다. 이 두가지 해석을 가중치들을 단가나 수량에 적용했을 때와 결과가 비슷하다.
import numpy as np
values = np.array([10, 20, 30])
weights = np.array([.5, .25, .25])
np.dot(weights, values)
>>>
17.5
df = pd.DataFrame({'House' :[1,2,51,52,53,54,55,99,100,50000],
'Car' : [0,0,1,1,1,1,1,1,1,3]})
# 중간값
df['House'].median()
>>> 53.5
# 가중 중간값
import wquantiles
wquantiles.median(df['House'],weights = df['Car'])
>>> 76.99999999999999