編集中!Rを使ったデータ解析

第9回授業の獲得目標: [worried]

Rの操作説明に入る前にやって置いて欲しいこと(男子学生のみ!

【ここをクリック】←左のリンクのページに入り、画面の説明に従って、データを入力。今回の復習課題に使う(間違った形式で入力すると、自分でやるデータ整形処理が複雑になるので注意)。入力が同じ時間に集中すると「更新の衝突」がおきるので。「コメントの挿入」ボタンをクリックする直前に、一度、ページをリロード(再読込)すること。

パワーポイントによる作図・評価の高かった作品例

課題結果ページ参照

データ解析ソフト R のインストール

以下の手順に従ってインストール。授業直前に確認して、リンクを変更する予定

Rのインストール

Rの日本語説明

Rの基本操作を理解しよう: [smile]

Rを一人で使う場合: 参考になる情報

Rには様々な参考書が出版されているので、どれか一冊を選んで買ってきて、随時参照しながら操作をするといいだろう。フリーのオンライン情報だけを使って使いたい人は、次のようにするといい。

1. Rの命令一覧が載っている説明書のPDF(上記)を画面に表示させる
2. Adobe Readerの検索機能を使って、行いたい処理を検索
3. 説明を読んで入力すべき命令文をコピー
4. Rにペーストして、値を編集して実行

こうやって、常に説明書を参照しながら操作すれば、命令を覚える必要は無い。

Rを起動する

まず、インストールしたRのフォルダで、Rのアイコンをダブルクリックする。
そうすると、画面が切り替わり、小さいウィンドウの中にいくつかのメッセージと、一番最後に、

>

が表示される。この">"をプロンプトと言う。プロンプトの右側には通常、カーソルがあり、「このマークの後に何かコマンド(命令)を打ち込んでくださいよ」とあなたに促している。式を入力して、最後にenter(or returnキー)を押せば計算される。

Rによる簡単な数値計算: Rは関数電卓代わりに使える! [smile]

以下、Rを使った簡単な計算。プロンプト(>)から右の部分をコピーペーストすれば、計算できる。

> 4/3*pi*5^3  #半径5の球の体積

> pi  #円周率が表示される(デフォルトでは小数点以下6桁まで)

> (1+ 2 +  3   +    4     +    5    )/5   #式の間に半角スペースがいくつか入っても大丈夫

> 【ここでキーボードの上矢印(↑)を押す: 前に入力した命令を表示させることができる】

> (10 + 2 +  3   +  4 + 15 )/5   #前に入力した式が表示されるので、左矢印(←)でカーソルを動かし修正

オブジェクトへの数値の代入

Rでは、好きな名前をつけたオブジェクト("もの")に、数値や文字列などのデータを代入できます。オブジェクトには大文字小文字の区別があります。

> x = 3  #xに3という数字を代入した
> X = 4  #Xに4という数字を代入した
> x + X #xとXの足し算   (なお、#の後はコメント文と呼ばれ、処理には関係の無い説明を書いておける)

なお、上では"="を使って数値を代入しましたが、 "<-"を使っても同じことができます。

> x <- 3
> X <- 4
> x+X

(Rの代入はもともと "<- " だけだったが、比較的最近、 " = " も使えるようになった)

Rのデータの基本である、ベクトルを理解しよう [smile]

ベクトルとうと、高校の数学でやった「大きさと方向をもった量」を思い出すと思うが、

Rで使うベクトルは、同じ種類のデータに順番をつけて並べたもの

と定義しておこう。これは、Rが沢山のデータをまとめて処理するために用いる、データの構造だ。
データの構造なんていう言い方をすると分かりにくいかもしれないが、皆さんはすでに、エクセルの表という構造を持つデータをまとめて処理した経験がある。
例えばエクセルを使った計算では、

10.45.63.16.421.7

という表(つまり、表という構造を持つデータ)について、sum()関数をつかったり、1つのセルに5を足すという計算結果を全部のセルにコピペして、全ての値に5ずつ0足した結果を得たりした。
#09_1.gif

では、Rで命令文を1行ずつ入力する場合、上のデータをまとめて扱うにはどうすればいいだろうか?
もちろん、下のように1行ずつ計算式を打ち込んでも答えはでるが、データの数が多くなると、面倒すぎる。

(こんなやり方だと面倒くさい)
> 10.4+5.6+3.1+6.4+21.7
> 10.4+5
> 5.6+5

Rでは、全てのデータをベクトルとして扱う

そこで、Rが、たくさんのデータを一まとめにして扱うために使うのが、ベクトルというデータの構造だ。例えば、

(10.4, 5.6, 3.1, 6.4, 21.7)

というデータの集まりは、同じタイプのデータに順番をつけてひとまとめにしたものであり、Rでいうところのベクトルだ。
そして、Rでデータをベクトルとして使うときに必要なのが、c()という関数。

Rを使う上で、これだけは絶対に覚えておこう
沢山のデータを一まとめにしてベクトルとして使うときには、 c() という関数を使う


例えば、上のベクトルを、x というオブジェクトに代入したいときには、

x=c(10.4, 5.6, 3.1, 6.4, 21.7)

という命令を使う。上の命令を入力した後、「 x 」とだけ入力すると、xの内容が表示される。

> x
[1] 10.4  5.6  3.1  6.4 21.7

上の結果に表示された[1]は何だろうか?これは、表示された行の最初の数字が、ベクトルの1番目の要素だということを意味している。では、次のようなベクトルをyに代入して、内容を表示させてみよう。

>  y=c(1984,1985,1986,1987,1988,1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999,2000,2001)

ウィンドウの大きさによって表示のされ方は異なるが、もし1行に収まらなければ、

> y
 [1] 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997
[15] 1998 1999 2000 2001

というように、2行目の始まりに[15]というような数字が表示される。これは、2行目が15番目の要素から始まっていることを示している。
「ベクトル」とは、同じタイプのデータに順番をつけて一まとめにしたものだった。では、一まとめの中から、例えば、「5番目の要素」だけを取り出すにはどうすればいいだろうか?勘のいい人はもう気づいているかもしれないが、

> y[5]
[1] 1988

と、オブジェクトの名前に順番を[]に入れたものをくっつける事で、目的の要素を取り出すことができる。

オブジェクトへのベクトルの代入

では、Rでベクトルを使って、沢山のデータを一まとめにして、いろいろ計算してみよう。

まずはおさらい。上で出てきた、 c() という関数を使って、オブジェクトにベクトルを代入でする。

> x=c(1,2,3,4,5,6,7)
>

entterキーを押しても何もおこらない?いえいえ。エラーメッセージが何も表示されず、新しいプロンプトが表示されたら大成功。
(もし、上のようにならなかった人は、半角・全角の文字の違いとコンマやカッコに注意してもう一度やってみよう。)

では、プロンプトの後に"x"と入力して、結果を見てみよう。

>x
[1] 1 2 3 4 5 6 7

上の様に表示されれば「xというオブジェクトにベクトル(1,2,3,4,5,6,7)が代入されたことになる。では、今用いたベクトルを対象に、統計解析の基本である平均値の計算を計算してみよう。

mean()という関数(meanは英語で平均値の意味)でベクトルの平均値が計算できる。
命令の入力に自信の無い人は、下の囲みの中をコピー・ペースト。
>mean(x)
[1] 4

平均値"4"が表示されれば大成功(これで、あなたがRを使って行う、初めての統計解析は、無事に成功した)
 では、数値をもう少し変えて、自分の好きな値で計算してみよう。。。 上で説明したように、キーボードの"↑"記号を何回か押してみると、

> x=c(1,2,3,4,5,6,7)

と表示された。そしたら"←"と"Back space"などを使って、数値を好きに変更して、最後に"Enter"キーを押そう。

> x=c(1232,223.33,3  ,4 ,  5666)

半角文字であるかぎり、別にスペースがいくつ入っていても大丈夫。入力したら、上と同じことをしてみると、

> x
[1] 1232.00  223.33    3.00    4.00 5666.00
> mean(x)
[1] 1425.666

これで、自分の好きな値を入力して、平均を計算することができた。

Rを使った統計解析 [smile]

生物学を学ぶ限り、自分が実験や観察で得たデータを使うときに、統計解析は必ず使うことになる。生物学のための統計解析の本も、数多く出版されている。一年生の皆さんも、機会をみつけて、できるだけ統計学に慣れ親しんでおいて欲しい。そんなとき、Rは非常に役に立つ。Rは非常に強力な統計解析ソフトであるため、与えられたデータの持つ統計的特徴を瞬時に計算したり、データの持つ意味を推測するための図版を一瞬に作図してくれる。この授業ではRを使って実際にデータを解析することで、統計解析に慣れ親しむ方法を解説する。実際の理論的裏付けは、統計の本を読んだり、授業に出たりして、各自学習してほしい。

統計解析の2つの主要目的

 この授業では統計解析を、次の2つの目的のために使う。

1. ある対象(母集団)から得られた部分的な数値データから、その対象の持っている性質や特徴を知ること

2. ある対象や実験で得られた数値データを用いて、その対象についてどういう判断を下せば良いかを論じること

母集団の性質の推測

"ある対象(集団)から得られた部分的な数値データから、その対象の持っている性質や特徴を知ること"

生物学の大きな目的の一つに、自然界に存在する様々な生物の特徴を知ることがある。しかし、自然界の全ての生物個体を計測して、特徴を知ることは不可能。そこで、対象とする生物から、一部だけ(標本)を偏り無く取り出して(これを任意抽出とかランダムサンプリングと呼ぶ)、特徴を計測し、対象生物全体(母集団)の特徴を推定する。こういう作業を「統計的推測」と言う。

Untitled-1.gif

この、「一部を使って全体を知る」という点が、が統計の基本だろう。
kasupin.gif  生態学などのマクロ系の生物学では、上のような方法で標本を採集し、母集団の性質の解析に統計学的手法を用いることが、非常に多くある。この授業では、統計学全般について語っている時間は無いので、ほんのさわりしか扱わないが、下に示す参考書などを読んで、勉強しておいて欲しい。受験で培った数学力が落ちておらず、学問に対する情熱が非常に高い、1年生の今が統計学習得のチャンスですぞ!

それでは、実際に統計的推測やってみよう。。

【ここをクリック】←ここに、産業技術総合研究所 デジタルヒューマン研究センターから提供して頂いた、1997年の男子大学生110人の身長、体重のデータがある。このデータを使って、1997年当時の大学生の身長と体重の一般的傾向について議論してみよう。

このとき、

母集団1997年当時の大学生全て

標本1997年の男子大学生110人

今回の統計的推測では、

110人分のデータから、1997年当時の大学生全体の身長と体重の傾向を推測する

ことを目的としている。

  1. まず、Rにデータを取り込む。データは数が多いし空白で区切られているので、c()を使ってデータを取り込むよりは、scan()という関数を使って、h というオブジェクトにデータを入れる方がいい(データの取り込みには他にもいろんな方法があるが、ここではコピー・ペーストで行えるscan()を使って解説する)。
> h=scan()
1:

画面に表示された 1: の後に、上のページから身長データをコピー・ペーストして、最後にenter キーを押す。次のように表示される。

1: 1775  1710 ..
  ..<省略>..
111: 

同様にして、体重データも w というオブジェクトにを入れる。次のように表示される。

1: 79.8 58.0 ..
  ..<省略>..
111: 

確認のために

> h
> w

と入力。データが一覧表示される。

  1. 標本データの視覚化

    計測データが得られたら、まず、グラフにしてみることをオススメする。グラフとして視覚化することで、データの持つ性質が直観的に理解できる。こういうとき、Rを使えば、いろんなグラフを一瞬にして描画できるので、非常に楽。
    まずはヒストグラム(柱状グラフ)を使っみる。Rを使ってヒストグラムを書く場合は

    > hist(h)
    キーボードからたった7文字打ち込むだけ。 身長の度数分布がグラフで表示される。 hist.gif
    このグラフを見ただけで、標本データでは身長170cmぐらいの学生が最も多く、
    データは釣り鐘型の分布をしている。
    ということが分かる。同様のことを体重についてもやってみよう。
    > hist(w)
  2. 要約統計量の表示

    次に、この標本データの平均とか最大値とか、最小値とか、データの集まりがもっている基本的な性質を表示させて見よう。次のように入力。

    > summary(h)
      Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
      1578    1671    1700    1706    1734    1839 
    これで、1997年当時の調査した大学生110人の身長は、平均170.0cm(最大:183.9cm, 最小: 157.8cm)ということが分かった。1st Qu.と3rd Qu.というのは、全体の4分の1の人数がどの高さまでの間に含まれているかということを表している。つまり、167.1cm以下の人が25%、173.4cm以上の人が25%、その間の人が全体の50%ということ。
    &ref(): File not found: "Untitled-5.gif" at page "授業/H21/情報処理/09";
    体重も同様に解析してみよう。
    > summary(w)
  3. 身長と体重の関係を視覚化

    身長も体重も釣り鐘型の分布になっていた。では、この2つの数値の間に何か、関係があるだろうか?これもまた、グラフで表示させてみる。こういう場合、縦軸に体重、横軸に身長をとって、一人一人の持つ身長と体重の散布図を作る。Rの場合、次のように入力するだけ。

    > plot(h,w)
    身長と体重の関係は右上がりの直線関係にありそうだ。
    plot.gif
  4. 統計的推定で分かったこと

    今回、110人分のデータを使って、1997年当時の大学生男子の身長と体重について、

    グラフによる視覚化
    要約統計量の表示
    散布図の作成
    という3つのことを行った。この標本が母集団の性質を表しているとするならば、1997年当時の大学生について、次のような推定ができる。
    1997年当時の男子大学生は、身長の平均が170.6cmで、データは釣り鐘型に分布している
    体重は平均が59.53kgで、身長と同様にデータは釣り鐘型に分布している
    身長と体重の間には、正の相関がある

    なお、今回は分散や標準偏差の話しは省略した。Rを使った統計解析の基本(データの図示、代表値の計算、データ間の相関)などについてはここでは説明しきれないので、下のリンクにある中澤さんによる解説などを読んで、勉強してみて欲しい。。

統計的検定のやりかた [smile]

この授業で対象とする統計解析の2つめは、
"ある対象や実験で得られた数値データを用いて、その対象についてどういう判断を下せば良いかを論じること"

こういう状況を想定してみて欲しい。

ここに一枚のコインがある。聞くところによると、もしかするといかさまコインかもしれない。
実際に20回投げて、裏表の出る回数を数えてみたら、オモテが5回しか出なかった。
このコインはいかさまコインと判断していいだろうか?

ちょっと自分で考えてみてよう(昨年の例は、次のような考え)
コインの裏表どちらが出るかは純粋に偶然で決まるので、何回もやれば必ず1:1になる
サンプル数(試行回数)が少ないなどの理由で、結論づけられない
20回中オモテが5回は少なすぎ李ので、イカサマコインだと考えられる
その他の考え

直観的説明

この後、長い説明があるので、まずは正確さは二の次にして、仮説検定の流れを直観的に理解してもらえるような説明を試みたい。この説明のどこが、後で出てくる「帰無仮説」、「有意水準」、「帰無仮説の棄却」にあたるのか、後ほど考えてみて欲しい。なんとなく理解できたら、どれでもいいから統計の教科書を読んでみて、正確に理解することをオススメする。

snmpenwl.gif
WS000002.JPG

1枚のコインを20回投げたら、オモテが5回しかでなかった。このコインはいかさまコインかなー?


もし、このコインがいかさまコインじゃない(正常なコイン)とすると...

「20回投げて5回しかオモテが出ない」っていうのも、わりとフツーに起こることなんだろーね。


snmpensl.gif
pengraph.gif

わりとフツーに起こるこってどうやって数字で示す?95パーセントぐらいの確率でおこるならフツーって言っていいかな?...
「正常なコインを20回投げる実験」を何度も何度も繰り返して、どの程度オモテがでることかをグラフで表してみると...




snmpengi.gif

なんと!!20回中オモテが出る回数が6回から14回までの場合が、全体の95パーセントだっ!

オモテがでる回数が5回の場合は、残りの5%の範囲に含まれちゃってる...。5%の範囲というのは、フツーじゃ起こらないとした範囲だよなー。


「20回投げて5回しかオモテが出ない」っていうのが、「正常なコイン」ではフツーに起こらないっていうわけだから、

このコインが「正常なコイン」っていう前提が間違っていたと考える方がいいんだろうね。

うん、きっとこのコインは、いかさまコインなんだ


snmpenas.gif

でも、待てよ。フツーじゃ起こらないことの判断基準が5%って大きすぎない?
5%っていうと、、、100回中5回。。。 20回中に1回だ!
っていうことは、もしも、今投げたのが「正常なコイン」だったとしても、20回に1回は、間違った判断を下してしまう可能性があるってことだね。

もう少しだけ詳しい統計的検定の説明

上の例では、あるコインがいかさまコインかどうかを判断するのを、20回の実験の結果を使って行った。こんな単純な例では、生物学の研究と関連しにくいと思われるかもしれないので、少し説明を変えてみよう。

あなたは生物学科の4年生です。卒業研究テーマは「ヨコヅナサシガメの性表現について」というものです。
ヨコヅナサシガメは外来種として問題視されています。通常、集団内の雌雄の比率は1:1ですが、千葉県のある
地域の集団では、どうも、雄の方が多そうだということに気がづきました。この雌雄の差が生じた原因をつきとめ
れば、ヨコヅナサシガメの防除にも使えるかもしれません。予備実験でその地域の調査に行き、あちこちで採集
したところ、20個体採集することができました。性比を調べたところ、15匹が雄、5匹が雌でした。
今後、もっと大規模な調査を計画するためにも、今回の調査結果が、単なる偶然か、それとも、その地域の集団の
性比に偏りがあるせいなのかを判断したいと思います。どうすれば良いでしょうか?

卒業のかかった実験なので、「雄・雌は偶然に決まるに違いない」などとは言ってられなさそうだ。

 そこで、統計的検定の出番。今、知りたいのは、

「採集したうち20匹中5匹が雌という状況は、性比が1:1の生物で、単なる偶然で起こるようなことか、
 あるいは、偶然では滅多に起こらないことか」

ということ。このように、得られたデータが単なる偶然で生じることからかけ離れたことかどうかを知るには、統計的検定という作業が必要になる。

 統計的検定では、次のような論証う。

  1. 帰無仮説と対立仮説を作る
     問題にしているのは、千葉県の調査地域における全てのヨコヅナサシガメからなる集団(母集団と呼びます)の性比。今回の例だと、通常は1:1の性比が、千葉県のある地域集団では、1:1からずれているかどうかを知りたい。そこで、母集団の性質について次のような仮説を作る
    母集団の性比は1:1である
    この仮説のことを 帰無仮説と言いう。(統計の教科書を見ると、帰無仮説には「違いがない」とか「差がない」という仮説を使うと書かれている。今回の場合「『母集団の性比は1:1である』というだけで、「差が無い」とか「違いが無い」とかは言って無いじゃないか?」と思う人がいるかもしれない。しかし、「性比が1:1である」ということは「雄と雌の出現確率には違いが無い」ということを意味している。字面だけで判断するとこんがらがる場合があるので、要注意。)
     帰無仮説に対応して、あなたが持っている仮説は、得られたデータは偶然のせいで偏ったのでは無く、母集団の性比そのものが偏っているというもの。この仮説の事を対立仮説と呼ぶ。今回の場合、対立仮説は、
    母集団の性比は1:1では無い
    というもの。対立仮説は帰無仮説を否定したものになっている。
  2. p値の計算
     次に、帰無仮説が正しいと仮定した場合に、得られたデータが実現する確率を計算する。
    「母集団の性比は1:1である」(帰無仮説)というのを正しいと仮定しているけれど、サンプリングの際の偶然のバラツキで、20匹中5匹が雌になるということがよくあることなのかもしれません。
    そこで、「性比が1:1である母集団から20匹を抽出したとき、5匹が偶然雌になる」という確率を計算して、その確率をもとに、「それがどれだけ起こりにくいこと」かを判断する。この確率の事をp値(Rではp-valueと表示される)と呼ぶ。

     このp値の計算で、一つ注意しなければならないことがあります。それは、
    p値の計算をするときに、20匹中5匹が雌の場合だけを計算するだけではなく
    20匹中雌が5匹以下(5, 4, 3, 2, 1, 0)の場合の確率も計算しなくてはならない
    ということ。この後の議論に出てくるように、起きた事象がどれだけ珍しいことかを判断して、それが滅多におこらないようなことなら、帰無仮説を棄却する。「5匹以下が雌」というそれぞれの事象は「5匹が雌」という事象よりも起こりにくいことなので、そう言う場合にも、帰無仮説は棄却される。そのため、p値の計算は「5匹以下」の場合の確率が必要になるのです。この確率のことを累積確率と呼びます。
    Untitled-4.gif
    hist(xlim=c(0,20),rbinom(10000,20,0.5)) で表示させた

    今回の解説では、片側検定、両側検定の話しは意図的に省略してあります

  3. 有意水準との比較
     次に、得られたデータが実現する確率(p値)とある基準とを比較することで、こういう状況が起きることが、どれほど珍しいことなのかを判断する。多くの場合、基準には0.05(つまり5%)あるいは0.001(つまり0.1%)とか0.0001(つまり0.01%))という値が使われます。この基準のことを有意水準とか危険率と呼ぶ。上で得られたp値と有意水準を比較すると、次の2つの場合が考えられる:
    1. p値が有意水準よりも低い: 「母集団の性比は1:1だけど、サンプリングの際に、たまたまデータに偏りが生じた」(帰無仮説)の状況が生じる確率(p値)が、「希さ」の基準(有意水準)よりも小さいので、そういう状況は滅多に起こらないと考える。つまり、帰無仮説は否定されるということになります。
       くどいようですが、
      「母集団の性比は1:1である」(帰無仮説)(つまり、データの偏りは単なる偶然)
      が棄却されたのですから、
      「母集団の性比は1:1では無い。」(対立仮説)(つまり、データの偏りは、単なる偶然では無い)

      という仮説が採択されます(こういう論理の進め方を背理法と呼びます)。つまり、「20匹中5匹が雌である状況は、偶然で生じることはほとんど無いので、母集団の性比に偏りがある可能性は高い」と考えられる。この場合、得られたデータ(この場合、は20匹中の5匹が雌)には、...の有意水準で、有意差があると言います。
    2. p値が有意水準よりも高い:上と同様に考えると、
      「母集団の性比は1:1である」(帰無仮説)
      が正しいという仮定の下で、「20匹中5匹が雌」という状況が生じる確率(p値)が、「希さ」の基準(有意水準)よりも大きい。言い換えると、「母集団の性比が1:1であるときに、20匹中15匹が雄になるという状況は、別に不思議ではない」ということ。つまり
      「母集団の性比は1:1である」(帰無仮説)という仮説は 棄却 されない
      得られたデータからは帰無仮説を否定できなかったので、この場合、得られたデータ(この場合、は20匹中の雄・雌の数)には、...の有意水準で、有意差が無いと言う。ここで注意しなければならないのは、「有意差が無い」からといって、「母集団の性比は1:1である」と結論づけてはいけないこと。「有意産が無い」のは、「母集団の性比は1:1であってもおかしくは無い」ということを意味しているだけで、単なる偶然の結果かもしれないし、データ数が少ないせいかもしれないし、いろんな場合があり得る。

