• 追加された行はこの色です。
  • 削除された行はこの色です。
*はじめに [#w5ae99c9]

ここでは,Rを使って平均,分散,標準偏差を求めます.
ここでは、Rを使って平均、分散、標準偏差を求めます。

『Rによるバイオインフォマティクスデータ解析』の3.3節「基本統計関数」に少しだけ出てきます.
『Rによるバイオインフォマティクスデータ解析』の3.3節「基本統計関数」に少しだけ出てきます。

#html{{
<iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=tohgoroh-22&o=9&p=8&l=as1&asins=4320057082&ref=tf_til&fc1=444B4C&IS2=1&lt1=_blank&m=amazon&lc1=444B4C&bc1=FFFFFF&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>
}}


*準備 [#q96ce9c2]

Rのインストールについては,次のページを見てください.
Rのインストールについては、次のページを見てください。
-[[MacでRを使う>機械学習/MacでRを使う]]
-[[WindowsでRを使う>機械学習/WindowsでRを使う]]

ここでは,標準で使用できる''irisデータセット''を使います.
ここでは、標準で使用できる''irisデータセット''を使います。
#geshi(rsplus){{
> data(iris)
}}

このデータセットは,アヤメの種類(Species)を花びらの長さ(Sepal.Length),幅(Lepal.Width),がくの長さ(Petal.Length),幅(Petal.Width)によって分類する問題です.
長さと幅は連続値,種類はsetosa, versicolor, virginicaのいずれかをとる離散値です.
このデータセットは、アヤメの種類(Species)を花びらの長さ(Sepal.Length)、幅(Lepal.Width)、がくの長さ(Petal.Length)、幅(Petal.Width)によって分類する問題です。
長さと幅は連続値、種類はsetosa, versicolor, virginicaのいずれかをとる離散値です。

このデータセットには,setosa, versicolor, virginicaという3種類のアヤメについて,それぞれ50個ずつ,合計150個のデータが含まれています.
ランダムに10個のデータを選択して,見てみましょう.
このデータセットには、setosa, versicolor, virginicaという3種類のアヤメについて、それぞれ50個ずつ、合計150個のデータが含まれています。
ランダムに10個のデータを選択して、見てみましょう。
#geshi(rsplus){{
> iris[sort(sample(1:150,10)),]
    Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
4            4.6         3.1          1.5         0.2     setosa
22           5.1         3.7          1.5         0.4     setosa
65           5.6         2.9          3.6         1.3 versicolor
97           5.7         2.9          4.2         1.3 versicolor
100          5.7         2.8          4.1         1.3 versicolor
108          7.3         2.9          6.3         1.8  virginica
116          6.4         3.2          5.3         2.3  virginica
122          5.6         2.8          4.9         2.0  virginica
136          7.7         3.0          6.1         2.3  virginica
146          6.7         3.0          5.2         2.3  virginica
}}


ここでは,setosaのSepal.Lengthだけを扱います.
ここでは、setosaのSepal.Lengthだけを扱います。

Speciesの値がsetosaのデータだけを取り出すには,次のようにします.
Speciesの値がsetosaのデータだけを取り出すには、次のようにします。
#geshi(rsplus){{
> iris[iris$Species=='setosa',]
}}
コンマを忘れないようにしてください.
コンマを忘れないようにしてください。

Speciesの値がsetosaのデータのSepal.Lengthの値(つまり,1列目の値)だけを取り出して,setosa.Petal.Lengthとします.
Speciesの値がsetosaのデータのSepal.Lengthの値(つまり、1列目の値)だけを取り出して、setosa.Petal.Lengthとします。
#geshi(rsplus){{
> setosa.Sepal.Length <- iris[iris['Species']=='setosa',1]
}}



*ヒストグラム [#wa8f8e55]

ヒストグラムを表示するには''hist関数''を使います.
ヒストグラムを表示するには''hist関数''を使います。
#geshi(rsplus){{
> hist(setosa.Sepal.Length)
}}
#ref(histgram_1.png,nolink,50%)

