본문 바로가기
- 배움이 있는 삶/- Software | English

python-2 sample T test , boxplot 그리기

by story of interesting 2022. 8. 26.
반응형
import pandas as pd
import numpy as np
import scipy.stats as stats
import matplotlib.pyplot as plt
import seaborn as sns

filename_Single ='D:/a.xlsx'
df_Single= pd.read_excel(filename_Single, sheet_name=2, engine='openpyxl')

filename_Dual ='D:/b.xlsx'
df_Dual= pd.read_excel(filename_Dual, sheet_name=2, engine='openpyxl')

# ------- 평균/ 표준편차 구하기 --------------------------------
Single_R = df_Single.loc[df_Single['ResponseTime'] != '-']
a_Single = Single_R['ResponseTime'].astype('float')  # 통계를 위해 사용 변수

Dual_R = df_Dual.loc[df_Dual['ResponseTime'] != '-']
a_Dual = Dual_R['ResponseTime'].astype('float')      # 통계를 위해 사용 변수

average_Single = np.mean(a_Single)
std_Single = np.std(a_Single)

average_Dual = np.mean(a_Dual)
std_Dual = np.std(a_Dual)

print("Single Average : ", average_Single, "            Dual Average : ", average_Dual)
print("Single STD     :", std_Single, "     Dual STD : ", std_Dual)

#-----------------2 sample t test ------------------------------
#-----------------2.1 정규성 검정 --------------------------------
# p value > 0.05 귀무가설채택( 귀무가설: 정규분포 한다)
print("---------Nornality test---------")
Normal_test = stats.ranksums(a_Single, a_Dual)
print(Normal_test)

#-----------------2.2 등분산 검정 --------------------------------
# 귀무가설 : 등분산 한다, P value > 0.05 채택, 0.05< pvalue-> 등분산 하지 않으므로, 2sample t진행(이분산)
print("---------equality test---------")
equal_test = stats.levene(a_Single, a_Dual)
print(equal_test)

#-----------------2.3 2 sample T 검정 ---------------------------
# 귀무가설 : a=b, P value > 0.05 채택, 0.05< pvalue-> 같지 않다
print("---------2 sample t test---------")
two_sample = stats.ttest_ind(a_Single, a_Dual, equal_var= False)
print(two_sample)

# 귀무가설 H0: a=b /  대립가설 H1: a=/b
# P vale > 0.05  귀무가설 채택 / p value < 0.05 대립가설 채택

#-----------------3. Graphic ---------------------------
#----1) 1개 데이타 box plot 그리기 -----------------------
# plt.boxplot(a_Single, sym='r+')
# plt.title("Response time")
# plt.show()
#----2) 여러개 데이타 box plot그리기 ----------------------
fig, ax = plt.subplots()

ax.boxplot([a_Single, a_Dual])
ax.set_ylim(0.0, 4.0)
ax.set_xlabel("Camera count")
ax.set_ylabel("value")

plt.show()
반응형