Rを用いた実際の解析:

 では、実際に先ほどの例をRを使って解析してみよう。この検定は二項検定と呼ばれている。まず、帰無仮説は

母集団の性比は1:1である

ということ。この帰無仮説が正しいと仮定すると、 得られたデータの偏りは、サンプリングの際の偶然の偏りであると考えられます。確率50%で生じる事象が、20回中5回得られたわけだが、検定の際には、これより希な条件も全て含めて確率を計算する。つまり、20回中、5回以下と、さらには雄の数が15以上の事象が生じる確率を計算。  手で計算してもいいが、今回はすぐにRを使ってみよう。上の検定を行うにはbinom.test()関数を使う。

> binom.test(x,n)

と入力するだけで、実際のx個のサンプルの中で、データ値がn回実現したという状況で、そのデータ値は(もう一つの対になるデータ値に対して)母集団中で1:1で出現するという帰無仮説をテストできる。

このテストの詳しい解説は、上記、粕谷さんの統計の本に載っている。
&ref(): File not found: "Untitled-2.gif" at page "授業/H21/情報処理/09";

上の例だと、20サンプル中15サンプルが雄で、帰無仮説は「母集団の性比は1:1」だということでしたから、

> binom.test(5,20)
	Exact binomial test
data:  5 and 20 
number of successes = 5, number of trials = 20, p-value = 0.04139
alternative hypothesis: true probability of success is not equal to 0.5 
95 percent confidence interval:
 0.5089541 0.9134285 
