카테고리 없음

TIL (8/2) 데이터 분석과 통계1

jojoon2786 2024. 8. 2. 18:11

1. 기술통계와 추론통계

1) 기술통계

  • 데이터를 요약하고 설명하는 통계 방법
  • 평균, 중앙값(median)*, 분산, 표준편차 등
  • 중앙값 : 데이터셋을 크기 순서대로 정렬했을 때, 중앙에 위치한 값
  • 분산 : 데이터 값들이 평균으로부터 얼마나 떨어져 있는가, 데이터의 흩어짐 정도

       ◎ 분산이 크다 --> 데이터가 넓게 퍼져있다.

       ◎ 분산이 작다 --> 데이터가 평균에 가깝게 모여있다.

       ◎ 데이터 값에서 평균을 뺀 값을 제곱한 후, 이를 모두 더하고 데이터의 개수로 나눠서 구함.

  • 표준편차 : 분산과 의미는 같음. 분산의 제곱근

데이터에 대한 대략적인 특징을 간단하고 쉽게 알 수 있음. 

단, 데이터 중 예외(이상치)라는게 항상 존재할 수 있고, 데이터의 모든 부분을 확인할 수 있는 것은 아님.

 

2) 추론통계

" 표본 데이터를 통해 모집단의 특성을 추정하고, 가설을 검정하는 통계 방법 "

주로 신뢰구간*, 가설검정* 등을 사용함.

즉, 데이터의 일부를 가지고 데이터의 전체를 추정하는 것이 핵심이다.

 

신뢰구간 (Confidence Interval)

" 모집단의 평균이 특정 범위 내에 있을 것이라는 확률 "

일반적으로 95% 신뢰구간이 사용되며, 이는 모집단 평균이 95% 확률로 이 구간 내에 있음을 의미.

 

가설검정 (Hypothesis Testing)

가설검정은 모집단에 대한 가설을 검증하기 위해 사용됨.

  • 귀무가설 : 검증하고자 하는 가설이 틀렸음을 나타내는 기본 가설 (변화가 없다, 효과가 없다 등)
  • 대립가설 : 주장하는 바를 나타냄 (변화가 있다, 효과가 있다 등)

p-value를 통해 귀무가설을 기각할 지 여부를 결정함.

 

튜터님의 말을 인용하자면

기술통계는 일단 데이터를 받으면 바로바로 해보면 좋다.

추론통계는 설문조사 등의 자료를 갖고 추론을 통한 검증의 반복

 

2. 다양한 분석방법

 

1) 위치추정

" 평균, 중앙값이 대표적인 위치 추정 방법임 "

ex) 학생들의 시험 점수에서 평균 점수, 중간 점수를 계산

 

data = [85, 90, 78, 92, 88, 76, 95, 89, 84, 91]
mean = np.mean(data)
median = np.median(data)

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

평균 구하기 : np.mean(data)

중앙값 구하기 : np.median(data)

 

2) 변이추정

" 데이터들이 서로 얼마나 다른 지 확인하는 방법 "

분산, 표준편차, 범위*(range) 등을 사용함.

범위 : 데이터셋에서 가장 큰 값과 가장 작은 값의 차이를 나타내는 간단한 분포의 측도

          데이터가 어느 정도의 변동성을 가지는 지 쉽게 파악할 수 있음.

          계산이 간단하여 기본적인 데이터 분석에서 자주 사용함.

 

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

print(f"분산: {variance}, 표준편차: {std_dev}, 범위: {data_range}")

 

3) 데이터 분포 탐색

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

히스토그램과 Box plot은 데이터의 분포를 시각적으로 표현하는 대표적인 방법임.

히스토그램
Box plot

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

" 데이터들이 서로 얼마나 다른 지 확인하는 방법 "

최빈값 (개수가 제일 많은 값)을 주로 사용함.

pie chart와 막대 그래프는 이진 데이터와 범주 데이터의 분포를 표현하는 대표적 방법입니다.

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

결과

5) 상관관계

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

상관계수는 두 변수 간의 관계를 측정하는 방법

상관계수를 계산해서 -1이나 1에 가까워지면 강력한 상관관계를 가짐.

-0.5나 0.5를 가지면 중간정도의 상관관계를 가짐.

0에 가까울 수록 상관관계가 없음.

 

ex) 공부 시간과 시험 점수 간의 상관관계를 분석

실행화면 캡처

 

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

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

상관관계는 두 변수 간의 관계를 나타내며, 인과관계는 한 변수가 다른 변수에 미치는 영향을 나타냄.

 

7) 두 개 이상의 변수 탐색

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

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

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

결과1
결과2

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

heat map