본문 바로가기

데이터

[빅분기]빅데이터분석기사 실기 작업형 3유형 코드, 내용 정리

 

 

작업형 3유형

평균 추출

sample_array.mean()
import numpy as np
np.mean(sample_array)

알아야하는 파이썬 내장 함수

  • round(숫자, 자릿수) : 소수점을 포함하는 숫자를 자릿수만큼까지 표현하고 그 이후는 반올림
  • math.floor(숫자) : 소수점 이하는 버림 (import math로 모듈 import 후 사용)

가설검정

  • 평균의 차이를 검정 → T-test
  • 분산의 차이를 검정 → F-test
  • 관측도수(이론적 비율과 실제 비율의 차이) 검정 → 카이제곱 검정(적합도 검정)
  • 두 범주형 변수가 서로 영향이 있는 지 검정 → 카이제곱 검정(독립성 검정)

라이브러리 import

import scipy.stats as stats

단일표본 T-test

  • 한 표본집단의 평균이 모평균과 같은 지 검정
    • 본래 정규성 검정이 선행되어야 하나, 문제에서 정규성 검정을 가정함
    • 만일 정규성 검정이 가정되지 않는다면 Shapiro-wilk등 정규성 검정이 선행되어야함
  • 귀무가설 : 모평균과 표본 평균은 같다
  • 대립가설 : 모평균과 표본 평균은 다르다 → 양측검정
  • 파라미터 : 검정하고자 하는 배열, 모평균을 입력
    • ttest_1samp(배열, 평균)
  • 다음과 같은 데이터 프레임 a가 있을 때 ‘Height’의 평균이 75인지 검정
    • 예시
  •  

 

독립표본 T-test

  • 두 모집단으로부터의 표본 평균이 같은 지 검정
  • 귀무가설 : 두 모집단의 표본 평균은 같다
  • 대립가설 : 두 모집단의 표본 평균은 다르다.
  • 파라비터 : 두 표본 집단을 파라미터로 입력한다
  • 두 모집단의 분산이 같다고 가정한다(등분산성), 만약 두 집단의 등분산성이 다르다면 파라미터로 equal_var=False를 입력해준다. default = True
    • toothgrowth 데이터 : 투여한 약제(VC : 아스코르브산, OJ : 오렌지주스)에 따라 치아 성장에 차이가 있는지 검정
    • 예시

# supp 컬럼의 값을 VC를 가지는 데이터 프레임, OJ를 가지는 데이터 프레임으로 구분
VC_a = tooth_df[tooth_df.supp == 'VC']
OJ_a = tooth_df[tooth_df.supp == 'OJ']

t_score, p_value = stats.ttest_ind(VC_a['len'], OJ_a['len'], equal_var=True)

print('검정 통계랑 :', round(t_score, 3) )
print('p-value :', round(p_value, 3))
# 등분산성 가정이 성립하지 않는 경우 equal_var=False 파라미터 설정

검정 통계랑 : -1.915

p-value : 0.06

if p_value < 0.05:
  print('기각')
else:
  print('채택')

채택

 

쌍체표본 T-test

  • paired two test
  • 한 집단에 실험을 거쳐서 실험 전과 후의 차이를 검정
  • 귀무가설 : 두 표본 평균의 차이는 없다
  • 대립가설 : 두 표본 평균의 차이가 있다.
  • 파라미터 중 alternative 파라미터를 확인 후 사용하기
    • 증명하고자 하는 대립가설에 따라 파라미터 선택이 달라짐
    • ‘two-sided’: 두 표본 분포의 평균이 같지 않다
    • ‘less’: 첫번째 표본의 평균이 두번째 표본의 평균보다 작다
    • ‘greater’: 첫번째 표본의 평균이 두번째 표본의 평균보다 크다
  • 예시
  •  

insect['after-before'] = insect['after_spr'] - insect['before_spr']
# 두 평균의 차이를 나타내는 새로운 컬럼 생성
print(insect['after-before'].mean())