sample estimates:
probability of success 
                  0.25 

p値の値は0.04139なので、有意水準が5%よりも小さい。そこで、帰無仮説「母集団の性比は1:1である」は棄却される。(もちろん、有意水準を0.001にすると棄却されません)

つまり、「調査した地域のヨコヅナサシガメの母集団には、有意水準5%では、雄と雌の性比に偏りがあると考えられる」ということができる(有意水準0.1%の場合は、「性比に偏りがあるかどうか分からなかった」)。「有意水準5%では、性比が1:1という帰無仮説は棄却された」という言い方もある。

どうやらその地域のヨコヅナサシガメの母集団には性比に偏りがありそうなので、卒業研究の調査をすすめても良いかもしれない。

今回の解説では、片側検定、両側検定の話しは意図的に省略してある

Rを使った実際の解析2:2集団の差の検定

 先ほど1997年の男子大学生110の身長データをhというオブジェクトに入れた。【ここをクリック】のもう少し下の方には、1998年当時60歳以上の男性51人の身長のデータものっている。大学生(平均20.52歳)と60以上(平均68.61歳)では、48歳ほどの差がある。同じ成人男性といったって、40年も違う時代に成長期を迎えたわけだから、身長には違いがあってもおかしく無いような気がする。この2つのデータをみて、2つのサンプルの母集団(ランダムサンプリングが行われたとして、1997年当時の男子大学生全てと1998年当時の60歳以上の男性全て)の間で身長には差があると言っても良いだろうか?

