常用的假设检验
1、正太分布检验
1、1正太密度直方图
1、2PP图跟QQ图
1、3K-S检验与Shapiro检验
# 正太密度直方图:
import seaborn as sns
import scipy.stats as stats
sns.distplot(a=data.price,
fit=stats.norm,
norm_hist=True,
hist_kws={'color':'steelblue','edgecolor':'black'},
kde_kws={'linestyle':'--','label':'核密度曲线'},
fit_kws={'linestyle':':','label':'正太密度曲线'}
)
plt.legend()
# PP图跟QQ图的绘制:
import statsmodels.api as sm
pp_qq_plot = sm.ProbPlot(data.price)
pp_plot = pp_qq_plot.ppplot(line='45') # 绘制PP图
qq_plot=pp_qq_plot.qqplot(line="q") # 绘制QQ图
# 数据超过5000用K-S检验
stats.kstest(rvs=data.price,
cdf='norm', # 指定分布函数为正太分布函数
args=(data.price.mean(),data.price.std()) # 利用实际数据的均值与标准差来设定理论的正态分布
) # 结果返回统计量和P值
# 数据小于5000时用Shapiro检验
import numpy as np
x1=np.random.normal(5,2,3500)
x2=np.random.uniform(1,100,400)
x1_test=stats.shapiro(x=x1)
x2_test=stats.shapiro(x=x2)
print(x1_test)
print(x2_test)
2、卡方检验
from scipy.stats import chi2_contingency
crosstable = pd.crosstab(data.day,data.time) # 构造两离散变量之间的频次统计表(列联表)
crosstable
chi2_contingency(crosstable)
3、t检验
# 单样本t检验
data=[512,498,490,512,509,493,510,489,508,493,501,496,508,490]
stats.ttest_1samp(a=data,
popmean=500 # 指定总体均值
)
# 独立样本t检验
stats.levene(data_man,data_women) # 先进行方差检验,查看方差是否相等
stats.ttest_ind(a=data_man,b=data_women,equal_var=True)
# 配对样本t检验
data1=[512,498,490,512,509,493,510,489,508,493,501,496,508,490]
data2=[532,489,510,478,508,445,590,512,490,500,489,502,490,500]
stats.ttest_rel(a=data1,b=data2)