区間は適当に決めてくれますが,区間を変更したり,色を付けたりすることもできます.
区間は適当に決めてくれますが、区間を変更したり、色を付けたりすることもできます。
#geshi(rsplus){{
> hist(setosa.Sepal.Length, breaks=12, col='gray')
}}
#ref(histgram_2.png,nolink,50%)

頻度の替わりに確率密度を縦軸にすることもできます.
頻度の替わりに確率密度を縦軸にすることもできます。
#geshi(rsplus){{
> hist(setosa.Sepal.Length, breaks=12, col='gray', freq=F)
}}
#ref(histgram_3.png,nolink,50%)


*平均 [#ee0baa35]

平均は,値の合計を値の数で割ったものです.
平均は、値の合計を値の数で割ったものです。
\[\mu(X) = \frac{\sum_{i=1}^{n} x_i}{n}\]

平均を求めるには,''mean関数''を使います.
平均を求めるには、''mean関数''を使います。
#geshi(rsplus){{
> mean(setosa.Sepal.Length)
[1] 5.006
}}

平均値からのズレ [math]x_i - \mu(x)[/math] を偏差といいます.
平均値からのズレ [math]x_i - \mu(x)[/math] を偏差といいます。


*分散 [#ded26716]

不偏分散は,標本(サンプル・データ)に含まれる値の偏差の平方和を標本数から1を引いた値で割ったものです.
なぜ標本数から1を引くのかについては,統計の教科書で勉強してください.
不偏分散は、標本(サンプル・データ)に含まれる値の偏差の平方和を標本数から1を引いた値で割ったものです。
なぜ標本数から1を引くのかについては、統計の教科書で勉強してください。
\[\mathrm{Var}(X) = \frac{\sum_{i=1}^{n} (x_i - \mu(X))^2}{n-1}\]

不偏分散を求めるには,''var関数''を使います.
不偏分散を求めるには、''var関数''を使います。
#geshi(rsplus){{
> var(setosa.Sepal.Length)
[1] 0.124249
}}


*標準偏差 [#t6948fa7]

不偏標準偏差は,不偏分散の平方根です.
不偏標準偏差は、不偏分散の平方根です。
\[\sigma(X) = \sqrt{Var(X)}\]

不偏標準偏差を求めるには,''sd関数''を使います.
不偏標準偏差を求めるには、''sd関数''を使います。
#geshi(rsplus){{
> sd(setosa.Sepal.Length)
[1] 0.3524897
}}


*正規分布の確率密度関数 [#sbccf3e1]

正規分布の確率密度関数は以下の式で与えられます.
正規分布の確率密度関数は以下の式で与えられます。
\[ f(x) = \frac{1}{\sqrt{2\pi}\sigma} e^{-\frac{(x-\mu)^2}{2\sigma^2}} \]

Rで正規分布の確率密度関数を求めるには''dnorm関数''を用います.
パラメーターは平均 mean と標準偏差 sd です.
Rで正規分布の確率密度関数を求めるには''dnorm関数''を用います。
パラメーターは平均 mean と標準偏差 sd です。

まずは,平均0,標準偏差1の正規を描いてみましょう.
まずは、平均0、標準偏差1の正規を描いてみましょう。

グラフを描くには''curve関数''を使います.第一引数には変数xを含んだ式を与えます.
グラフを描くには''curve関数''を使います。第一引数には変数xを含んだ式を与えます。
#geshi(rsplus){{
> curve(dnorm(x, mean=0, sd=1), from=-5, to=5)
}}
#ref(density.png,nolink,50%)


*ヒストグラムと確率密度関数の重ね書き [#p8498d99]

最後に,ヒストグラムとデータから推定した正規分布の確率密度関数を重ね書きしてみましょう.
最後に、ヒストグラムとデータから推定した正規分布の確率密度関数を重ね書きしてみましょう。

まずは,ヒストグラムを確率密度で表示しておきます.
まずは、ヒストグラムを確率密度で表示しておきます。
#geshi(rsplus){{
> hist(setosa.Sepal.Length, breaks=12, col='gray', freq=F)
}}
#ref(histgram_3.png,nolink,50%)