60歳以上の男性の身長データをオブジェクトに格納。scan()関数を使って

> h2=scan()
1:  1547  1689 ..
  ..<省略>..
52: 

hとh2のそれぞれの平均値やヒストグラムを比べる。

> summary(h)
> summary(h2)
> hist(h)
> hist(h2)

平均値やヒストグラムを見た限りでは、けっこう違いがありそう。

Untitled-6.gif
もう一つグラフを作ってみよう。2集団のデータを簡単に比較するときに便利な関数が、boxplot()。

> boxplot(h,h2)

さて、いよいいよ検定。考え方は上で示したのと全く同じ。ただし、データの持っている性質が違うので、p値の計算方法は異なる。このような2集団の違いの検定には、Wilcoxonの順位和検定という方法を使う。検定の説明はブラックボックスになりがちだが、上で紹介した粕谷さんの本や、中澤さんのRの使い方pdfには、詳しい考え方の説明があるので、読んでおいて欲しい。今回はRを使った統計的検定がいかに楽かということを示すのが目的なので、詳しくは触れない。

 まず、ヨコヅナサシガメの例で見たように、帰無仮説と対立仮説を決める。

帰無仮説: 2つのサンプルの母集団の身長に差は無い
対立仮説: 2つのサンプルの母集団の身長に差はある

 2つの母集団に違いがなければ、hとh2という集団のデータは、母集団から抽出したときに、たまたま偶然で偏ってしまったものということ。そういう偶然の偏りでこれだけの違いが生じるのは、どのくらいの確率(p値)で生じるのかを計算する。Rではwilcox.test()という関数を使います。

