python PR

【pythonで統計学】クラスカル・ウォリス検定のかけ方〜サンプルコードつき〜

python クラスカルウォリス検定
記事内に商品プロモーションを含む場合があります

統計学を使っていると、3群以上の比較を行う場面が出てきます

A,B,C群の3群があった場合に、各組み合わせでt検定やマンホイットニーのU検定はかけてはいけない、というのが通説です

このように3群以上の比較を行うときに使用するのが、クラスカル・ウォリス検定やフリードマン検定と呼ばれる検定手法です

今回はクラスカル・ウォリス検定をpythonでかける方法について、サンプルコードを交えながら解説していきたいと思います

pythonで統計学を学ぶ流れは以下の記事を参考にしてください

python 統計学
pythonで統計学を学ぶメリット〜実際の学習手順を紹介〜近年、データサイエンティストの需要が高まってきていますが、データサイエンティスト必須能力として、「プログラミング言語」「統計学」が挙げられています。pythonで統計学を扱えれば、データサイエンティストとしての道も開けるでしょう。今回はpythonで統計学を学ぶメリットや実際にどのように学習していくべきかを解説していきたいと思います。...

クラスカル・ウォリス検定とは

クラスカル・ウォリス検定はノンパラメトリック検定の一つです

対応のない3つ以上のグループ間で差の有無を検討したい場合に用います

python ノンパラ パラメトリック
【pythonで統計学】ノンパラメトリックとパラメトリック検定について統計検定を選択するときに、「ノンパラメトリック(ノンパラ)」「パラメトリック」という文字を見るかと思います。初めて統計に触れる方は、これが何を意味していて、何がどう違うのかがわからないと思います。検定手法を選ぶ際に、ノンパラかパラメトリックかはとても大切な事項になります。今回は、ノンパラとパラメトリックの違いについてと、pythonでどのように判断するかの方法について解説していきたいと思います...

>>>データの対応の有無とは?(…coming soon…)

クラスカル・ウォリス検定は3群間に有意差があるかどうか?

を検定するものであって、どの群間に有意差があるかまではわかりません

そのため、クラスカル・ウォリス検定で有意差を認めた場合には、多重比較を行う必要が出てきます

>>>多重比較検定とは?(…coming soon…)

データが正規分布に従っている場合には、一元配置分散分析の使用になります

こちらも、どの群間に有意差があるかまではわからないため、多重比較が必要になってきます

クラスカル・ウォリス検定をかける手順

クラスカル・ウォリス検定をかける前提として、

  • 正規分布していない
  • 対応のないデータ
  • 3群以上の比較を行いたい

という条件が必要です

正規性の検定については、以下の記事で詳しく解説していますので、参考にしてください

python 正規性の検定
【pythonで統計学】正規性の検定(シャピロウィルク検定etc)のかけ方~サンプルコード付き~t検定などの統計手法をかける場合には、まずそのデータが正規分布しているかを調べなくてはいけません。正規性を確認する方法の一つに、ヒストグラムを書いて目視で確認する、という方法がありますが、これだけでは正確ではありません。 そこで、「Q-Qプロット」や「シャピロウィルク検定」「コルモゴロフスミルノフ検定」などを使用して、正規性を確認していきます。 実際に統計をかける場合には、csvやexcelデータなどを読み込んで、統計にかけることが多いと思います。そこで今回は、pythonを使ってcsvから取り込んだデータで正規性の検定を行う方法について、解説していきたいと思います。...

pythonでクラスカル・ウォリス検定をかけてみる

pythonでクラスカル・ウォリス検定をかける場合には、scipyのstats.kruskal()を使用します

scipy.stats.kruskal(*args, nan_policy='propagate')
scipy.stats.mstats.kruskal(*args)

上記のコードでクラスカル・ウォリス検定をかけることができます

pythonではクラスカル・ウォリス検定が2種類用意されています

scipy.stats.kruskal(*args, nan_policy='propagate')

こちらのコードでクラスカル・ウォリス検定をかける場合には、全てのグループの母集団の中央値が等しいという帰無仮説を検定します

帰無仮説を棄却した場合でも、どのグループ間が異なるのかを示すものではないため、その後の多重比較検定が必要になります

scipy.stats.mstats.kruskal(*args)

それに対して、上記のコードでは、中央値の等さについては言及しません

