出てくる関数・文の主なものの一覧はこちら。第4回:標本統計量と母数推定(10月31日1-3時限):出席登録はこちら。出てくる関数・文の主なものの一覧はこちら。第5回:データの分布(11月7日1-3時限):出席登録はこちら。出てくる関数・文の主なものの一覧はこちら。課題解答例と主なコメント・質問への回答はこちら。第6回:平均値の差の検定(11月14日1-3時限):出席登録はこちら。出てくる関数・文の主なものの一覧はこちら。課題解答例と主なコメント・質問への回答はこちら。第7回:一元配置分散分析と多重比較(11月21日1-3時限):出席登録はこちら。出てくる関数・文の主なものの一覧はこちら。課題解答例と主なコメント・質問への回答はこちら。第8回:相関と回帰(11月28日1-3時限):出席登録はこちら。出てくる関数・文の主なものの一覧はこちら。課題解答例と主なコメント・質問への回答はこちら。第9回:計数データと比率の解析[1](12月5日1-3時限):出席登録はこちら。出てくる関数・文の主なものの一覧はこちら。課題解答例と主なコメント・質問への回答はこちら。第10回:計数データと比率の解析[2](12月12日1-3時限):出席登録はこちら。課題を除く演習内容はこちら。出てくる関数・文の主なものの一覧はこちら。課題解答例と主なコメント・質問への回答はこちら。第11回:クロス集計[1](12月19日1-3時限):出席登録はこちら。課題を除く演習内容はこちら。出てくる関数・文の主なものの一覧はこちら。課題解答例と主なコメント・質問への回答はこちら。第12回:クロス集計[2](1月16日1-3時限):出席登録はこちら。課題を除く演習内容はこちら。出てくる関数・文の主なものの一覧はこちら。課題解答例と主なコメント・質問への回答はこちら。第13回:量的データのノンパラメトリックな分析法(1月23日1-3時限):出席登録はこちら。出てくる関数・文の主なものの一覧はこちら。課題解答例と主なコメント・質問への回答はこちら。第14回:モデルの当てはめと生存時間解析(1月30日1-3時限):出席登録はこちら。課題を除く演習内容はこちら。今回,課題はありませんが,こちらから感想やコメントを送ってください。Bクラス(要,この試験のためのユーザ名とパスワード)※学外からは見えません。基本的な事項についての補足Rというよりもコンピュータ操作上の作法に近い,基本的なところで躓かないために,以下注意事項を補足します。不明なことがあれば気軽に問い合わせてください。作業フォルダの設定等について●Vistaのせいだと思いますが,演習室ではRのファイルメニューの「ディレクトリの変更」がうまく動作しません。Vistaの場合,管理者権限がないために制限される機能が非常に多いのですが,暫定的な対処法を考えたので説明しておきます。●簡単に言うと,マイドキュメントを作業フォルダとしてRを起動させるための専用のアイコンを作ってしまえばいいのです。手順は以下の通りです。スタートメニューの「すべてのプログラム」「R」「R-2.11.1」の上でマウスの右ボタンをクリックしたままデスクトップまでドラッグし,手を離したときに出てくるウィンドウで「コピー」を選ぶコピーされた起動アイコンの上でマウスの右ボタンをクリックし,「プロパティ」を選ぶ→プロパティウィンドウ(*)が表示されるスタートメニューの「ドキュメント」の上でマウスの右ボタンをクリックし(もしかするとキーボードの[Shift]キーを押しながらクリックする必要があるかもしれません),「パスとしてコピー」を選ぶ先に表示されたプロパティウィンドウ(*)の,「作業フォルダ」のところにマウスカーソルをもっていき,右ボタンをクリックして「貼り付け」を選ぶ(参考)プロパティウィンドウ(*)の「リンク先」のところで,"****\Rgui.exe"となっている後にスペースを空けてオプションをつけておくと,表示言語やウィンドウタイプの設定ができる。デフォルトではMDIといって大きなウィンドウの中に複数の小さなウィンドウが開く形で動作するが,--sdiオプションを付けておけば完全に独立したウィンドウが複数開く形で動作する。LC_ALL=Cオプションを付けると表示言語が英語になる。[OK]ボタンをクリックしてウィンドウを閉じるデスクトップに残っている「R」の文字のアイコンをダブルクリックしてRを起動すれば,作業フォルダが,Excelなどでファイルを保存できる場所と共通の,マイドキュメントになるはずです。講義日程表第1回の項に戻る。・何かの動作をする関数に,データオブジェクト(変数)を与えると,その関数を変数に適用した結果を返すのが基本動作。(例)合計を計算する関数はsum()。オブジェクトxの合計を計算させたければsum(x)とすればいいし,オブジェクトyの合計を計算させたければsum(y)とすればいい。・関数は入れ子にできる。棒グラフをグラフィックウィンドウに表示させる関数はbarplot(),カテゴリ変数について度数分布を計算させる関数はtable()なので,カテゴリ変数xについて,度数分布の棒グラフである度数分布図をグラフィックウィンドウに表示させるには,barplot(table(x))とすればいい。・関数の値は<-を使って別の変数に保存しておける(定義できる)。関数名などとして予約されている名前以外のすべての名前は変数名にできる。実は,既に使われている名前でも,大抵の場合再定義できてしまうが,それは避けた方が無難。<-の左辺に使いたい変数名を書き,右辺に中身を書けばいい。・同じ関数でもオブジェクトの種類によって異なる動作をすることがある。plot(Y~X)と書いたとき(注:~はキーボードの右上の方にあるShiftキーを押しながら^キーを打つことで入力できる記号で,チルダと読む),XとYの両方が量的変数なら散布図が描かれるが,Xがカテゴリの場合は層別箱ひげ図が描かれる。意図した通りの操作をさせたい場合は,強制的に変数の型を変えることで実現できる。この例だと,Xが量的変数でも,plot(Y~as.factor(X))とすれば層別箱ひげ図になる。明示的に箱ひげ図を描く関数を使ってboxplot(Y~X)としてもいい。・文字列オブジェクトは,"身長のヒストグラム"のように半角の二重引用符(Shiftキーを押しながら数字キーの2を押しながら入力する。英語ではダブルクォーテーションマークという)で括る。二重引用符なしだと,変数名として扱われてしまう。グラフの表題をつけるときなど,表題文字列は半角二重引用符で括らないと表示されない。・関数にオプションを付け加えるときは半角コンマ(,)で区切って追加する。身長のヒストグラムの区間の区切りを「〜を超えて〜以下」ではなく,「〜以上〜未満」にしたいとき,オプションright=Fを付け加えるには,hist(dat$HT)となっていたところを,hist(dat$HT,right=F)とする。・Rでは半角と全角は区別されるし,大文字と小文字も区別される。基本的に関数名や予約語はすべて半角である。hist(dat$HT,xlab="身長(cm)")と書くべきところを,hist(dat$HT,xlab=”身長(cm)”)と書くと,全角のhistという関数などないのでエラーが起こる。コマンド中に1つでも全角が混ざっているとうまくいかない。hist(dat$HT,xlab="身長(cm)")では,HTの次のコンマが全角になっているため,何も表示されない。・データフレームの中の変数を参照するには"$"(半角ドル記号)を用いる。datというデータフレームの中にWTという変数が含まれているとき,WTを参照するには,dat$WTとする。]を使ってマッチング条件を入れるか,subset()を使って部分集合を作って,そのオブジェクトを関数に渡すのが基本。(例)10人の人がいて,以下のデータがあるとする。Explorerではうまく行かなかった。Explorerでもタブ区切りテキストファイルからなら正しいオブジェクトとしてクリップボードへのコピーが可能である),以下のコードを実行しても同じことである。data.frame(PERSON,VALUE,SEX)このとき,(1)1番目から5番目の人だけのVALUEの合計を求めたいとすると,以下のどのコードでも可能である。]の中は,条件に合う行でTRUEとなり合わない行でFALSEとなれば,TRUEの行だけに対してその後の処理がなされるので,値自身も参照できる。(2)VALUEが50より大きい人だけのVALUEの合計を求めたい場合は,以下のどちらでもいい。sum(dat$VALUE[dat$VALUE>50])sum(subset(dat,VALUE>50)$VALUE)(3)SEXが"M"の人だけのVALUEの合計は,以下のどちらでもいい。等しいかどうかを調べるには,==と,"="(半角等号)を2つ続けなくてはいけないことに注意。sum(dat$VALUE[dat$SEX=="M"])sum(subset(dat,SEX=="M")$VALUE)なお,SEXが"M"の人と"F"の人を別々にVALUEの合計を出すには,tapply(dat$VALUE,dat$SEX,sum)とすると一度にできる。講義日程表第3回の項に戻る。独立2標本の平均値の差の検定は,古典的には,まずF検定をして2群の分散に差がないかを調べ,差がない場合は通常のt検定,有意差があったら(この場合の有意水準は,第二種の過誤を見ていることになるので,0.2程度にすることが多い)Welchの検定と段階を踏む方式でなされてきたので,テキストにもそのやり方を説明してある。シミュレーションしてみると,常にWelchの方法が最良の結果が得られることが明白である。●表の操作について,簡単にまとめておく。下の生データファイル(http://phi.med.gunma-u.ac.jp/medstat/sample11.txt)があるとする。"NO"●変数の意味は,AGEが年齢(整数),EXPOSUREがリスク要因への曝露の有無("YES"が曝露あり,"NO"が曝露なし),DISEASEが疾病の有無("YES"が疾病あり,"NO"が疾病なし)である。このデータファイルでは,"YES"と"NO"が文字列なので二重引用符(ダブルクォーテーション)で括ってあるが,テキストファイルからread.delim()関数でデータを読み込むときは,二重引用符なしでも,数値として解釈できない場合は自動的に要因型として読み込まれる。read.delim("http://phi.med.gunma-u.ac.jp/medstat/sample11.txt")◆EXPOSUREの集計(やるまでもないが):table(dat$EXPOSURE)と打てば,以下が表示される。table(dat$EXPOSURE)とする。table(dat$DISEASE[dat$EXPOSURE=="YES"])とする。table(dat$DISEASE[dat$EXPOSURE=="NO"])とする。◆この2つのオブジェクトを行方向に結合すれば,曝露の有無と疾病の有無のクロス集計結果が得られる。rbind(NED,EXD)とする。16◆しかし,実はいきなりtable(dat$EXPOSURE,dat$DISEASE)でクロス集計できる。16◆もう少し格好良くクロス集計する関数としてはxtabsがある。この場合,xtabs(~EXPOSURE+DISEASE,data=dat)とすればよい。16◆rbind,table,xtabsのどれを使っても,クロス集計表オブジェクトとして使える。matrix(c(12,4,8,16),2,2)でよい。list(c("非曝露","曝露"),c("健康","病気"))としてもよい。☆クロス集計表オブジェクトに対してカイ二乗検定はchisq.test(Table)☆クロス集計表オブジェクトに対してFisherの正確確率検定はfisher.test(Table)。この例は2×2なのでオッズ比も最尤推定される。曝露と疾病の間には有意水準5%で統計学的に有意な関連があり,オッズ比は5.7(95%信頼区間1.22〜32.8)である。●3次元の表は少し難しいが,次にまとめる。◆年齢を60歳以上か60歳未満かの2群に区分した変数ACを作って,同じデータフレームdatに含める。次のどちらかを実行する。]を使う),それぞれについて曝露と疾病のクロス集計表を作り,クロス集計表オブジェクトとして,それぞれYTABとETABに付値する。chisq.test(ETAB)とする。期待度数5未満のセルがあるので警告が出る。chisq.test(ETAB)。有意水準5%でどちらも有意でなくなる。サンプルサイズが小さいために検出力が足りないだけかもしれない。◆そこでクロス表の併合を行い,3次元のクロス表を作る。array(c(YTAB,ETAB),dim=c(2,2,2))とすると,3次元のクロス表がTable3にできる(ラベルが全部消えてしまうが)。Table3を表示させる(ただTable3と打てばよい)と次のように見える。xtabs(~EXPOSURE+DISEASE+AC,data=dat)でできるし,こうした方がラベルが残っていい。table(dat$EXPOSURE,dat$DISEASE,dat$AC)でも同じこと。array(c(4,4,3,13,8,0,5,3),dim=c(2,2,2))とする。list(c("非曝露","曝露"),c("健康","病気"),c("[40,60)","[60,80)"))のようにする。Table3[,,2]で可能である。☆3次元の表について,「各層で曝露と疾病に関連はない」という帰無仮説(ただし3次の交互作用はないとする。対立仮説が「どの層でも共通した関連がある」となる)を検定する方法として,コクラン=マンテル=ヘンツェルの検定があり,mantelhaen.test(Table3)で可能。次の結果が得られ,帰無仮説が有意水準5%で棄却されるので,年齢で層別しても,この曝露と疾病の間には統計学的に有意な共通の関連があったといえる。41.6]であり,年齢で層別した場合に,どの年齢層でも共通して非曝露群に比べて曝露群での疾病オッズが7.3倍と見ることができる。woolf_test(Table3)のようにすれば検定できる。◎講義日程表第11回の項に戻る。リンクと引用について。