> wilcox.test(h,h2)
	Wilcoxon rank sum test with continuity correction
data:  h and h2 
W = 4957, p-value = 5.329e-15
alternative hypothesis: true mu is not equal to 0 

p値の値は 5.329e-15 で、これは 5.329x10^(-15) を示している。つまり、0.0000000000000005329。これは有意水準の0.01%よりもずーっと小さい値なので、2つの身長データの違いが同一母集団から偶然のサンプリングのバラツキでで生まれたということはほとんど無い、ということを示している。統計学っぽく表現すると、「2集団の差をWilcoxonテストで検定した結果、0.01%の有意水準で有意な差があった」と書く。

どうやら、40年も年齢の異なる2つの母集団の身長には差があると言って良さそう。やっぱり、成長期に摂取できた栄養の影響などが、きっと大きいのだろう。

リンク:

演習:今日の正規表現: データ整形

前回課題2

   * 1:30	    * 2:28
   * 1:30	    * 2:18
   * 1:34	    * 2:30
   * 1:31	    * 2:28
   * 1:18	    * 2:31
   * 1:34	    * 2:18
   * 1:18	    * 2:30
   * 1:34	    * 2:30
   * 1:31	    * 2:28
   * 1:34	    * 2:30
   * 1:34	    * 2:16
   * 1:28	    * 2:16
   * 1:30	    * 2:28
   * 1:30	    * 2:18
   * 1:30	    * 2:19
   * 1:18	    * 2:11
   * 1:31	    * 2:28
   * 1:28	    * 2:30
   * 1:30	    * 2:31
   * 1:18	    * 2:30
   * 1:28	    * 2:34
   * 1:30	    * 2:31
   * 1:22	    * 2:31
   * 1:28	    * 2:32
   * 1: 28	    * 2: 30
   * 1:34	    * 2:18
   * 1:34	    * 2:28
   * 1:30	    * 2:28
   * 1:23	    * 2:34
   * 1:30	    * 2:18
   * 1:18	    * 2:17
   * 1:30番の葉緑体	    * 2:15番の葉緑体
   * 1:28	    * 2:24
   * 1:30	    * 2:31

前回課題3 : Ozawa-kenによるタイピング技能測定結果

C	B	B	B	C	A
B	B	A+++	B	S	C
A+	B	G	B	B	C
B	C	C	A	C	C
B	B	C	G	B	A+++
B	C	C	C		

タイピングに苦手意識が無くなれば、コンピュータへの苦手意識も減少するので、今後もぜひ練習をつづけるように。
最後の講義の前にもう一度測定するが、上達の程度によっては加点対象になるかも。

第9回授業の課題

課題1.意見調査

  1. http://bean.bio.chiba-u.jp/joho/index.php?joho20 に、「自分のID」/09 という新しいページを作成し、下の囲みの中にあるアンケートをコピー・ペーストして、「回答:」の後に答えを書き込むこと。

課題2. Rを使った統計解析:ヒストグラムの表示

課題3.Rを使った統計解析

課題4. Rを使った統計的検定