노력에는 지름길이 없으니까요

1.3 다양한 분석 방법 본문

통계학

1.3 다양한 분석 방법

데건 2024. 8. 1. 14:15
728x90

1) 위치추정

데이터의 중심을 파악하는 대표적인 방법 : 중앙값, 평균

mean = np.mean(data)
median = np.median(data)

 

 

2) 변이추정

데이터들이 서로 얼마나 다른지 확인하는 방법 : 분산, 표준편차, 범위

ex) 매출 데이터의 변이를 분석하여 비즈니스의 안정성을 평가

범위(Range)란?

가장 큰 값과 가장 작은 값의 차이가 어느 정도 되는가?

범위를 통해 데이터가 어느 정도의 변동성을 가지는지 쉽게 파악할 수 있다.

variance = np.var(data)
std_dev = np.std(data)
data_range = np.max(data) - np.min(data)

 

 

3) 데이터 분포 탐색

데이터의 값들이 어떻게 이루어져 있는지 한눈에 확인하기

plt.hist(data, bins=5)
plt.title('histogram')
plt.show()

plt.boxplot(data)
plt.title('boxplot')
plt.show()

 

 

4) 이진 데이터와 범주 데이터 탐색

데이터들이 서로 얼마나 다른지 확인하는 방법 : 최빈값(개수가 제일 많은 값)

- 파이그림과 막대 그래프는 이진 데이터와 범주 데이터의 분포를 표현하는 대표적 방법입니다.
- ex) 고객 만족도 설문에서 만족/불만족의 빈도 분석

 

히스토그램과 막대 그래프의 차이?

막대 그래프는 범주 데이터에서 사용되고, 히스토그램은 수치 데이터에서 사용

수치 데이터에 대해서는 구간을 정해줘야 함 -> 히스토그램에서 bins를 제시하여 그래프를 그려서 확인

막대 그래프 -> 각 범주에 대한 count를 쌓으면 끝!

 

satisfaction = ['satisfaction', 'satisfaction', 'dissatisfaction', 
'satisfaction', 'dissatisfaction', 'satisfaction', 'satisfaction', 
'dissatisfaction', 'satisfaction', 'dissatisfaction']
satisfaction_counts = pd.Series(satisfaction).value_counts()

satisfaction_counts.plot(kind='bar')
plt.title('satisfaction distribution')
plt.show()

각각의 결과에 대한 카운트만 쌓아두면 됨!

5) 상관관계

데이터들끼리 서로 관련이 있는지 확인하는 방법

상관계수는 두 변수 간의 관계를 측정하는 방법입니다.

- 상관계수를 계산해서 -1이나 1에 가까워지면 강력한 상관관계를 가집니다.
- -0.5나 0.5를 가지면 중간정도의 상관관계를 가집니다.
- 0에 가까울 수록 상관관계가 없습니다.

양의 방향 (증가와 증가) / 음의 방향 (증가와 감소)

 

study_hours = [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
exam_scores = [95, 90, 85, 80, 75, 70, 65, 60, 55, 50]
correlation = np.corrcoef(study_hours, exam_scores)[0, 1]

print(f"공부 시간과 시험 점수 간의 상관계수: {correlation}")

plt.scatter(study_hours, exam_scores)
plt.show()

 

6) 상관관계와 인과관계의 차이

인과관계는 상관관계와는 다르게 원인, 결과가 분명해야 함!

상관관계는 두 변수 간의 관계를 나타내며 (서로 관련 있다 까지),

인과관계는 한 변수가 다른 변수에 미치는 영향을 나타냅니다. (원인과 결과가 분명함)
- ex) 아이스크림 판매량과 익사 사고 수 간의 상관관계는 높지만, 인과관계는 아님.

 

 

7) 여러 데이터들끼리 서로 관련이 있는지 확인

- 다변량 분석은 여러 변수 간의 관계를 분석하는 방법입니다.
- ex) 여러 마케팅 채널의 광고비와 매출 간의 관계 분석

 

data = {'TV': [230.1, 44.5, 17.2, 151.5, 180.8],
        'Radio': [37.8, 39.3, 45.9, 41.3, 10.8],
        'Newspaper': [69.2, 45.1, 69.3, 58.5, 58.4],
        'Sales': [22.1, 10.4, 9.3, 18.5, 12.9]}
df = pd.DataFrame(data)

sns.pairplot(df)
plt.show()

df.corr()

# heatmap까지 그린다면
sns.heatmap(df.corr())

 

728x90
반응형