F 검정
: 두 집단 등분산 검정, 정규분포 따를 때 사용
Bartlett 검정
: 두 집단 이상 등분산 검정, 정규분포 따를 때 사용
Levene 검정
: 두 집단 이상 등분산 검정, 정규분포 따르지 않을 때 사용
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 구하려면 이렇게 해야 함...
import pandas as pd
from scipy.stats import bartlett
bartlett(ser_F, ser_M)
# 앞에 검정통계량, 뒤에 p-value 훨씬 간편함!
import pandas as pd
from scipy.stats import levene
levene(ser_F, ser_M)
# 앞에 검정통계량, 뒤에 p-value
- 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