통계학 기초 1주차
1.1 데이터 분석에 있어서 통계가 중요한 이유
* 데이터를 분석하고 이를 바탕으로 결정을 내릴 수 있다.
통계는 데이터를 이해하고 해석하는 데 중요한 역할을 한다.
데이터를 요약하고 패턴을 발견할 수 있다.
추론을 통해 결론을 도출하는 과정을 돕는다.
데이터 기반의 의사결정을 내릴 수 있다.
결국 기업이 보다 현명한 결정을 내리고 수익을 창출하기 위해 필요하다.
* 실제로 통계가 어떻게 사용되어질까?
- 고객 만족도 설문조사 분석
설문 조사 중 고객의 불만 사항을 파악하고 이를 개선하는데 활용할 수 있다.
- 고객 유형별 세그먼트 상품 추천
고객을 유형별로 나누어 특징을 파악하고, 각 유형에 맞는 상품을 추천하는데 활용될 수 있다.
- 그 외 상황들
기업 전략 수립, 마케팅, 신제품 개발
1.2 기술통계와 추론통계
* 기술통계
데이터를 요약하고 설명하는 통계 방법
주로 평균, 중앙값, 분산, 표준편차 등을 사용한다.
즉, 데이터를 특정 대표값으로 요약
- 평균 Mean
데이터의 중앙값을 나타내는 값으로 모든 데이터를 더한 후 개수로 나누어 계산
일반적인 경향을 파악하는데 유용하다.
- 중앙값 Median
중앙값은 데이터셋을 크기 순서대로 정렬했을 때 중앙에 위치한 값
이는 이상치에 영향을 덜 받기 때문에 데이터의 중심 경향을 나타내는 또 다른 방법
- 분산 Variance
분산은 데이터의 값들이 평균으로부터 얼마나 떨어져 있는지를 타나내는 척도로, 데이터의 흩어짐 정도를 측정
분산이 크면 데이터가 넓게 퍼져 있고, 작으면 데이터가 평균에 가깝게 모여있음을 의미한다.
분산을 구하는 방법은 각 데이터 값에서 평균을 뺀 값을 제곱한 후, 이를 모두 더하고 데이터의 개수로 나누는 것
- 표준편차 Standard Deviation
표준편차는 데이터 값들이 평균에서 얼마나 떨어져 있는지를 나타내는 통계학적 척도. 분산의 제곱근을 취하여 계산
표준편차는 데이터의 변동성을 측정하며, 값이 클수록 데이터가 평균으로부터 더 넓게 퍼져 있음을 의미한다.
- 표준편차와 분산의 관계
동일하게 데이터의 변동성을 측정하는 두 가지 주요 척도
분산은 제곱 단위로 표현되지만 표준편차는 원래 데이터 값과 동일한 단위로 변환되어 직관적이다.
* 추론통계
표본 데이터를 통해 모집단의 특성을 추정하고 가설을 검정하는 통계 방법
주로 신뢰구간, 가설검정 등을 사용한다. 즉 데이터 일부를 가지고 전체를 추정하는 것이 핵심
- 신뢰구간 Confidence Interval
신뢰구간은 모집단의 평균이 특정 범위 내에 있을 것이라는 확률을 나타낸다.
일반적으로 95% 신뢰구간이 사용되며 이는 모집단 평균이 95% 확률로 이 구간 내에 있음을 의미한다.
- 가설검정 Hypotheisis Testing
가설검증은 모집단에 대한 가설을 검증하기 위해 사용된다.
귀무가설 H0 : 검증하고자 하는 가설이 틀렸음을 나타내는 기본 가설(변화가 없다, 효과가 없다 등)
대립가설 H1 : 귀무 가설의 반대 가설로 주장하는 바를 나타낸다.(변화가 있다, 효과가 있다 등)
p-value를 통해 귀무가설을 기각할지 여부를 결정한다.
1.3 다양한 분석 방법
* 위치추정
데이터의 중심을 확인하는 방법.
평균과 중앙값이 대표적인 위치 추정 방법이다.
코딩 전 라이브러리를 호출한 다음 진행하기
```python
# 데이터 분석에서 자주 사용되는 라이브러리
import pandas as pd
# 다양한 계산을 빠르게 수행하게 돕는 라이브러리
import numpy as np
# 시각화 라이브러리
import matplotlib.pyplot as plt
# 시각화 라이브러리2
import seaborn as sns
```
# 이 data는 아래에서도 계속 사용 됩니다
data = [85, 90, 78, 92, 88, 76, 95, 89, 84, 91]
mean = np.mean(data)
median = np.median(data)
print(f"평균: {mean}, 중앙값: {median}")
* 변이추정
데이터가 서로 얼마나 다른지 확인하는 방법
분산, 표준편차, 범위 등을 사용한다
- 범위
데이터셋에서 가장 큰 값과 가장 작은 값의 차이를 나타내는 간단한 분포의 측도
범위를 통해 데이터가 어느 정도의 변동성을 가지는지 쉽게 파악할 수 있다.
범위는 계산이 간단하여 기본적인 데이터 분석에서 자주 사용된다.
- 수식
범위(R) = 최대값 - 최소값
ex) 매출 데이터의 변이를 분석하여 비즈니스의 안전성을 평가
variance = np.var(data)
std_dev = np.std(data)
data_range = np.max(data) - np.min(data)
print(f"분산: {variance}, 표준편차: {std_dev}, 범위: {data_range}")
* 데이터의 분포 탐색
데이터의 값들이 어떻게 이루어져 있는지 확인하기
히스토그램과 상자 그림은 데이터의 분포를 시각적으로 표현하는 대표적인 방법
plt.hist(data, bins=5)
plt.title('histogram')
plt.show()
plt.boxplot(data)
plt.title('boxplot')
plt.show()
* 이진 데이터와 범주 데이터 탐색
데이터들이 서로 얼마나 다른지 확인하는 방법
최빈값(개수가 제일 많은 값)을 주로 사용
파이 그림과 막대 그래프는 이진 데이터와 범주 데이터의 분포를 표현하는 대표적인 방법
ex) 고객 만족도 설문에서 만족/불만족의 빈도 분석
막대그래프는 범주형, 히스토그램은 수치형(구간을 정하지 않으면 모호)에서 사용한다.
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()
* 상관관계
데이터들끼리 서로 관련이 있는지 확인하는 방법
상관계수는 두 변수 간의 관계를 측정하는 방법
상관계수를 계산해서 -1이나 1에 가까워지면 강력한 상관관계를 가진다.
-0.5나 0.5를 가지면 중간정도의 상관관계를 가진다.
0에 가까울수록 상관관계가 없다.
ex) 공부 시간과 시험 점수 간의 상관관계를 분석
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()
* 인과관계와 상관관계의 차이
인과관계는 원인, 결과가 분명해야 한다.
상관관계는 두 변수 간의 관계를 나타내며, 인과관계는 한 변수가 다른 변수에 미치는 영향을 나타낸다.
ex) 아이스크림 판매량과 익사 사고 수 간의 상관관계는 높지만 인과관계는 아니다.
* 두 개 이상의 변수 탐색
다변량 분석은 여러 변수 간의 관계를 분석하는 방법이다.
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()
pairplot 은 각각의 변수마다 보여준다. 대각선에는 히스토그램이 그려진다.
# heatmap까지 그린다면
sns.heatmap(df.corr())