裏 RjpWiki

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

プログラム書法

2015年03月03日 | ブログラミング

まことにもっていらぬお節介の極みであるが,「二群間で差のある変数を特定する」で提示されている 2 つの関数をまとめて,データとグループ変数の指定を少し柔軟にし,結果をソートするかしないかの引数を追加したり...
ほとんど原型をとどめなくなちゃったけど,キレイにはなったかな。
「多群間で差のある変数を特定する例」でも,この関数を下敷きに使うこともできよう。

# 全ての変数にウィルコクソンの順位和検定または t 検定を行う関数
Rep <- function(data, group, method = c("wilcox", "t"), sort = TRUE) {
  method <- match.arg(method)
  old <- options(warn = -1)
  ans <- if (method == "wilcox")
    sapply(data, function(d) wilcox.test(d ~ group, paired = FALSE)$statistic)
  else
    sapply(data, function(d) t.test(d ~ group, paired = FALSE, var.equal = FALSE)$statistic)
  options(old)
  ans <- cbind(ans)
  rownames(ans) <- colnames(data)
  if (sort) ans <- cbind(ans[order(ans[,1], decreasing=TRUE), ])
  colnames(ans) <-  ifelse(method == "wilcox",  "W", "t")
  ans
}

# データの読み込み
library(kernlab)
data(spam)

# 関数の実行(データの指定)
Rep(spam[c(1:10, 16, 19)], spam$type)
Rep(spam[c(1:10, 16, 19)], spam$type, sort=FALSE)
Rep(spam[c(1:10, 16, 19)], spam$type, method = "t")
Rep(spam[c(1:10, 16, 19)], spam$type, method = "t", sort=FALSE)

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

PVアクセスランキング にほんブログ村

PVアクセスランキング にほんブログ村