Today I Learned (TIL)/Python

[TIL] 통계학 기초 - 1주차

신짜린 2024. 8. 1. 13:25

1. 통계의 중요성

- 데이터를 분석하고 이를 바탕으로 결정을 내릴 수 있다.

 데이터 분석에서 통계는 데이터를 이해하고 해석하는 데 중요한 역할을 한다. 데이터를 요약하고 패턴을 발견하고 추론을 통해 결론을 도출화하는 과정을 돕는다. 기업에서는 보다 현명한 결정을 내리고 수익을 창출하기 위해 데이터 기반의 의사결정을 내린다.

- 실제 통계 사용

 1) 고객 만족도 설문조사

 2) 고객 유형별 세그먼트 상품 추천

 3) 기업 전략 수립

 4) 마케팅

 5) 신제품 개발

 

2. 기술통계

 데이터를 요약하고 설명하는 통계 방법이다. 주로 평균, 중앙값, 분산, 표준편차 등을 사용한다. 데이터를 특정 대표값으로 요약하여 데이터에 대한 대략적인 특징을 간단하고 쉽게 알 수 있다.

 회사의 매출 데이터를 요약하기 위해 평균 매출, 매출의 표준편차 등을 계산할 때 사용된다.

- 평균

 데이터의 중심을 나타내는 값으로 모든 데이터를 더한 후 데이터의 개수로 나누어 계산한다. 데이터의 일반적인 경향을 파악하는 데 유용하다.

- 중앙값

 데이터셋을 크기 순서대로 정렬했을 때 중앙에 위치한 값을 말한다. 이상치에 영향을 덜 받기 때문에 데이터의 중심 경향을 나타내는 또 다른 방법이다.

- 분산

 데이터 값들이 평균으로부터 얼마나 떨어져 있는지를 나타내는 척도로 데이터의 흩어짐 정도를 측정한다. 분산이 크면 데이터가 넓게 퍼져있고 작으면 평균에 가깝게 모여있다.

 분산은 각 데이터 값에서 평균을 뺀 값을 제곱한 후, 이를 모두 더하고 데이터의 개수로 나누어 계산한다.

 

- 표준편차

 데이터 값들이 평균에서 얼마나 떨어져 있는지를 나타내는 통계적 척도로 분산의 제곱근을 취해 계산한다. 표준편차는 데이터의 변동성을 측정하며 값이 클수록 데이터가 평균으로부터 넓게 퍼져있음을 의미한다.

 

- 표준편차와 분산의 관계

 분산과 표준편차는 동일하게 데이터의 변동성을 측정하는 두 가지 주요 척도이다. 두 개념은 밀접하게 연관되어 있으며 표준편차는 분산의 제곱근이다.

 분산은 데이터 값과 평균의 차이를 제곱하여 평균을 낸 값이기 때문에 제곱 단위로 표현되지만, 표준편차는 다시 제곱근을 취하여 원래 데이터 값과 동일한 단위로 변환한다.

 

3. 추론통계

 표본 데이터를 통해 모집단의 특성을 추정하고 가설을 검정하는 통계방법이다. 주로 신뢰구간, 가설검정 등을 사용한다. 데이터의 일부를 가지고 데이터 전체를 추정하는 것이 추론통계의 핵심이다.

 일부 고객의 설문조사를 통해 전체 고객의 만족도를 추정할 때 사용된다.

- 신뢰구간

 모집단의 평균이 특정 범위 내에 있을 것이라는 확률을 나타내며 일반적으로 95% 신회구간이 사용된다. 이는 모집단 평균이 95% 확률로 이 구간 내에 있음을 의미한다.

- 가설검정

 모집단에 대한 가설을 검증하기 위해 사용된다. 귀무가설과 대립가설을 세워 p-value를 통해 귀무가설을 기각할지의 여부를 결정한다.

 1) 귀무가설(H0): 검증하고자 하는 가설이 틀렸음을 나타내는 기본 가설(변화가 없다, 효과가 없다 등)

 2) 대립가설(H1): 내가 주장하는 바를 나타내는 가설(변화가 있다, 효과가 있다 등)

 ex) 새로운 교육 프로그램이 학생들의 성적에 영향을 미치는가?

       º 귀무가설: 프로그램이 성적에 영향을 미치지 않는다.

       º 대립가설: 프로그램이 성적에 영향을 미친다.

 

4. 다양한 분석 방법

- 위치추정

 대표적으로 평균, 중앙값이 대표적인 위치 추정 방법이다.

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

# 평균과 중앙값 구하기
data = [85, 90, 78, 92, 88, 76, 95, 89, 84, 91]
mean = np.mean(data)
median = np.median(data)

print(f"평균: {mean}, 중앙값: {median}")

 

- 변이추정

 데이터들이 서로 얼마나 다른지 확인하기 위해 분산, 표준편차, 범위 등을 사용한다.

 범위란 데이터 셋에서 가장 큰 값과 가장 작은 값의 차이를 나타내는 간단한 분포의 측도. 데이터의 변동성을 쉽게 파악할 수 있어 기본적인 데이터 분석에서 자주 사용

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()

 

- 이진 데이터와 범주 데이터 탐색

 데이터들이 서로 얼마나 다른지 확인하기 위해 최빈값을 주로 사용한다. 주로 파이그림과 막대 그래프를 이용하여 이진 데이터와 범주 데이터의 분포를 확인한다.

# 고객 만족도 설문에서 만족/불만족 빈도 분석
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에 가까울수록 상관관계가 없다.

 

# 공부 시간과 시험 점수 간의 상관관계 분석
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()

 

- 인과관계와 상관관계의 차이

 인과관계는 상관관계와 다르게 원인, 결과가 분명해야 한다. 상관관계는 두 변수 간의 관계를 나타내며, 인과관계는 한 변수가 다른 변수에 미치는 영향을 나타낸다.

 

- 두 개 이상의 변수 탐색

 다변량 분석은 여러 변수 간의 관계를 분석하는 방법이다.

# 여러 마케팅 채널의 광고비와 매출 간의 관계 분석
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())

'Today I Learned (TIL) > Python' 카테고리의 다른 글

[TIL] 통계학 기초 - 2주차(2)  (0) 2024.08.01
[TIL] 통계학 기초 - 2주차(1)  (1) 2024.08.01
[TIL] Python 베이직 - 5회차  (0) 2024.07.30
[TIL] Python 베이직 - 4회차  (0) 2024.07.25
[TIL] Python 베이직 - 3회차  (0) 2024.07.23