t_score, p_value = stats.ttest_rel(insect['before_spr'], insect['after_spr'], alternative='greater')
# alternative : 'two-sided', 'less', 'greater'
# 대립가설 : 효과가 있다 -> 첫번째 샘플이, 두번째 샘플보다 값이 크다 -> greater 사용

print(round(t_score, 2))
print(round(p_value, 4))

14.89

0.0

일원분산분석(One-way ANOVA)

  • 두 모분산의 비율을 검정
  • 귀무가설 : 두 모집단의 분산은 같다.
  • 대립가설 : 두 모집단의 분산은 다르다.
  • F 검정을 시행
  • 예시
    • species별 sepal_width에 대한 분산 분석

X1 = a.loc[a['species'] == 'versicolor', 'sepal_width']
X2 = a.loc[a['species'] == 'setosa', 'sepal_width']
X3 = a.loc[a['species'] == 'virginica', 'sepal_width']

score, p_value = stats.f_oneway(X1, X2, X3)

print(round(score, 2))
print(round(p_value, 4))

# >>> 49.16 
# >>> 0.0

 

카이제곱검정(적합도검정)

  • 어떤 실험에서 관측 도수가 우리가 가정하는 이론상의 분포를 잘 따른다는 귀무가설을 검정
  • 귀무가설 : ~집단은 ~한 분포를 따른다
  • 대립가설 : ~집단은 ~한 분포를 따르지 않는다.
  • 예시

# 제조사별 갯수를 담는 데이터 프레임 생성
count_df = a.groupby('제조사').count()

# 제조사별 비율이 0.1, 0.6, 0.3이라 가정
total_sum = len(a)
expected = [int(total_sum * per) for per in [0.1, 0.6, 0.3]]
# >>> [20, 120, 60] 기대도수는 각 20개, 120개, 60개 이다

statistic, p_value = stats.chisquare(count_df['id'], f_exp=expected)
# 파라미터로 관측도수, f_exp=기대도수 입력

print(round(statistic, 2))
print(round(p_value, 4))

16.73

0.0002

 

 

카이제곱검정(독립성 검정)

  • 두 범주형 변수에 사용
  • 두 특성이 서로 독립인지 검정. 한 특성이 다른 특성에 영향을 미치는 지 여부에 대해 검정
  • 귀무가설 : 두 변수는 서로 독립이다.(한가지 특성이 다른 특성에 영향을 주지 않는다)
  • 대립가설 : 두 변수는 독립이 아니다
    • 예시
  •  

  • pd.crosstab 함수로 분할표를 쉽게 만들 수 있음
  • table = pd.crosstab(data['단과대학'], data['수강 과목 수'])

 

table = pd.crosstab(data['단과대학'], data['수강 과목 수'])

X1 = table.loc['경영대학', :]
X2 = table.loc['공과대학', :]
X3 = table.loc['자연대학', :]

result = stats.chi2_contingency([X1, X2, X3])

print(round(result.statistic, 2))
print(round(result.pvalue, 4))

30.13

0.0


공부한 내용을 정리한 글이나, 아직 공부할 내용이 많은 사람이기에 틀린 내용이 있을 수 있습니다. 틀린 부분에 대해 말씀해주시면 고치도록 하겠습니다. 감사합니다^^

 

 

본 게시글은 예문에듀 빅데이터분석기사 실기 한권완성 파이썬 교재를 보고 정리한 글입니다.

https://product.kyobobook.co.kr/detail/S000202026988

 

빅데이터분석기사 실기 한권완성 파이썬(Python)(2023) | 최예신 - 교보문고

빅데이터분석기사 실기 한권완성 파이썬(Python)(2023) | 1. 빅데이터분석기사 실기시험 합격을 위한 최고의 대비서현업 데이터사이언티스트의 모든 노하우를 담아낸 완벽 대비서2. 시험 유형 변경

product.kyobobook.co.kr

 

본 게시글에 사용한 데이터는 github에서 다운받으실 수 있으며, datasets/supplement에서 확인 가능합니다.

!git clone https://github.com/AnalyticsKnight/yemoonsaBigdata