<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>【python 統計学 ウィルコクソン符号付き順位検定】タグの記事一覧｜python-manブログ</title>
	<atom:link href="https://python-man.club/tag/python-%E7%B5%B1%E8%A8%88%E5%AD%A6-%E3%82%A6%E3%82%A3%E3%83%AB%E3%82%B3%E3%82%AF%E3%82%BD%E3%83%B3%E7%AC%A6%E5%8F%B7%E4%BB%98%E3%81%8D%E9%A0%86%E4%BD%8D%E6%A4%9C%E5%AE%9A/feed/" rel="self" type="application/rss+xml" />
	<link>https://python-man.club</link>
	<description>独学者でもpythonでアプリを作れる！</description>
	<lastBuildDate>Fri, 11 Feb 2022 11:04:19 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.5.2</generator>
<atom:link rel="hub" href="https://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="https://pubsubhubbub.superfeedr.com"/><atom:link rel="hub" href="https://websubhub.com/hub"/>	<item>
		<title>【pythonで統計学】ウィルコクソン符号付き順位検定〜サンプルコード付き〜</title>
		<link>https://python-man.club/wilcoxon-signed-rank-test/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=wilcoxon-signed-rank-test</link>
					<comments>https://python-man.club/wilcoxon-signed-rank-test/#comments</comments>
		
		<dc:creator><![CDATA[syou0445]]></dc:creator>
		<pubDate>Sat, 25 Sep 2021 14:10:02 +0000</pubDate>
				<category><![CDATA[python]]></category>
		<category><![CDATA[統計学]]></category>
		<category><![CDATA[python 統計学 ウィルコクソン符号付き順位検定]]></category>
		<guid isPermaLink="false">https://python-man.club/?p=247</guid>

					<description><![CDATA[pythonの大きな特徴の一つとして、統計学を扱うことができる、というものがあります pythonを学び始めた方の中にも、 「ビッグデータの統計を出来るようになりたい」 「pythonを統計ソフトとして扱いたい」 と思っ]]></description>
										<content:encoded><![CDATA[<p>pythonの大きな特徴の一つとして、<strong>統計学を扱うことができる</strong>、というものがあります</p>
<p>pythonを学び始めた方の中にも、</p>
<p><strong>「ビッグデータの統計を出来るようになりたい」</strong></p>
<p><strong>「pythonを統計ソフトとして扱いたい」</strong></p>
<p>と思っている方もいるのではないでしょうか？</p>
<p>しかし、ネット上にはarray型にしたデータを用意して統計を…</p>
<p>という情報が多く、csvやExcelファイルから読み込んで、pythonで統計処理を行う方法については記載されていません</p>
<p>そこで、<strong><span class="marker2">この記事ではcsvファイルから読み込んだ任意の列を統計にかける方法について</span></strong>、解説していきたいと思います</p>
<p>今回、pythonで統計をかけるのは「<strong>ウィルコクソン符号付き順位検定</strong>」と呼ばれるものです</p>
<p>実際のサンプルコードをもとに解説をしていきます</p>
<p>pythonで統計学を学ぶ流れは以下の記事を参考にしてください</p>
<p>https://python-man.club/python_stastics/</p>
<h2>ウィルコクソン符号付き順位検定とは</h2>
<p>ウィルコクソン符号付き順位検定は<strong>ノンパラメトリック検定の一種</strong>で、<strong>2つのデータに対応がある場合</strong>に用います</p>
<p>ノンパラメトリック検定で<strong>2つのデータに対応がない場合</strong>には、「<strong>マンホイットニーのU検定(ウィルコクソンの順位和検定)</strong>」を用います</p>
<p>https://python-man.club/mann-whitney-u-test/</p>
<p>ウィルコクソン符号付き順位検定では、得られたデータを順位化して、統計的推定をおこないます</p>
<p>ウィルコクソン符号付き順位検定の仮説は以下のようになっています</p>
<ul>
<li><strong>帰無仮説H0：「母代表値に差はない」</strong></li>
<li><strong>対立仮説H1：「母代表値に差がある」</strong></li>
</ul>
<p>検定統計量が定めた有意水準以下の場合には、帰無仮説が棄却されることになります</p>
<h3>ウィルコクソン符号付き順位検定は「前」「後」の比較</h3>
<p>ウィルコクソン符号付き順位検定は、対応のある2つのデータを比較する場合に用います<br />
<strong>では、対応のあるデータとはどういったものでしょうか？</strong></p>
<p>例えば、高血圧で服薬しているAさんがいた場合に、</p>
<p><strong>服薬し始めるx月y日と服薬開始2週間後のx月y+2週日で、血圧を比較したい場合や、</strong></p>
<p><strong>ダイエット開始日と1ヶ月後の体重を比較したい場合など、</strong></p>
<p><strong>同一人物から2回以上データを測定した場合に、対応のある検定手法を用います</strong></p>
<h3>ウィルコクソン符号付き順位検定をかける手順</h3>
<p>ウィルコクソン符号付き順位検定をかける手順として、</p>
<ul>
<li><strong>2群は対応している</strong></li>
<li><strong>正規性がない</strong></li>
</ul>
<p>というのが前提になります</p>
<p>正規性の検定については、以下の記事で詳しく解説していますので、参考にしてみてください</p>
<p>https://python-man.club/normality-tests/</p>
<h2>pythonでウィルコクソン符号付き順位検定をかけてみる</h2>
<p>pythonでウィルコクソン符号付き順位検定をかける場合には、<strong>scipyのstats.wilcoxon</strong>を使用します</p>
<pre class="language-python"><code>scipy.stats.wilcoxon（x、 y = None、 zero_method = 'wilcox'、 correction = False、 alternative = 'two-sided'、 mode = 'auto'）</code></pre>
<p>上記のコードでウィルコクソン符号付き検定をかけることができます</p>
<p>私は以下のようにコードを書いています</p>
<pre class="language-python"><code>from scipy import stats
stats.wilcoxon(A, B, alternative='two-sided')</code></pre>
<p>このような表記でもウィルコクソン符号付き順位検定をかけることができます<br />
<strong><span class="marker2">「alternative」は両側検定か片側検定かです</span></strong></p>
<p><strong>alternative=&#8217;two-sided&#8217;で両側検定、</strong></p>
<p><strong>alternative=&#8217;greater&#8217;もしくは&#8217;less&#8217;で片側検定になります</strong></p>
<h3>ウィルコクソン符号付き検定のxとyについて</h3>
<p>ウィルコクソンの符号付き検定は対応のある2つのデータを比較する検定手法のため、<br />
x,yの値は入力する必要があります</p>
<p>しかし、yの値を指定しない場合には、xの値にxとyの値の差を入力する必要があります</p>
<p>コードにすればすぐかもしれませんが、余計な作業を増やす必要はないので、x,yの値を入力すればOKです</p>
<h3>csvから取り込んだデータを2群に分ける</h3>
<p>ではcsvから読み込んだデータを2群に分けていきます</p>
<pre class="language-python"><code>import pandas as pd 
import os 
import csv
from scipy import stats

def MannWhitneyUtest():
    type = [("all file","*")]    # 読み取るファイルをcsvに絞り込む。
    file_path_stastics = filedialog.askopenfilename(filetypes = type, initialdir = os.getcwd ())  
    stasticsdata = pd.read_csv(file_path_stastics, engine="python",index_col=None)

    print(stasticsdata)
    A_list=stasticsdata.iloc[:,2]
    A=list(A_list)
    B_list=stasticsdata.iloc[:,3]
    B=list(B_list)
    
    result=stats.wilcoxon(A, B, alternative='two-sided')
</code></pre>
<table style="border-collapse: collapse; width: 82.19440748602861%; height: 598px;" border="1">
<tbody>
<tr style="height: 24px;">
<td style="width: 19.16185666185666%;">ID</td>
<td style="width: 16.93121693121693%;">Group</td>
<td style="width: 34.181777431975384%; height: 24px;">A_Group_Sitting height</td>
<td style="width: 30.146705146705152%; height: 24px;">B_Group_Sitting height</td>
</tr>
<tr style="height: 24px;">
<td style="width: 19.16185666185666%;">No.1</td>
<td style="width: 16.93121693121693%;">A</td>
<td style="width: 34.181777431975384%; height: 24px;">68</td>
<td style="width: 30.146705146705152%; height: 24px;">68</td>
</tr>
<tr style="height: 24px;">
<td style="width: 19.16185666185666%;">No.2</td>
<td style="width: 16.93121693121693%;">A</td>
<td style="width: 34.181777431975384%; height: 24px;">72</td>
<td style="width: 30.146705146705152%; height: 24px;">72</td>
</tr>
<tr style="height: 24px;">
<td style="width: 19.16185666185666%;">No.3</td>
<td style="width: 16.93121693121693%;">A</td>
<td style="width: 34.181777431975384%; height: 24px;">89</td>
<td style="width: 30.146705146705152%; height: 24px;">89</td>
</tr>
<tr style="height: 24px;">
<td style="width: 19.16185666185666%;">No.4</td>
<td style="width: 16.93121693121693%;">A</td>
<td style="width: 34.181777431975384%; height: 24px;">68</td>
<td style="width: 30.146705146705152%; height: 24px;">68</td>
</tr>
<tr style="height: 24px;">
<td style="width: 19.16185666185666%;">No.5</td>
<td style="width: 16.93121693121693%;">A</td>
<td style="width: 34.181777431975384%; height: 24px;">75</td>
<td style="width: 30.146705146705152%; height: 24px;">75</td>
</tr>
<tr style="height: 24px;">
<td style="width: 19.16185666185666%;">No.6</td>
<td style="width: 16.93121693121693%;">A</td>
<td style="width: 34.181777431975384%; height: 24px;">77</td>
<td style="width: 30.146705146705152%; height: 24px;">77</td>
</tr>
<tr style="height: 24px;">
<td style="width: 19.16185666185666%;">No.7</td>
<td style="width: 16.93121693121693%;">B</td>
<td style="width: 34.181777431975384%; height: 24px;">73</td>
<td style="width: 30.146705146705152%; height: 24px;">73</td>
</tr>
<tr style="height: 24px;">
<td style="width: 19.16185666185666%;">No.8</td>
<td style="width: 16.93121693121693%;">B</td>
<td style="width: 34.181777431975384%; height: 24px;">81</td>
<td style="width: 30.146705146705152%; height: 24px;">83</td>
</tr>
<tr style="height: 24px;">
<td style="width: 19.16185666185666%;">No.9</td>
<td style="width: 16.93121693121693%;">B</td>
<td style="width: 34.181777431975384%; height: 24px;">75</td>
<td style="width: 30.146705146705152%; height: 24px;">73</td>
</tr>
<tr style="height: 24px;">
<td style="width: 19.16185666185666%;">No.10</td>
<td style="width: 16.93121693121693%;">B</td>
<td style="width: 34.181777431975384%; height: 24px;">77</td>
<td style="width: 30.146705146705152%;">75</td>
</tr>
<tr style="height: 24px;">
<td style="width: 19.16185666185666%;">No.11</td>
<td style="width: 16.93121693121693%;">B</td>
<td style="width: 34.181777431975384%; height: 24px;">73</td>
<td style="width: 30.146705146705152%;">72</td>
</tr>
<tr style="height: 24px;">
<td style="width: 19.16185666185666%;">No.12</td>
<td style="width: 16.93121693121693%;">B</td>
<td style="width: 34.181777431975384%; height: 24px;">83</td>
<td style="width: 30.146705146705152%;">80</td>
</tr>
<tr style="height: 24px;">
<td style="width: 19.16185666185666%;">No.13</td>
<td style="width: 16.93121693121693%;">B</td>
<td style="width: 34.181777431975384%; height: 24px;">69</td>
<td style="width: 30.146705146705152%;">71</td>
</tr>
</tbody>
</table>
<p>上記のようなcsvデータが読み取ります</p>
<pre class="language-python"><code># 読み取るファイル形式を絞る(今回の場合は全てのファイル)    
type = [("all file","*")]    
#ファイル参照画面を開いて、ファイルを選択する
file_path_stastics = filedialog.askopenfilename(filetypes = type, initialdir = os.getcwd ())  
#選択したcsvファイルを読み込み、インデックスはNone(なし)とする
stasticsdata = pd.read_csv(file_path_stastics, engine="python",index_col=None)
#stasticsdataの中身を確認する
print(stasticsdata)</code></pre>
<p>この状態で「stasticsdata」にcsvデータが読み込まれます</p>
<p><img fetchpriority="high" decoding="async" class="alignnone size-full wp-image-232" src="https://python-man.club/wp-content/uploads/2021/09/スクリーンショット-2021-09-24-6.24.56.png" alt="マンホイットニーのU検定用データ" width="255" height="435" /><br />
今回のcsvのデータとは異なりますが、読み込めていると、上記のように表出されるはずです<br />
これだとA群とB群の指定がまだできていないため、統計をかけたい値をA群・B群に指定していきます</p>
<pre class="language-python"><code>#2列目をA群として読み込む
A_list=stasticsdata.iloc[:,2]
#読み込んだ2列目をリスト形式にする
A=list(A_list)
#3列目をB群として読み込む
B_list=stasticsdata.iloc[:,3]
#読み込んだ3列目をリスト形式にする
B=list(B_list)

#ウィルコクソン符号付き順位検定をかける(両側検定)
result=stats.wilcoxon(A, B, alternative='two-sided')
</code></pre>
<p>上記のコードで好きな列をA群・B群に指定することができます</p>
<p>pythonではcsv1列目のデータが「0」として表現されるので、0からのスタートになります</p>
<p><strong>ilocを使えば列番号で指定して、取り出すことができます</strong></p>
<p>&gt;&gt;&gt;pandasで任意の列・行の値を取得する方法(&#8230;coming soon&#8230;)</p>
<table style="border-collapse: collapse; width: 77.53447366814763%; height: 600px;" border="1">
<tbody>
<tr style="height: 24px;">
<td style="width: 12.13474025974026%;">ID</td>
<td style="width: 13.54567307692308%;">Group</td>
<td style="width: 27.234172077922082%; height: 24px;">A_Group_Sitting height</td>
<td style="width: 29.949543699543703%; height: 24px;">B_Group_Sitting height</td>
</tr>
<tr style="height: 24px;">
<td style="width: 12.13474025974026%;">No.1</td>
<td style="width: 13.54567307692308%;">A</td>
<td style="width: 27.234172077922082%; height: 24px;">68</td>
<td style="width: 29.949543699543703%; height: 24px;">68</td>
</tr>
<tr style="height: 24px;">
<td style="width: 12.13474025974026%;">No.2</td>
<td style="width: 13.54567307692308%;">A</td>
<td style="width: 27.234172077922082%; height: 24px;">72</td>
<td style="width: 29.949543699543703%; height: 24px;">72</td>
</tr>
<tr style="height: 24px;">
<td style="width: 12.13474025974026%;">No.3</td>
<td style="width: 13.54567307692308%;">A</td>
<td style="width: 27.234172077922082%; height: 24px;">89</td>
<td style="width: 29.949543699543703%; height: 24px;">89</td>
</tr>
<tr style="height: 24px;">
<td style="width: 12.13474025974026%;">No.4</td>
<td style="width: 13.54567307692308%;">A</td>
<td style="width: 27.234172077922082%; height: 24px;">68</td>
<td style="width: 29.949543699543703%; height: 24px;">68</td>
</tr>
<tr style="height: 24px;">
<td style="width: 12.13474025974026%;">No.5</td>
<td style="width: 13.54567307692308%;">A</td>
<td style="width: 27.234172077922082%; height: 24px;">75</td>
<td style="width: 29.949543699543703%; height: 24px;">75</td>
</tr>
<tr style="height: 24px;">
<td style="width: 12.13474025974026%;">No.6</td>
<td style="width: 13.54567307692308%;">A</td>
<td style="width: 27.234172077922082%; height: 24px;">77</td>
<td style="width: 29.949543699543703%; height: 24px;">77</td>
</tr>
<tr style="height: 24px;">
<td style="width: 12.13474025974026%;">No.7</td>
<td style="width: 13.54567307692308%;">B</td>
<td style="width: 27.234172077922082%; height: 24px;">73</td>
<td style="width: 29.949543699543703%; height: 24px;">73</td>
</tr>
<tr style="height: 24px;">
<td style="width: 12.13474025974026%;">No.8</td>
<td style="width: 13.54567307692308%;">B</td>
<td style="width: 27.234172077922082%; height: 24px;">81</td>
<td style="width: 29.949543699543703%; height: 24px;">83</td>
</tr>
<tr style="height: 24px;">
<td style="width: 12.13474025974026%;">No.9</td>
<td style="width: 13.54567307692308%;">B</td>
<td style="width: 27.234172077922082%; height: 24px;">75</td>
<td style="width: 29.949543699543703%; height: 24px;">73</td>
</tr>
<tr style="height: 24px;">
<td style="width: 12.13474025974026%;">No.10</td>
<td style="width: 13.54567307692308%;">B</td>
<td style="width: 27.234172077922082%; height: 24px;">77</td>
<td style="width: 29.949543699543703%;">75</td>
</tr>
<tr style="height: 24px;">
<td style="width: 12.13474025974026%;">No.11</td>
<td style="width: 13.54567307692308%;">B</td>
<td style="width: 27.234172077922082%; height: 24px;">73</td>
<td style="width: 29.949543699543703%;">72</td>
</tr>
<tr style="height: 24px;">
<td style="width: 12.13474025974026%;">No.12</td>
<td style="width: 13.54567307692308%;">B</td>
<td style="width: 27.234172077922082%; height: 24px;">83</td>
<td style="width: 29.949543699543703%;">80</td>
</tr>
<tr style="height: 24px;">
<td style="width: 12.13474025974026%;">No.13</td>
<td style="width: 13.54567307692308%;">B</td>
<td style="width: 27.234172077922082%; height: 24px;">69</td>
<td style="width: 29.949543699543703%;">71</td>
</tr>
</tbody>
</table>
<p><img decoding="async" class="alignnone size-full wp-image-233" src="https://python-man.club/wp-content/uploads/2021/09/アイキャッチ用-7.jpg" alt="python列の数え方" width="720" height="405" /><br />
あとは実行すれば検定結果が表示されるはずです</p>
<p>私はGUIで作成しているので、検定結果をリストボックスに表示させています</p>
<pre class="language-python"><code>listbox1.insert(tk.END,"p=%.5f" %(result.pvalue))</code></pre>
<h2>まとめ</h2>
<p>今回はウィルコクソン符号付き順位検定について解説をしました</p>
<p>pythonを使えば簡単に統計をかけることができます</p>
<p>統計をかけること自体は簡単に行えますが、群の設定やcsvから取り込んだデータの処理などがややめんどくさいかもしれません</p>
<p>しかし、一度作ってしまえば、他の統計をかけるときも</p>
<p><strong>stats.xxxxxx()</strong></p>
<p>xのところだけを変えるのみで済むので、スムーズに作ることができると思います</p>
<p>さらにGUIにしてしまえば、自分だけではなく、pythonの入っていないパソコンでも使うことができます</p>
<p>ぜひ参考にしてみてください</p>
<p>私がpythonを学ぶのに参考にした書籍は以下です</p>
<div class="booklink-box" style="text-align: left; padding-bottom: 20px; font-size: small; zoom: 1; overflow: hidden;">
<div class="booklink-image" style="float: left; margin: 0 15px 10px 0;"><a href="https://hb.afl.rakuten.co.jp/hgc/18cb6363.e8f8b707.18cb6364.c87e7f42/yomereba_main_202109240656307603?pc=http%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F15385339%2F%3Fscid%3Daf_ich_link_urltxt%26m%3Dhttp%3A%2F%2Fm.rakuten.co.jp%2Fev%2Fbook%2F" target="_blank" rel="noopener"><img decoding="async" style="border: none;" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/5067/9784798155067.jpg?_ex=200x200" /></a></div>
<div class="booklink-info" style="line-height: 120%; zoom: 1; overflow: hidden;">
<div class="booklink-name" style="margin-bottom: 10px; line-height: 120%;">
<p><a href="https://hb.afl.rakuten.co.jp/hgc/18cb6363.e8f8b707.18cb6364.c87e7f42/yomereba_main_202109240656307603?pc=http%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F15385339%2F%3Fscid%3Daf_ich_link_urltxt%26m%3Dhttp%3A%2F%2Fm.rakuten.co.jp%2Fev%2Fbook%2F" target="_blank" rel="noopener">Pythonで学ぶあたらしい統計学の教科書</a></p>
<div class="booklink-powered-date" style="font-size: 8pt; margin-top: 5px; font-family: verdana; line-height: 120%;">posted with <a href="https://yomereba.com" target="_blank" rel="nofollow noopener">ヨメレバ</a></div>
</div>
<div class="booklink-detail" style="margin-bottom: 5px;">馬場 真哉 翔泳社 2018年04月19日頃</div>
<div class="booklink-link2" style="margin-top: 10px;">
<div class="shoplinkrakuten" style="display: inline; margin-right: 5px;"><a href="https://hb.afl.rakuten.co.jp/hgc/18cb6363.e8f8b707.18cb6364.c87e7f42/yomereba_main_202109240656307603?pc=http%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F15385339%2F%3Fscid%3Daf_ich_link_urltxt%26m%3Dhttp%3A%2F%2Fm.rakuten.co.jp%2Fev%2Fbook%2F" target="_blank" rel="noopener">楽天ブックス</a></div>
<div class="shoplinkamazon" style="display: inline; margin-right: 5px;"><a href="https://www.amazon.co.jp/exec/obidos/asin/4798155063/baseball0445-22/" target="_blank" rel="noopener">Amazon</a></div>
<div class="shoplinkkindle" style="display: inline; margin-right: 5px;"><a href="https://www.amazon.co.jp/gp/search?keywords=Python%E3%81%A7%E5%AD%A6%E3%81%B6%E3%81%82%E3%81%9F%E3%82%89%E3%81%97%E3%81%84%E7%B5%B1%E8%A8%88%E5%AD%A6%E3%81%AE%E6%95%99%E7%A7%91%E6%9B%B8&amp;__mk_ja_JP=%83J%83%5E%83J%83i&amp;url=node%3D2275256051&amp;tag=baseball0445-22" target="_blank" rel="noopener">Kindle</a></div>
</div>
</div>
<div class="booklink-footer" style="clear: left;"></div>
</div>
<h3>スクールに通わずにpythonを学習するためには？</h3>
<p>Python学習を進めていく上で、</p>
<p><strong>「ひとまず何かしらの書籍に目を通したい」</strong><strong>「webで調べても全くわからない」</strong>という状況が何度も何度でも出てくるかと思います。</p>
<p>そういう時に便利なのが、<a href="https://www.amazon.co.jp/kindle-dbs/hz/signup?tag=baseball0445-22">kindle</a>とテラテイルです。</p>
<p>Kindleはご存知の通り、電子書籍です。</p>
<p>Kindleには多くのpython学習本が用意されており、無料で読むことができます。(たまに有料もあります)</p>
<p><strong>ひとまずどういった書籍があるのか？</strong><strong>もしものために、書籍に目を通しておこう</strong></p>
<p>という場合には、kindleの利用がおすすめです。</p>
<p><strong><span class="color-button01-big"><a href="https://www.amazon.co.jp/kindle-dbs/hz/signup?tag=baseball0445-22">kindleでpythonの書籍を無料で読んでみる</a></span></strong></p>
]]></content:encoded>
					
					<wfw:commentRss>https://python-man.club/wilcoxon-signed-rank-test/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
	</channel>
</rss>