平均muと標準偏差sigmaを求めておきます.
平均muと標準偏差sigmaを求めておきます。
#geshi(rsplus){{
> mu <- mean(setosa.Sepal.Length)
> sigma <- sd(setosa.Sepal.Length)
}}

平均muと標準偏差sigmaの確率密関数をヒストグラムに重ね書きします.
平均muと標準偏差sigmaの確率密関数をヒストグラムに重ね書きします。
#geshi(rsplus){{
> curve(dnorm(x, mean=mu, sd=sigma), add=T)
}}
#ref(histgram_4.png,nolink,50%)


*平均値の差の検定(t検定) [#zf6ee43e]

setosaのSepal.Lengthの平均値は5.006でした。
versicolorのSepal.Lengthの平均値は5.936です。

この二つの平均値にの差には、意味があるのでしょうか。

これを、''t検定''という方法によって調べることができます。

''t検定''では、「二つの平均値の差には意味がある」という仮説に対して、「二つの平均値の差には意味がない」という反対の仮説(''帰無仮説'')を立て、帰無仮説が成り立たないことを示す(''棄却''する)ことによって、最初の仮説が成り立つことを示します。

t検定を行うには、''t.test関数''を使います。
#geshi(rsplus){{
> setosa.Sepal.Length <- iris[iris['Species']=='setosa',1]
> versicolor.Sepal.Length <- iris[iris['Species']=='versicolor',1]
> t.test(setosa.Sepal.Length, versicolor.Sepal.Length)

	Welch Two Sample t-test

data:  setosa.Sepal.Length and versicolor.Sepal.Length
t = -10.521, df = 86.538, p-value < 2.2e-16
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -1.1057074 -0.7542926
sample estimates:
mean of x mean of y 
    5.006     5.936 

}}
これは、二つの群の分散が同じであることを仮定しない、Welchのt検定といいます。

二つの群の分散が同じであることを仮定する検定はStudentのt検定といい、オプションとして var.equal=T を付けます。
#geshi(rsplus){{
> t.test(setosa.Sepal.Length, versicolor.Sepal.Length, var.equal=T)

	Two Sample t-test

data:  setosa.Sepal.Length and versicolor.Sepal.Length
t = -10.521, df = 98, p-value < 2.2e-16
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -1.1054165 -0.7545835
sample estimates:
mean of x mean of y 
    5.006     5.936 

}}

まず、p値(''p-value'')を見ます。
p値は、平均値の差がゼロになる確率を表しています。

p値が、0.1よりも小さいときは「10%有意で平均に差がある」、0.05よりも小さいときは「5%有意で平均に差がある」、0.01よりも小さいときは「1%有意で平均に差があるといいます。
この、10%、5%、1%のことを、''有意水準''といいます。

つぎに、95%信頼区間(''95 percent confidence interval'')を見ます。
平均値の差が95%の確率でこの区間に入ることを意味します。

この区間がゼロを含むときは、5%有意水準で帰無仮説を棄却できない、つまり、5%有意で平均に差があるとはいえません。
「5%有意で平均に差がない」ではないことに注意しましょう。



*演習 [#t115f943]

irisのSepal.Length以外のデータに対して,平均 [math]\mu[/math] と不偏標準偏差 [math]\sigma[/math] を求め,そのヒストグラムと平均 [math]\mu[/math],標準偏差 [math]\sigma[/math] の正規分布の確率密度関数を重ねて描いてみよう.
irisのSepal.Length以外のデータに対して、平均 [math]\mu[/math] と不偏標準偏差 [math]\sigma[/math] を求め、そのヒストグラムと平均 [math]\mu[/math]、標準偏差 [math]\sigma[/math] の正規分布の確率密度関数を重ねて描いてみよう。

また、irisデータにおいて、versicolorのSepal.Lengthの平均値とvirginicaのSepal.Lengthの平均値の間に統計的有意な差があるかどうかを調べてみよう。



*参考文献 [#zf4d0948]

#html{{
<iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=tohgoroh-22&o=9&p=8&l=as1&asins=4320057082&ref=tf_til&fc1=444B4C&IS2=1&lt1=_blank&m=amazon&lc1=444B4C&bc1=FFFFFF&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>
}}

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS