python非パラメータ検査

3492 ワード

目次
単一サンプル非パラメータ検査
中位数(平均値)検査【wilcoxonシンボル値ランク検査】
ぶんぷしけん
コースチェツク
両サンプルの非パラメータ検査
独立サンプル中位数(平均値)検査【Mann-Whitney-Wilcoxon検査or Wilcoxonランクと検査】
独立サンプルの分布検査
ペアサンプル中位数の検査
両サンプルコース検査
複数のサンプルの非パラメータ検査
複数のサンプルの分布検査
独立サンプル位置の検査
全体的な分布が不明であるか、または全体的な分布とは無関係である場合の統計的推定--非パラメータ推定
全体分布形態の検査(適合性検査)
全体分布位置の検査(位置検査)
単一サンプル非パラメータ検査
中位数(平均値)検査【wilcoxonシンボル値ランク検査】
全体が連続的で対称であると仮定(中位数=平均)
原仮定H 0:M=M 0
基本思想:全体の中位数M 0を仮定し、Di=xi-M 0を計算し、その絶対値でランク付けする.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検査H 0:F(X)=F 0(X)
サンプルデータが分布に従うかどうかを確認する
stats.kstest(ks['observation'],'norm',args=(ks['observation'].mean(),ks['observation'].std()))
stat.anderson(ks['observation'],dist='norm')
stats.shapiro(ks['observation'])

コースチェツク
H 0:全体変数の値はランダムである
連続変数は、平均/中位数より大きいかどうかを確認して切断する必要があります.
sm.stats.runstest_lsamp(asarray(runs['economics']),cutoff='median'/'mean')

両サンプルの非パラメータ検査
独立サンプル中位数(平均値)検査【Mann-Whitney-Wilcoxon検査or Wilcoxonランクと検査】
H 0:二つの独立サンプルの中位数が等しい
サンプルn 1/n 2をマージしてランクを取得し、次に第1、2のサンプルのランクとW 1、W 2を取得し、差が大きい場合は元の仮定を拒否する
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'])

両サンプルコース検査
2つのサンプルデータが同じ全体分布から来ているかどうかを確認します.
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)