scipy.stats.mstats.kruskal

scipy.stats.kruskal

私は以下のようにコードを書いています

def KruskalWallistest():
    type = [("all file","*")]  
    file_path_stastics = filedialog.askopenfilename(filetypes = type, initialdir = os.getcwd ())  
    stasticsdata = pd.read_csv(file_path_stastics, engine="python",index_col=None)

    A_list=stasticsdata.iloc[:,2]
    A=list(A_list)
    B_list=stasticsdata.iloc[:,3]
    B=list(B_list)
    C_list=stasticsdata.iloc[:,4]
    C=list(C_list)
    
    A_mean=sum(A_list)/len(A_list)
    B_mean=sum(B_list)/len(B_list)
    C_mean=sum(C_list)/len(C_list)
    data=[["A_mean",A_mean],["B_mean",B_mean],["C_mean",C_mean]]
    df=pd.DataFrame(data,columns=["name","mean"])
    df.plot(x="name",y=["mean"],kind="bar",figsize=(9,8))
    plt.show()
    
    result=stats.mstats.kruskalwallis(A,B,C)
    text.insert(tk.END,stasticsdata.describe())
    listbox1.insert(tk.END,"p=%.3f" %(result.pvalue))

ちょっと煩雑なコードですが、SDを算出して、棒グラフにエラーバーをつけています

ノンパラなので、本来は棒グラフではなく、箱ひげ図なんですけど、そこは今後修正していく予定です

csvで読み込んだデータから、列数を指定することで、好きな列を検定にかけることができます

iloc[]の数値を変えれば、違う列のデータをクラスカル・ウォリス検定にかけることもできます

まとめ

今回はクラスカル・ウォリス検定について解説をしました

pythonを使えば簡単に統計をかけることができます

統計をかけること自体は簡単に行えますが、群の設定やcsvから取り込んだデータの処理などがややめんどくさいかもしれません

しかし、一度作ってしまえば、他の統計をかけるときも

stats.xxxxxx()

xのところだけを変えるのみで済むので、スムーズに作ることができると思います

さらにGUIにしてしまえば、自分だけではなく、pythonの入っていないパソコンでも使うことができます

ぜひ参考にしてみてください

私がpythonと統計学を学ぶのに参考にした書籍は以下です

スクールに通わずにpythonを学習するためには?

Python学習を進めていく上で、

「ひとまず何かしらの書籍に目を通したい」「webで調べても全くわからない」という状況が何度も何度でも出てくるかと思います。

そういう時に便利なのが、kindleとテラテイルです。

Kindleはご存知の通り、電子書籍です。

Kindleには多くのpython学習本が用意されており、無料で読むことができます。(たまに有料もあります)

ひとまずどういった書籍があるのか?もしものために、書籍に目を通しておこうという場合には、kindleの利用がおすすめです。

kindleでpythonの書籍を無料で読んでみる

おすすめプログラミングスクール

DMMWEBCAMP
  • WEBCAMPはコスパ最強
  • WEBCAMPは初心者に優しい充実したサポート付き
  • 16週間プランを選択して、返金してもらおう
WEBCAMPの公式ページはこちら WEBCAMPの口コミ・評価はこちら
テックアカデミー  
  • テックアカデミーは費用対効果抜群
  • テックアカデミーのサポートは個人の能力に応じつつ、python初心者に優しい
  • まずは無料体験でテックアカデミーを知ってから受講を決める
テックアカデミーの公式ページはこちら テックアカデミーの口コミ・評価はこちら
キカガク
  • 多種多様なスキルコース
  • 初心者から専門家まで対象
  • 給付金利用で費用を抑えられる
キカガクの公式ページはこちら キカガクの口コミ・評価はこちら
Aidemy Premium
  • 完全オンラインで、時間や場所に縛られず学習したい
  • マンツーマン学習サポートにより実践に近い経験をしたい
  • 未経験から機械学習エンジニアになりたい
Aidemy Premiumの公式ページはこちら Aidemy Premiumの口コミ・評価はこちら
My Agile Privacy
This website uses technical and profiling cookies. Clicking on "Accept" authorises all profiling cookies. Clicking on "Refuse" or the X will refuse all profiling cookies. By clicking on "Customise" you can select which profiling cookies to activate.