[TIL] 21.05.13 t-test
1.str.contains()の使用とstr.replace()の使用
貴務仮説を「誤り」と判断し、これに基づいて貴務仮説を却下することができる.
対立仮定ソウル市の違いは、ポプラの平均数が400本ではないことだ.
採用可能.
Two-Sample test
H0=μ1=μ2H0=μ1=μ2H0=μ1=μ2
H1=μ1≠μ2H1=μ1\not=μ2H1=μ1=μ2
貴無仮説
ケヤキと桜の平均数は同じはずです.(違いはありません)
対立仮説.
ケヤキと桜の平均数が違います.
Two-Sample One-tailed test
# ',' 가 들어있는지 확인
epop_trees_df['이팝나무'].str.contains(',').sum()
# out
# 6
#
pd.str.replace()をto numeric()に使用する# ',' 지우고 숫자형으로 변환
epop_trees_df['이팝나무'] = pd.to_numeric(epop_trees_df['이팝나무'].str.replace(',', ''))
epop_trees_df.dtypes
# out
# 이팝나무 int64
#
2.scipyのstats t-testfrom scipy import stats
epop_trees_df.mean()[0]
# 688.64
# 서울시의 구별 평균 이팝나무의 수가 400개일 것이다는 것에 대한 가설검정
ttest_epoptrees = stats.ttest_1samp(epop_trees_df, popmean=400)
ttest_epoptrees
# out
# Ttest_1sampResult(statistic=array([3.38092056]), pvalue=array([0.00247071]))
#
P-valueは0.002470...したがって0.05未満である.貴務仮説を「誤り」と判断し、これに基づいて貴務仮説を却下することができる.
対立仮定ソウル市の違いは、ポプラの平均数が400本ではないことだ.
採用可能.
Two-Sample test
# 서울시 가로수 데이터에서 느티나무(Zelkova tree),
# 왕벚나무(Yoshino_cherry_tree) 데이터만 추리기
zelkova_trees_df = pd.DataFrame(new_trees_df['느티나무'])
yoshino_cherry_trees_df = pd.DataFrame(new_trees_df['왕벚나무'])
print(zelkova_trees_df.head())
print(yoshino_cherry_trees_df.head())
# out
# 느티나무
# 1 619
# 2 460
# 3 373
# 4 1,975
# 5 1,057
# 왕벚나무
# 1 421
# 2 289
# 3 262
# 4 602
# 5 940
# 느티나무, 왕벚나무 데이터 숫자형 변환
zelkova_trees_df['느티나무'] = pd.to_numeric(zelkova_trees_df['느티나무'].str.replace(',', ''))
yoshino_cherry_trees_df['왕벚나무'] = pd.to_numeric(yoshino_cherry_trees_df['왕벚나무'].str.replace(',', ''))
print(zelkova_trees_df.dtypes)
print(yoshino_cherry_trees_df.dtypes)
# out
# 느티나무 int64
# dtype: object
# 왕벚나무 int64
# dtype: object
# 가설검정 테스트 전 평균 확인
print(zelkova_trees_df.mean(), yoshino_cherry_trees_df.mean())
# out
# 느티나무 1415.12
# dtype: float64 왕벚나무 1292.0
# dtype: float64
ケヤキと桜の平均データの仮定検査H0=μ1=μ2H0=μ1=μ2H0=μ1=μ2
H1=μ1≠μ2H1=μ1\not=μ2H1=μ1=μ2
貴無仮説
ケヤキと桜の平均数は同じはずです.(違いはありません)
対立仮説.
ケヤキと桜の平均数が違います.
t_samp_o_tail_ttest = stats.ttest_ind(zelkova_trees_df, yoshino_cherry_trees_df)
t_samp_o_tail_ttest
# out
# Ttest_indResult(statistic=array([0.4629256]), pvalue=array([0.64550969]))
ケヤキと桜の木のP-valueは0.64550...したがって,貴無仮定が正しい確率が50%以上で異なるとは断定できない.しかしt-statisticsの値は0.4629です...従って、一定の誤差があると判断できる.結局、高い仮定は信用できない.Two-Sample One-tailed test
# one side tailed 계산
# one side tailed 일 경우 p-value 값을 2로 나누어 주어야 한다.
# 95% 신뢰도를 기준으로 유의수준(alpha) = 0.05
# 만약 귀무가설을 기각하고 왕벚나무의 평균이 느티나무보다 크다면 P-value / 2 < alpha & t_statistics < 0
# 만약 귀무가설을 기각하고 왕벚나무의 평균이 느티나무보다 작다면 P-value / 2 < alpha & t_statistics > 0
# 만약 귀무가설을 기각하지 않고 왕벚나무의 평균이 느티나무보다 크다면 P-value / 2 > alpha & t_statistics < 0
# 만약 귀무가설을 기각하지 않고 왕벚나무의 평균이 느티나무보다 작다면 P-value / 2 > alpha & t_statistics > 0
print("유의미하며 기각하며 왕벚나무의 평균이 느티나무보다 크다. = {}".format((ttest_pval / 2 < 0.05) & (ttest_t_statistics < 0)))
print("유의미하며 왕벚나무의 평균이 느티나무보다 작다. = {}".format((ttest_pval / 2 < 0.05) & (ttest_t_statistics > 0)))
print("유의미 하지 않으며 왕벚나무의 평균이 느티나무보다 크다. = {}".format((ttest_pval / 2 > 0.05) & (ttest_t_statistics < 0)))
print("유의미 하지 않으며 없으며 왕벚나무의 평균이 느티나무보다 작다. = {}".format((ttest_pval / 2 > 0.05) & (ttest_t_statistics > 0)))
#
#
# out
# 유의미하며 기각하며 왕벚나무의 평균이 느티나무보다 크다. = False
# 유의미하며 왕벚나무의 평균이 느티나무보다 작다. = False
# 유의미 하지 않으며 왕벚나무의 평균이 느티나무보다 크다. = False
# 유의미 하지 않으며 없으며 왕벚나무의 평균이 느티나무보다 작다. = True
3.サンプリングimport numpy as np
np.random.seed(123)
# 이팝나무 수 샘플 뽑기
samp_epop_tree = np.random.choice(epop_trees_df['이팝나무'].values, size=10, replace=False)
# replace=False -> 비복원 추출
print(samp_epop_tree)
print(samp_epop_tree.mean())
# out
# [1176 446 768 1281 1426 575 853 443 760 709]
# 843.7
System sampling関数# 체계적 추출 함수 만들기 systematic_sampling
def systematic_sampling(data, step):
indexes = np.arange(0, len(data), step=step)
systematic_sample = data.iloc[indexes]
return systematic_sample
# 샘플 데이터의 데이터 프레임
df = pd.DataFrame(data=sample_data, columns=['num'])
# 체계적 추출 systematic sampling
systematic_sample = systematic_sampling(df, 5)
print(systematic_sample.head())
print('-'*20)
print("추출 갯수 :", len(systematic_sample))
# out
# num
# 0 1
# 5 6
# 10 11
# 15 16
# 20 21
# --------------------
# 추출 갯수 : 20
Reference
この問題について([TIL] 21.05.13 t-test), 我々は、より多くの情報をここで見つけました https://velog.io/@rsj9987/TIL-21.05.13-t-testテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol