주요함수
1. ttest_1samp
- 단일 표본 t검정 시 사용
- 모집단의 평균은 popmean 인자에 지정
2. ttest_rel()
- 대응 표본 t검정 시 사용
- 검정에 실시하는 두 변수를 차례대로 지정
3. ttest_ind()
- 독립 2 표본 t검정 시 사용
- 검정에 실시하는 두 변수를 차례대로 지정
- 등분산 가정을 만족하는 경우, eqaul_var 인자에 True를 할당
bike = pd.read_csv("bike.csv")
stat, p = ttest_1samp(bike["temp"], popmean = 20)
print(round(stat, 3))
print(round(p, 3))
bike = pd.read_csv("bike.csv")
bike["datetime"] = pd.to_datetime(bike["datetime"])
bike["year"] = bike["datetime"].dt.year
bike["month"] = bike["datetime"].dt.month
bike_sub = bike.loc[(bike["year"] == 2011) & (bike["month"] == 1), ]
stat, p = ttest_rel(bike_sub["casual"], bike_sub["registred"])
print(round(abs(stat, 3))
print(round(p, 3))
bike = pd.read_csv("bike.csv")
bike["datetime"] = pd.to_datetime(bike["datetime"])
bike["wday"] = bike["datetime"].dt.weekday
bike["weekend"] = (bike["wday"] >= 5) + 0 # 5이상이면 1, 아니면 0
stat, p = ttest_ind(bike.loc[bike["weekend"] == 1, "registered",
bike.loc[bike["weekend"] == 0, "registsred"])
print(round(abs(stat), 3))
print(round(p, 3))
주요함수
1. f_oneway()
- 일원 분산 분석 수행
- 입력은 각가의 집단을 pandas의 series로 하는 것 권장
- 출력은 검정통계량, p-value이며 튜플로 저장됨
2. ols(), anova_lm()
- statsmodels의 일원 분산 분석을 수행
- ols() 함수는 모델을 생성하고 적합
- anova_lm() 함수는 적합된 모델정보를 기반으로 일원 분산 분석표를 보여줌
- ols() 함수에 수식 입력 시 독립변수에 C() 함수 사용 권장
3. pairwise_tukeyhsd()
- 사후검정 실시
- 함수 내에 종속변수와 독립변수를 차례대로 선언
- 출력을 위해 print() 사용
- reject 변수의 True는 귀무가설을 기각하는 것
(1) ANOVA
(2) f_oneway
(3) ols
(4) statsmodels
df = pd.read_csv("bike.csv")
model = ols(formula = "temp ~ C(season)", data = bike).fit()
anova_lm(model)
df = pd.read_cvs("bike.csv")
df["datetime"] = pd.to_datetime[df["datetime"])
df["wday"] = df["datetime"].df.weekday
print(pairwise_tukeyhsd(df["registered"], df["wday"])) # False의 개수가 정답
주요함수
1. f_cdf()
- f 검정 실시 할 때 사용
- F 검정통계량을 입력받아 P-value를 산출
- 입력은 F 검정통계량, 첫 번째 데이터의 자유도, 두 번째 데이터의 자유도
- F-test : 두 집단의 등분산 검정을 실시하며 각 집단은 정규분포를 따를 때 사용
2. bartlett()
- 분산을 연산하기 위한 집단을 함수에 입력
- Bartlett's test : 두 집단 이상의 등분산 검정을 실시하며 각 집단은 정규분포를 따를 때 사용
3. levene()
- 분산을 연산하기 위한 집단을 함수에 입력
- Leven's test : 두 집단 이상의 등분산 검정을 실시하며 각 집단은 정규분포를 따를 필요가 없음
df = pd.read_csv("financial_info_10k_persons.csv")
df["trans_1_mean"] = df["Total_trans_amt"] / df["Total_trans_cnt"]
df_m = df.loc[df["Gender"] == "M", "trans_1_mean"]
df_f = df.loc[df["Gender"] == "F", "trans_1_mean"]
F = df_m.var() / df_f.var()
print(F)
df = pd.read_csv("financial_info_10k_persons.csv")
df["trans_1_mean"] = df["Total_trans_amt"] / df["Total_trans_cnt"]
df["Age_g"] = (df["Age"] // 10) * 10
bartlett(df.loc[df["Age_g"] == 50, "trans_1_mean",
df.loc[df["Age_g"] == 60, "trans_1_mean",
df.loc[df["Age_g"] == 70, "trans_1_mean")
df = pd.read_csv("financial_info_10k_persons.csv")
df["trans_1_mean"] = df["Total_trans_amt"] / df["Total_trans_cnt"]
df_m = df.loc[(df["Gender"] == "M") & (df["Dependent_cnt"] == 0), ]
df_m["Edu_level"].unique() # 몇 개의 값이 있는지 체크 - 7개
levene(df_m.loc[df_m["Edu_level"] == df_m["Edu_level"].unique()[0], "trans_1_mean"],
df_m.loc[df_m["Edu_level"] == df_m["Edu_level"].unique()[1], "trans_1_mean"],
df_m.loc[df_m["Edu_level"] == df_m["Edu_level"].unique()[2], "trans_1_mean"],
df_m.loc[df_m["Edu_level"] == df_m["Edu_level"].unique()[3], "trans_1_mean"],
df_m.loc[df_m["Edu_level"] == df_m["Edu_level"].unique()[4], "trans_1_mean"],
df_m.loc[df_m["Edu_level"] == df_m["Edu_level"].unique()[5], "trans_1_mean"],
df_m.loc[df_m["Edu_level"] == df_m["Edu_level"].unique()[6], "trans_1_mean"]))
주요함수
1. chi2_contingency
- scipy의 독립성 검정을 실시
- 입력은 두 개의 명목형 변수의 각 원소의 빈도
- 출력은 검정통계량, P-value, 자유도, 기대도수 4개의 연산 결과가 튜플로 산출
df = pd.read_csv("financial_info_10k_persons.csv")
df_high = df.loc[df["Edu_level"] == "High School", ]
chi2.contingency(pd.crosstab(df_high["Gender"], df_high["is_attrited"]), correction = False)
df = pd.read_csv("financial_info_10k_persons.csv")
stat, p, dof, e_val = chi2.contingency(pd.crosstab(df["Gender"], df["Card"]))
print(stat)
df = pd.read_csv("financial_info_10k_persons.csv")
df["is_inactive_last_12m"] = (df["inactive_last_!2m"] >= 3) + 0
chi2.contingency(pd.crosstab(df["is_inactive_last_12m"], df["is_attrited"]))