일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- ML
- Eda
- kaggle
- cnn
- 하둡
- 에이블스쿨
- python
- kt aivle school
- 하계인턴
- 딥러닝
- ggplot2
- 에트리 인턴
- 한국전자통신연구원 인턴
- 에이블러
- Ai
- 웹크롤링
- KT AIVLE
- 빅데이터분석기사
- arima
- 소셜네트워크분석
- httr
- matplot
- 시각화
- 기계학습
- 빅분기
- dx
- 프로그래머스
- 서평
- 다변량분석
- KT 에이블스쿨
- 지도학습
- SQLD
- ETRI
- r
- 한국전자통신연구원
- 가나다영
- hadoop
- 머신러닝
- SQL
- 시계열
Archives
- Today
- Total
소품집
[빅분기] 빅데이터분석기사 작업형 3유형 문제 풀어보기 본문
728x90
t-test
- 단일표본 t-검정
from scipy.stats import ttest_1samp
# 귀무가설 : 평균키는 165이다
# 대립가설 : 평균키는 165가 아니다
# 1. 정규성을 만족하는가?
# 2. ttest_1samp
shapiros, p = shapiro(df)
print(p) # 정규성을 갖지 않음!
s, p, _ = ttest_1samp(df['height'], 165)
print(p)
# p-value는 0.0001로 대립가설을 채택한다.
#따라서 평균키는 165가 아니다.
2. 대응(쌍체) 표본 t-검정
from scipy.stats import ttest_rel
# 귀무가설: 혈류량의 변화가 있다
# 대립가설 : 혈류량의 변화가 없다
# 1. 정규성을 만족하는가? shapiro
# 2. ttest_rel
df = pd.read_csv('https://raw.githubusercontent.com/Datamanim/datarepo/main/scipy/rel2.csv')
df.head()
print(shapiro(df['before'])) # 정규성을 갖지 않는다
print(shapiro(df['after'])) # 정규성을 갖지 않는다
# 양측검정
ttest_rel(df['before'], df['after'])
# 유의수준 0.05에서 p-value는 0.011로 귀무가설을 기각한다.
# 따라서 혈류량의 변화가 없다.
# 우측검정? 좌측검정? -> 후, 전, alternative
# sample data
bef = np.array([51.4, 52.0, 45.5, 54.5, 52.3, 50.9, 52.7, 50.3, 53.8, 53.1])
aft = np.array([50.1, 51.5, 45.9, 53.1, 51.8, 50.3, 52.0, 49.9, 52.5, 53.0])
# 귀무가설 : 신약 효과가 있다
# 대립가설 : 신약을 먹기 전보다 신약을 먹은 후에 혈당이 떨어진다.
ttest_rel(aft, bef, alternative='less')
3. 독립표본 t-검정
from scipy.stats import shapiro, ttest_ind
# 귀무가설 : 두 집단의 시험 평균은 동일하다
# 대립가설 : 두 집단의 시험 평균은 동일하지 않다.
# 1. 정규성을 만족하는가? shapiro
# 2. ttest_ind
df = pd.read_csv('https://raw.githubusercontent.com/Datamanim/datarepo/main/scipy/scipy5.csv')
df.head()
print(shapiro(df['A'])) # 정규성 만족
print(shapiro(df['B'].dropna())) # 정규성 만족
ttest_ind(df['A'], df['B'].dropna())
# 유의수준 0.05에서 p-value는 0.947로 귀무가설을 기각할 수 없다.
# 따라서 두 학습의 시험 평균은 동일하다.
# 귀무가설 : 두 그룹의 평균은 동일하다
# 대립가설 : 두 그룹의 평균은 동일하지 않다.
df = pd.read_csv('https://raw.githubusercontent.com/Datamanim/datarepo/main/scipy/ind3.csv')
df.head()
a = df[df['group']=='a']['data']
b = df[df['group']=='b']['data']
print(shapiro(a)) # 정규성을 만족하지 않음
print(shapiro(b)) # 정규성을 만족하지 않음
ttest_ind(a, b)
# 유의수준 0.05에서 p-value는 0.04로 귀무가설을 기각한다.
# 따라서 두 그룹의 평균을 동일하지 않다.
정규성 검정
from scipy.stats import shapiro
shapiro(case1, case2)
등분산 검정
from scipy.stats import levene
# 두 개 학습의 시험성적에 대한 데이터이다. 그룹간 등분산 검정을 시행하라
df = pd.read_csv('https://raw.githubusercontent.com/Datamanim/datarepo/main/scipy/scipy2.csv')
A = df[df['class]=='A']['score']
B = df[df['class]=='B']['score']
s, p = levene(A, B)
print(p) # 유의수준 0.05에서 p-value는 0.5로 귀무가설을 채택한다.
# 두 개 학습의 시험성적에 대한 데이터이다. 그룹간 등분산 검정을 시행하라
A = df[df['class']=='A']['score']
B = df[df['class']=='B']['score']
s, p = levene(A, B)
print(p) # 유의수준 0.05에서 p-value는 0.03으로 귀무가설을 기각한다.
ANOVA
- One-Way ANOVA
- Two-Way ANOVA
from scipy.stats import f_oneway
# 귀무가설 : 세 집단의 평균은 같다.
# 대립가설 : 세 집단의 평균은 같지 않다. (적어도 한 개 집단의 평균은 같지 않다.)
import numpy as np
import pandas as pd
from scipy.stats import f_oneway
np.random.seed(1004)
data1 = np.random.normal(0, 1, 50)
data2 = np.random.normal(0, 1, 40)
data3 = np.random.normal(5, 1, 30) # different mean
data123 = [data1, data2, data3]
s, p = f_oneway(data1, data2, data3)
print(s, p)
카이제곱 검정 (교차 분석)
- Chisquare : 한 개의 요인에 의해 k개의 범주를 가질 때 이론적 분포를 따르는지 검정 (class-int)
- Chi2_contigency : 모집단이 두 개의 변수에 의해 범주화 되었을 때, 두 변수들 사이의 관계가 독립인지 아닌지 검정 (class-class)
# 주사위를 144번 던졌을 때, 각 눈금별로 나온 횟수이다. 이 데이터는 주사위의 분포에서 나올 가능성이 있는지 검정하라
# 귀무가설 : 주사위 눈금 발생 확률은 1/6이다.
# 대립가설 : 주사위 눈금 발생 확률은 1/6이 아니다.
df = pd.read_csv('https://raw.githubusercontent.com/Datamanim/datarepo/main/scipy/dice.csv')
df['expected'] = (df['counts'].sum()/6).astype(int)
s, p = chisquare(df['counts'], df['expected'])
print(p)
# 유의수준 0.05에서 p-value는 0.801로 귀무가설을 기각할 수 없다.
# 따라서 주사위 눈금 발생 확률은 1/6로 동일하다.
# 다음 데이터는 어떤 집단의 왼손잡이, 오른손 잡이의 숫자를 나타낸다.
# 인간의 왼손잡이와 오른손잡이의 비율을 0.2:0.8로 알려져있다. 이 집단에서 왼손과 오른손 잡이의 비율이 적합한지 검정하라
# 귀무가설 : 왼손과 오른손 잡이의 비율이 적합하다
# 대립가설 : 왼손과 오른손 잡이의 비율이 적합하지 않다
import pandas as pd
from scipy.stats import chisquare
df = pd.read_csv('https://raw.githubusercontent.com/Datamanim/datarepo/main/scipy/hands2.csv')
df_2 = df['hands'].value_counts().to_frame()
df_2['expected'] = (df_2['hands'].sum()*0.8, df_2['hands'].sum()*0.2)
df_2
chisquare(df_2['hands'], df_2['expected'])
# 유의수준 0.05에서 p-value는 0.02로 귀무가설을 기각한다.
# 따라서 왼손과 오른손 잡이의 비율은 적합하지 않다.
# 다음 데이터는 국민 기초체력을 조사한 데이터이다. 성별과 등급이 독립적인지 검정하라
# 귀무가설 : 성별과 등급은 독립이다
# 대립가설 : 성별과 등급은 독립이 아니다
from scipy.stats import chi2_contingency
df = pd.read_csv('https://raw.githubusercontent.com/Datamanim/datarepo/main/body/body.csv')
crosstab = pd.crosstab(df['측정회원성별'], df['등급'])
s, p, _, _ = chi2_contingency(crosstab)
print(p)
# 유의수준 0.05에서 p-value는 0에 가까운 수치로 귀무가설을 기각한다.
# 따라서 성별과 등급은 독립이 아니다.
df = pd.read_csv('https://raw.githubusercontent.com/Datamanim/datarepo/main/scipy/fe2.csv',index_col=0)
crosstab = df.iloc[0:2, 0:2]
s, p, _, _ = chi2_contingency(crosstab)
print(p)
728x90
'자격증 > 빅데이터분석기사' 카테고리의 다른 글
[빅분기] 빅데이터분석기사 7회차 문제 및 후기 (2) | 2023.12.02 |
---|---|
[빅분기] 빅데이터분석기사 작업형 2유형 연습 문제 풀어보기 (0) | 2023.11.21 |
[빅분기] 빅데이터분석기사 작업형 1유형 100문제 풀어보기 (0) | 2023.11.15 |
Comments