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

医学情報処理演習:2011年度第13回の関数

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

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

関数名(name)機能(effect)使い方(usage)
c()ベクトルを形成する
rep()繰り返して返す
data.frame()データフレームを形成する例えばID <- 1:3とWeight <- c(70,65,58)としたあとで dat <- data.frame(ID,Weight)とすることでデータフレームを作ることができる。 cbind()と似ているがcbind(ID,Weight)として作ったものとstr()で比較してみると違いが分かる。
factor()要因型のデータを生成する例えばc("Diamond","Pearl","Platinum")としても、文字列型の長さ3のベクトルができるだけだが(str()で確認可)、factor(c("Diamond","Pearl","Platinum"))とすると、3水準の要因型のデータになる。オプションordered=TRUEで順位付けすることも可能。
length()要素数を返す
rank()順位を返すたとえば rank(c(2,"apple",3,2+4i,3,"orange"))とすると 1.0 5.0 3.5 2.0 3.5 6.0と返す。数値は実数部を参照してから虚数部を参照し、文字列は最後にアルファベット順で順位を与えられる。タイ値(=同順位の値)は順位を平均して返す。
sum()合計値を返す
sqrt()平方根を取る
pnorm()正規分布の確率母関数を返す
boxplot()箱ひげ図を描くboxplot(x)でxの箱ひげ図を描く。箱ひげ図は視覚的に分布の度合いを見ることができ、さらに四分位点や外れ値などが分かる。しかしデータ数は反映しないので、例えば1から10まで公差が1および0.1の2つの等差数列はほぼ同じ図になる。
wilcox.test()Wilcoxonの順位和検定を行うwilcox.test(group1,group2)でgroup1とgroup2に対して分布の位置に差がないか検定を行う。またはwilcox.test(X~C)で量的変数Xを群分け変数Cで分けて検定する。オプションにはparied、alt、exactやcorrectがある。paired=TRUEでexactでは対応があると指定できる。alt="greater"とするとgroup1がgroup2より大きいという対立仮説を立てる。デフォルトではalt="two.sided"なのでデータによっては注意。exact=FALSEで正確な検定をしないように指定できる。正確な検定をすると、タイ値がある場合に警告メッセージがでる(各群のサンプル数が50以下だと自動で正確な検定を行うが、タイ値があると正確な検定はできないため)。また、correct=FALSEで連続性の修正をしないこともできる。連続性の修正に関してはhttp://phi.med.gunma-u.ac.jp/msb/medstatbook.pdfのp.183などを参照。
stripchart()ストリップチャートを描く例えば,Rの組み込みデータであるsleepで,睡眠薬の種類(変数group)ごとに睡眠増加時間(変数extra)を縦軸として,横にばらつかせながらプロットするには,stripchart(extra ~ group, data=sleep, vert=TRUE, method="jitter")とする。
attach()データフレームをアタッチする例えばattach(sleep)とすれば,いちいちsleep$extraとしなくても,extraだけでsleepデータフレーム内の睡眠増加時間を示す変数を参照できるようになる。
detach()データフレームをデタッチするdetach(x)で、すでにアタッチしてあるxというリストのアタッチを解除する。これをデタッチという。
median()中央値を返す
fisher.test()fisherの正確確率検定を行う引数には行列を与える。2×2行列を与えればオッズ比も返す。
cbind()ベクトルを列方向に連結するcbind(A,B)でA,Bを列ベクトルとして連結する。大きさはmax(A,B)×2になる。A,Bのうち短い方は必要な分だけ繰り返される。行ベクトルにしたければrbind()を使う。
table()データを集計して返すベクトルを1つ与えると値(カテゴリ)ごとに頻度を集計して度数分布ベクトルを返し,2つ以上のベクトルを与えるとクロス集計表(tableクラスをもつ行列)を返す。(注)xtabs()も同様。返り値のクラスはtableになる。
subset()部分集合を抽出するsubset(X,条件式)でXのうち条件式を満たす部分集合を抽出する。たとえばR内のsleepというデータのうち、groupという変数の1を満たす部分集合はsubset(sleep,group==1)とすればよい。オプションでdrop=FALSEとすることで抽出する際の次元が小さくなることを防げる。
fligner.test()Fligner-Killeenの検定を行う量的変数Xと群分け変数Cによってfligner.test(X~C)とすればCによって群ごとにXを検定する。これによって多群間のばらつきの同等性を検定する。
kruskal.test()Kruskal-Wallisの検定を行う量的変数Xと群分け変数Cによってkruskal.test(X~C)とすればCによって群ごとにXを検定する。上記Fligner-Killeen検定の後に群分け変数Cによって量的変数Xが影響を受けているかどうかを検定する。
friedman.test()Friedmanの検定を行う対応のある多群の差の検定に用いる。たとえば、A〜Cという3か所で、とある肥料を1〜4という量用いて、収穫量のデータを得たとする。このとき3行4列のデータが得られる。ここで各土地のデータ(つまり行方向)には対応があると考えられる。この場合このデータをDataとすると、friedman.test(Data)とすることで、friedmanの検定を行い、肥料に効果があったのか検定する。
pairwise.wilcox.test()wilcoxonの順位和検定で多重比較を行うpairwise.wilcox.test(X,C)で量的データXを群分け変数Cによって、群ごとの多重比較を行う。オプションにはexactやp.adjustがあり、exactでは正確な検定を、p.adjustでは"holm"や"bonferroni"などを指定できる。群分け変数Cは"X~C"ではなく"X,C"と入力することに注意。
補足データフレームについてデータフレームとは、要素が全て同じ長さのベクトルからなる特殊なリスト(下記参照)であり、各行と各列がラベルを持つ特殊な行列でもある(rownames()関数は行列とデータフレームにだけ適用可能である)。各行は一組の観測値を、各列は変数を表す。例えばAさんとBさんの体重と性別というデータフレームでは各行は二人の観測値を表すし、体重や性別は変数である。また体重や年齢がラベルである。さらにデータフレームはリストなので体重のような量的データと、性別のような質的データをまとめることもできる。
リストについてリストとはデータ構造を連結させたものである。データ構造にはベクトル(1次元)、行列(2次元)、配列(多次元)があるが、リストはこれらすべてを要素にすることができる。つまり一つ目の要素を行列、2つ目を配列、3つ目を行列などとできる。Rではlist()関数で作成可能である。使い方はc()とほぼ同じ。

リンクと引用について