통계

스파르타 통계학 기초 강의 정리 1

골드인생 2024. 8. 5. 16:17

●  기술통계 : 데이터를 특정 대표값(평균, 중앙값, 분산, 표준편차 등)으로 요약하고 설명하는 통계 방법

 - 분산 : 각 데이터 값에서 평균을 뺀 값(평균으로부터의 거리)을 제곱 후, 이 값들의 평균을 구한 값

 - 표준편차 : 분산의 제곱근(루트)

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

 - 신뢰구간 : 모집단의 평균이 특정 범위 내에 있을 것이라는 확률

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

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

  ▶ 대립가설(H1) : 검증하고자 하는 가설이 맞음을 나타내는 가설               > 변화 있음, 효과 있음

     >>>   p-value를 통해 귀무가설을 기각할지 여부를 결정(ex  0.05이하일 경우 귀무가설을 기각)

 

# 다양한 분석 방법

# 데이터 분석에서 자주 사용되는 라이브러리
import pandas as pd
# 다양한 계산을 빠르게 수행하게 돕는 라이브러리
import numpy as np
# 시각화 라이브러리
import matplotlib.pyplot as plt
# 시각화 라이브러리2
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}")

평균: 86.8, 중앙값: 88.5

 

■ 변이 추정(분산, 표준편차, 범위(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}")

분산: 33.36, 표준편차: 5.775811631277461, 범위: 19

 

데이터 분포 탐색(데이터를 한 눈에 보기 - 히스토그램, 상자 그림(Box plot))

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

 

상관관계 : 데이터들끼리 서로 관련이 있는지

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

 

공부 시간과 시험 점수 간의 상관계수: 1.0

 

다변량 분석 : 여러 변수 간의 관계를 분석

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

               TV         Radio  Newspaper   Sales
TV         1.000000   -0.478276  0.285756   0.857632
Radio     -0.478276   1.000000   0.166737   0.035758
Newspaper  0.285756   0.166737   1.000000   0.362066
Sales      0.857632   0.035758   0.362066   1.000000