R: t検定とマン-ホイットニーのU検定 (ウィルコクソンの順位和検定)
- rioclu0729vet
- 2024年12月9日
- 読了時間: 2分
更新日:2024年12月10日
2つのグループを比較します。
パラメトリック検定であるt検定と、ノンパラメトリック検定であるマン-ホイットニーのU検定があるので、データに応じて選択します。
①t検定
#検定に用いる項目を選択
col_t <- c("A", "B", "C")
#空のリストを作成:初期化
t_result <- list()
for (col in col_t){ #col_tの要素を1つずつ取り出しループ
#t検定の実施:2つのグループの平均値の差を比較
t <- t.test(data[[col]] ~ data $ "比較条件のカテゴリー") #dataの列を指定、~で数式を表す
t_result[[col]] <- list( #t_resultに列を追加
"t_statistic" = t $ statistic, #t値
"p_value" = t $ p.value, #p値
"mean_"比較条件1"" = mean(data[[col]][data $ "比較条件のカテゴリー" == "比較条件1"], na.rm = TRUE), #比較条件1の平均値
"mean_"比較条件2"" = mean(data[[col]][data $ "比較条件のカテゴリー" == "比較条件2"], na.rm = TRUE) #比較条件2の平均値
)
}
t_df <- do.call(rbind, #do.callでrbindをリストに適用
lapply(names(t_result), function(col){ #lapplyでリストの要素に関数を適用:項目を取得(names)して操作(function)
cbind(measurement = col,
t_result[[col]])
}))
print(as.data.frame(t_df)) #as.data.frame()でデータフレーム形式に変換して出力②マン-ホイットニーのU検定(ウィルコクソンの順位和検定)
col_u <- c("D", "E", "F")
u_result <- list()
for(col in col_u){
u <- wilcox.test(data[[col]] ~ data $ "比較条件のカテゴリー, exact = TRUE) #exactは計算の正確性、サンプルサイズが大きい場合はFALSEにして近似的に計算することで効率的に計算する事が出来る
u_result[[col]] <- list(
"u_statistic" = u $ statistic,
"p_palue" = u $ p.value,
"mean_"比較条件1"" = mean(data[[col]][data $ "比較条件のカテゴリー" == "比較条件1"], na.rm = TRUE),
"mean_"比較条件2"" = mean(data[col]][data $ "比較条件のカテゴリー" == "比較条件2"], na.rm = TRUE)
)
}
u_df <- do.call(rbind, lapply(names(u_result), function(col){
cbind(measurement = col, u_result[[col]])
}))
print(as.data.frame(u_df))

コメント