#12 t分布

検定でよく使われるt分布も、正規乱数から導くことができます。

  1. 10000行×5列のデータフレームd01に、独立の標準正規乱数を50000個代入し、各列に、X1、X2、X3、X4、X5という名前をつけなさい。
  2. 各列を2乗し、合計をとった値
    \[X_2^2+X_3^2+X_4^2+X_5^2\]
    をd02に代入しなさい。ちなみにd02は、どんな分布に従いますか?
  3. X1をd02を4で割ったものの平方根で割り、それをd03に代入しなさい。
    \[\frac{X_1}{\sqrt{\frac{d02}{4}}}\]
  4. d03と自由度4のt分布を比較しなさい。

R Tips

data.frame関数は、データフレームを作成します。4行3列のデータフレームは、

data.frame(c(1,2,3,4),c(5,6,7,8),c(9,10,11,12))

というふうにベクトルをくっつけてもつくれるし、一旦行列として

data.frame(matrix(1:12,nrow=4,ncol=3))

とすることもできます。
列に名前を与えるときは、colnames関数(またはnames関数)を使って、

colnames(d01)<-c(“name1″,”name2″,”name3”)

というふうにします。このように名前を与えるとデータフレームd01だったら、d01$name1というふうに列のデータを取り出すことができます。ちなみに行に名前を与えるときは、rownames関数を使います。
matrix関数は、引数に、行列にしたい数字を与えて、その後行の数をnrow=、列の数をncol=で与えると、行列を返します。引き数名は、順番を間違えなければ、省略することもできます。列数か行数かのどちらかがわかるだけでもよいので、どちらかの数字を省略することもできます。以下は、すべて同じです。

matrix(1:12,nrow=4,ncol=3)
matrix(1:12,4,3)
matrix(1:12,,3)
matrix(1:12,4,)

matrix関数は、与えられたベクトルの要素を1列→2列→・・・の順番で配置していきますが、これを1行→2行→・・・の順番で配置したいときは、byrow=の引数を使います。

matrix(1:12,4,3,byrow=T)

attach関数を使うと、特定のデータフレームの列(変数)を、データフレーム名無しで扱うことができるようになります。通常d01のname1という変数は、


d01$name1
d01[,”name1″]
d01[,1]    #name1が1列めに入っているとしたら

のいずれかで指定しますが、

attach(d01)

とすると

name1

だけで指定できます。attachを解除するときはdetach関数を使います。

detach(d01)
name1

を試してみてください。

dt関数は、t分布の確率密度を返します。t=2のとき、$t$が自由度3のt分布に従うとき、$t=2$の確率密度は、

dt(2,3)

で求めることができます。

t分布の密度分布
最も頂点が高いのは標準正規分布。t分布は標準正規分布より裾野が広いですが、自由度が高まると標準正規分布に近づきます。


[sourcecode language=’c’]

f01<-function(x) dt(x,1) f02<-function(x) dt(x,2) f03<-function(x) dt(x,3) f05<-function(x) dt(x,5) f10<-function(x) dt(x,10) f50<-function(x) dt(x,50) curve(f01,x=c(-8,8),ylim=c(0,0.4),col=1) par(new=T) curve(f02,x=c(-8,8),ylim=c(0,0.4),col=2) par(new=T) curve(f03,x=c(-8,8),ylim=c(0,0.4),col=3) par(new=T) curve(f05,x=c(-8,8),ylim=c(0,0.4),col=4) par(new=T) curve(f10,x=c(-8,8),ylim=c(0,0.4),col=5) par(new=T) curve(f50,x=c(-8,8),ylim=c(0,0.4),col=6) par(new=T) curve(dnorm,x=c(-8,8),ylim=c(0,0.4),col=1) [/sourcecode]

統計のはなし

確率変数$X$並びに$X_1,X2,…,X_k$が、独立に標準正規分布$N(0,1)$に従うとき、

\[
\frac{X}{\sqrt{\frac{X_1^2+X_2^2+\cdots +X_k^2}{k}}}
\]

は、自由度$k$のt分布に従う。

おすすめ