目录
独立样本中位数(均值)检验【Mann-Whitney-Wilcoxon检验or Wilcoxon秩和检验】
在总体分布未知或与总体分布无关的情况下进行统计推断--非参数估计
对总体分布形式的检验(拟合优度检验)
对总体分布位置的检验(位置检验)
单样本非参数检验
中位数(均值)检验【wilcoxon符号值秩检验】
假定总体是连续且对称(中位数=均值)
原假设H0 :M=M0
基本思想:假设总体中位数M0,计算Di=xi-M0,按照其绝对值排序得到秩。计算Di<0/>0的秩和W-、W+,如果相差很大,则可以拒绝对总体中位数的原假设
def Wilcoxon_signes_rank_test(samp,mu0=0):
temp=pd.DataFrame(np.asarray(samp),columns=['origin_data'])
temp['D']=temp['origin_data']-mu0
temp['rank']=abs(temp['D']).rank()
posW=sum(temp[temp['D']>0]['rank'])
negW=sum(temp[temp['D']<0]['rank'])
n=temp[temp['D']!=0]['rank'].count()
z=(posW-n*(n+1)/4)/np.sqrt((n*(n+1)*(2*n+1))/24)
p = (1-stats.norm.cdf(abs(z)))*2
return z , p
Wilcoxon_signed_rank_test(water['net'],mu0=600)
# 也可以statsmodels.stats.descriptivestats中sign_test
分布的检验
K-S检验H0:F(X)=F0(X)
检验样本数据是否服从某个分布
stats.kstest(ks['observation'],'norm',args=(ks['observation'].mean(),ks['observation'].std()))
stat.anderson(ks['observation'],dist='norm')
stats.shapiro(ks['observation'])
游程检验
H0:总体变量的取值是随机的
连续变量需要看是否大于均值/中位数进行截断
sm.stats.runstest_lsamp(asarray(runs['economics']),cutoff='median'/'mean')
两样本的非参数检验
独立样本中位数(均值)检验【Mann-Whitney-Wilcoxon检验or Wilcoxon秩和检验】
H0:两个独立样本的中位数相等
合并样本n1/n2之后得到秩,然后得到第一、二个样本的秩和W1、W2,如果差异大,则拒绝原假设
stats.ranksums(sales_district[sales_district['district']==1]['sales'],
sales_district[sales_district['district']==2]['sales'])
stats.mannwhitneyu(sales_district[sales_district['district']==1]['sales'],
sales_district[sales_district['district']==2]['sales'],
alternative='two-sided')
独立样本的分布检验
检验样本所来自的总体分布是否相同
H0:F1(x)=F2(x)
stats.ks_2samp(café_scale[café_scale['city']==1]['computers'],
café_scale[café_scale['city']==2]['computers'])
配对样本中位数的检验
先变成两者之差,然后利用wilcoxon检验去做
stats.wilcoxon(happiness['Year2015'],happiness['Year2016'])
两样本游程检验
检验两样本数据是否来自于同一总体分布
sm.stats.runstest_2samp(asarray(runs['economics'].astype('float64'),
asarray(runs['statistics'].astype('float64'))
sm.stats.runstest_2samp(asarray(runs['score'].astype('float64'),
groups=asarray(runs['group'])
多个样本的非参数检验
多个样本的分布检验
检验各样本数据是否来自同一主体
G=ksampledis['class'].unique()
args=[]
for I in list(G):
args.append(array(ksampledis['class']==I]['statistics_score']))
stats.anderson_ksamp(args)
独立样本位置的检验
stats.kruskal(*args)
stats.median_test(*args)
版权声明:本文为kylin_learn原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。