群馬大学 | 医学部 | サイトトップ | 医学情報処理演習
今回使った関数や文の主なものをまとめます (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()とほぼ同じ。 |