[proDS] 가설검정 : 등분산 검정

Gammi·2022년 11월 25일
0

proDS

목록 보기
12/13

등분산 검정 종류


  • F 검정 : 두 집단 등분산 검정, 정규분포 따를 때 사용

  • Bartlett 검정 : 두 집단 이상 등분산 검정, 정규분포 따를 때 사용

  • Levene 검정 : 두 집단 이상 등분산 검정, 정규분포 따르지 않을 때 사용





F-검정 : f.cdf()


  • scipy의 f검정 실시할 때 사용

  • 근데 보통 집단이 두 개면 t-test 쓰지 f검정은 잘 안쓴대...

  • F 검정통계량 입력받아 P-value 산출

  • 입력값 : F검정통계량, 첫 번째 데이터 자유도, 두 번째 데이터 자유도


import pandas as pd
from scipy.stats import f
df = pd.read_csv("financial_info_10k_persons.csv")
df.head(2)

ser_M = df.loc[df["Gender"] == "M", "Period_m"]
ser_F = df.loc[df["Gender"] == "F", "Period_m"]
# 집단 두 개로 나눴음

F = ser_M.var() / ser_F.var()
# f는 분산으로 검정하니까 분산 구해야 함
# 두 집단의 분산비 구해야 함
F # 검정통계량

result = f.cdf(F, dfd = len(ser_M) -1 , dfn = len(ser_F))
p = (1-result)* 2
p # p-value 구하려면 이렇게 해야 함...





Bartlett 검정 : bartlett()


  • 분산 연산하기 위한 집단 함수에 입력

import pandas as pd
from scipy.stats import bartlett

bartlett(ser_F, ser_M)
# 앞에 검정통계량, 뒤에 p-value 훨씬 간편함!





Levene 검정 : levene()


  • 분산 연산하기 위한 집단 함수에 입력

import pandas as pd
from scipy.stats import levene
levene(ser_F, ser_M)
# 앞에 검정통계량, 뒤에 p-value





  1. 50, 60, 70대의 1회 평균 송금액의 분산을 비교 검정했을 때, 산출되는 p-value의 값은?
import pandas as pd
from scipy.stats import bartlett

df = pd.read_csv("financial_info_10k_persons.csv")
df["trans"] = df["Total_trans_amt"] / df["Total_trans_cnt"]
# 총 송금액에 총 송금 횟수 나눠서 1회 평균 송금액 계산

df["Age_g"] = df["Age"] // 10
# 나이 나누기 10해서 몫만 나오게 계산
# 파이썬은 / 하나 쓰면 그냥 나누고 // 두 개 써야 몫 알려주더라...

bartlett(df.loc[df["Age_g"] == 5, "trans"],
		 df.loc[df["Age_g"] == 6, "trans"],
         df.loc[df["Age_g"] == 7, "trans"],
		)
# 두 번째 값이 p-value
profile
개발자가 되었어요⭐️

0개의 댓글