裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

ラッパーというものも...

2012年08月19日 | ブログラミング

"Performing multiple t-tests on different variables between the same two groups" で,ラッパーを紹介しているが

余り頻繁に使わないラッパーだと,ラッパーの使い方自体忘れたりして,そのたびに思い出すためにソースを見たり(メモを見たり)ということになる。

たとえば,t.test の場合なども,必要になったらすぐに簡単に書けるようにしておくと吉。
kidney[c("time", "age", "frail")] の部分は,分析対象とする変数だけを含むデータフレームを作っているだけなので,たくさんの変数を指定する場合などは変数名を書くだけで疲れるので, kidney[c(2, 4, 7)] のような指定法による方が便利。この程度のプログラムなら,ラッパーをわざわざ作っておく必要もないだろう。

関数部分が複雑(たとえば,これらの結果をまとめて一つの表にし,LaTeX のソースを作るなど)になると,新たに関数を作る意味もあるだろう。もっとも,そのような関数はもはやラッパーではないけど。

> library(survival)
> data(kidney)
> sapply(kidney[c("time", "age", "frail")], function(x) t.test(x~kidney$sex))
            time                      age                      
statistic   -1.733522                 -0.06756775              
parameter   34.53963                  32.03715                 
p.value     0.09192286                0.9465497                
conf.int    Numeric,2                 Numeric,2                
estimate    Numeric,2                 Numeric,2                
null.value  0                         0                        
alternative "two.sided"               "two.sided"              
method      "Welch Two Sample t-test" "Welch Two Sample t-test"
data.name   "x by kidney$sex"         "x by kidney$sex"        
            frail                    
statistic   0.8431417                
parameter   27.62198                 
p.value     0.4063915                
conf.int    Numeric,2                
estimate    Numeric,2                
null.value  0                        
alternative "two.sided"              
method      "Welch Two Sample t-test"
data.name   "x by kidney$sex"        
> lapply(kidney[c("time", "age", "frail")], function(x) t.test(x~kidney$sex))
$time

    Welch Two Sample t-test

data:  x by kidney$sex
t = -1.7335, df = 34.54, p-value = 0.09192
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -124.761114    9.861114
sample estimates:
mean in group 1 mean in group 2
          59.30          116.75


$age

    Welch Two Sample t-test

data:  x by kidney$sex
t = -0.0676, df = 32.037, p-value = 0.9465
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -8.342454  7.806740
sample estimates:
mean in group 1 mean in group 2
       43.50000        43.76786


$frail

    Welch Two Sample t-test

data:  x by kidney$sex
t = 0.8431, df = 27.622, p-value = 0.4064
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -0.2442908  0.5857194
sample estimates:
mean in group 1 mean in group 2
       1.310000        1.139286


コメント (1)    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« ダメ出し:凡例の順序が逆 | トップ | ダメ出し:なんでそうなるの? »
最新の画像もっと見る

1 コメント

コメント日が  古い順  |   新しい順
Unknown (kaz_yos)
2012-08-19 22:32:12
ここまで短くできるとは!
lapply()でdata frameの"列名"ではなく"列そのもの"に対して処理を行えばよかったんですね。
大変参考になりました。
返信する

コメントを投稿

ブログラミング」カテゴリの最新記事