群馬大学 | 医学部 | サイトトップ | 医学情報処理演習

医学情報処理演習:2011年度第4回の関数一覧など

第4回に使った関数や文の主なものをまとめます (A selected summary of functions and statements used in the 4th practice is shown here.)

このまとめには,昨年の受講者W君の多大な協力を得ました。感謝します。(Special Thanks to Mr. W!!)

関数名(name)機能(effect)使い方(usage)
c()ベクトルを作る
rep()繰り返しを行うrep(A,B)でAをBだけ繰り返す。Bはベクトルでもよい。例えばrep(1:3,c(2,3,4))とすると1,1,2,2,2,3,3,3,3と対応して返してくれる。さらにオプションeachでこれの回数を固定したものも作れる。例としてrep(1:3,each=2)とすると1,1,2,2,3,3と、最初のベクトルの要素をそれぞれ2回繰り返す。
RNGkind()乱数発生のアルゴリズムを指定するオプションにはkindとnormal.kindがありkindは乱数をnormal.kindは正規乱数を発生させるアルゴリズムを指定する(ただし、厳密には疑似乱数)。デフォルトではMersenne-Twister法になっている。他の手法を用いたければ?RNGkindとしてヘルプを参照されたし。
set.seed()乱数を発生させる際の”種”を決める乱数発生の際にはその都度指定しなければならない。くわしくは後述の補足にて。
rnorm()正規乱数を発生させるrnorm(N,mean,sd)で平均値mean、標準偏差sdの正規乱数をN個発生させる。
layout()グラフィックのレイアウトを指定する4つのグラフを左上、右上、左下、右下の順にしたいときはlayout(matrix(c(1,3,2,4),2))かlayout(matrix(1:4,2,byrow=TRUE))とする。つまり望む順番を要素とする行列を作ればよい。
hist()ヒストグラムを描く
sample()サンプル抽出を行うsample(X,n)でXというベクトルから長さnの部分ベクトルを抽出する。オプションとしてreplaceをTRUEにすることで復元抽出をする。デフォルトではFALSEになっている。復元抽出とは抽出したものを母集団に戻して抽出を行うこと。例えばsample(1:10,4,replace=T)だと1,1,7,9といった結果になったりもする。
print()オブジェクトを表示する例えばx <- "defense mechanism"として、print(x)とすることで"defense mechanism"と出力する。""をはずしたい場合はオプションでquote=FALSEとする。あまり意味がないように見える関数だが、function(){}などは原則として最後の出力しか表示されないので、間にprint()をはさむと最後に関数中から強制的に出力してくれる。
mean()(算術)平均を返す
sd()標準偏差を返す
for(){}()内だけを{}内を繰り返す
runif()一様乱数を発生させるrunif(N,min,max)で最小値minから最大値maxまでの一様分布(簡単にいえば事象の確率に偏りのない)N個の乱数を発生させる。例えばU <- runif(100,0,1)
function(){}関数を定義する例えばdice <- function(N){as.integer(runif(N,1,7))}とすると、サイコロの結果を乱数で発生させることが出来る。(厳密にはifelse()などで7のときを除かないといけないが)
sqrt()平方根を返す負の値を引数にしたい場合はsqrt(as.complex(-1))などとして、型を複素数型にすればよい。
var()不偏分散を返す
length()要素数を返す
dnorm()正規分布の確率密度関数dnorm(A,mean,sd)で平均mean、標準偏差sdの正規分布におけるAの確率密度を返す。ちなみに?dnormで正規分布の確率密度関数を見ることができるので参考に。
lines()線を引くlines(X,Y)とすることでX、Yを通る曲線を描く。X,Yはベクトル。注意しなければいけないのはXに対応するYを入力するのであって、通る座標を直接入力するわけではないということ。例えば点(1,10)と(4,20)を通る直線を描きたいときはlines(c(1,4),c(10,20))とする。オプションは色指定のcolと、線の種類を指定するlty。
matrix()行列を作る
qt()t分布の分位点関数分位点と自由度を指定する。例えばあるデータXの97.5%分位点はqt(0.975,length(X)-1)で求める事ができる。
t.test()t検定を行うt.test(X1,X2)でX1とX2という2群(長さは無関係)において、平均値に差はないという帰無仮説で検定を行う。詳しくは第6回にて。
補足確率分布に関する関数名について各関数名は一定の法則に従っている。確率密度関数はdXXXX()。累積確率分布関数(確率母関数)はpXXXX()。分位点関数はqXXXX()。乱数発生関数はrXXXX()。XXXXには特定の確率分布に対応した文字列を入れる(例としてnormやunifなど)。
累積確率分布関数と分位点関数についてこの2つの関数は逆関数の関係にある。例えば正規分布においてpnorm(1.96,mean=0,sd=1)は0.9750021であり、qnorm(0.975,0,1)は1.959964である。ちなみに正規分布においてこの1.96と0.975(左右で0.95)は覚えておくとよい(かも)。
乱数発生について統計学では乱数を用いる際に、その再現性を得るために特定の手法を決めておく。それを今回はRNGkind()とset.seed()で設定した。この二つの関数は数列に例えられる。RNGkind()とは数列で言うところの一般項や漸化式といった「法則性」を指定する。それに対しset.seed()は数列でいうところの「初項」を指定する。これによって再現性を得ているのである。
自由度について自由度とは変数のうち自由に選べるものの数である。例えば「好きな数字を5個選べ」と言われたら、その自由度は5である。しかし「好きな数字を5個選べ。ただし平均値が10になるようにしろ」と言われれば実際に自由に選べる数字は4つに限られてしまう。つまり自由度が4になる。これと同じことが統計では起きる。生のデータや平均値などは自由度がそのままだが、例えば不偏分散はその計算過程で母平均値μ(厳密には平均値を不偏推定量としている場合がほとんど)によって縛られてしまうので自由度が1減る。

リンクと引用について