SARU統計の計算アルゴリズム|各検定のRソースコード一覧

オールインワン統計

論文のTable 1作成などを効率化するための機能です。データの型と群数に応じてデフォルトの検定が自動選択されますが、結果表示後にオプションで変更可能です。

独立した群の比較

2群の場合

連続変数 (平均値)

t.test(x = 目的変数, y = 群変数, var.equal = FALSE)
  • var.equal:
    • FALSE (デフォルト): Welchのt検定
    • TRUE: スチューデントのt検定(オプションで変更時)

順序変数 (中央値)

wilcox.test(x = 目的変数, y = 群変数, exact = FALSE)
  • 検定名: マン・ホイットニーのU検定

カテゴリ変数 (度数)

fisher.test(x = クロス集計表, simulate.p.value = TRUE)
  • 検定名: フィッシャーの正確確率検定
  • オプション変更時chisq.test(x = クロス集計表) (カイ二乗検定)を選択可能

3群以上の場合

連続変数 (平均値)

oneway.test(formula = 目的変数 ~ 群変数, var.equal = FALSE)
  • var.equal:
    • FALSE (デフォルト): Welchの分散分析
    • TRUE: 通常の分散分析 (ANOVA)
  • 多重比較 (事後検定):
    • Pairwise Welch t検定 (Bonferroni / Holm)
    • Pairwise Student t検定 (Bonferroni / Holm)
    • Tukey HSD (通常のANOVA選択時のみ)

順序変数 (中央値)

kruskal.test(x = 目的変数, g = 群変数)
  • 検定名: クラスカル・ウォリス検定
  • 多重比較: Pairwise Mann-Whitney U検定 (Bonferroni / Holm)

カテゴリ変数 (度数)

fisher.test(x = クロス集計表, simulate.p.value = TRUE)
  • 検定名: フィッシャーの正確確率検定
  • オプション変更時chisq.test (カイ二乗検定)
  • 多重比較: Pairwise Fisher検定 または Pairwise カイ二乗検定 (Bonferroni / Holm)

対応のある比較

2時点の場合

連続変数 (平均値)

t.test(x = 変数1, y = 変数2, paired = TRUE)
  • 検定名: 対応のあるt検定

順序変数 (中央値)

wilcox.test(x = 変数1, y = 変数2, paired = TRUE)
  • 検定名: Wilcoxon符号付順位検定

カテゴリ変数 (度数)

mcnemar.test(x = クロス集計表)
  • 検定名: マクネマー検定

3時点以上の場合

連続変数 (平均値)

summary(aov(val ~ time + Error(id/time), data = ロング形式データ))
  • 検定名: 反復測定分散分析 (Repeated Measures ANOVA)
  • 多重比較: Pairwise 対応のあるt検定 (Bonferroni / Holm)

順序変数 (中央値)

friedman.test(y = データ行列)
  • 検定名: フリードマン検定
  • 多重比較: Pairwise Wilcoxon符号付順位検定 (Bonferroni / Holm)

カテゴリ変数 (度数)

friedman.test(y = データ行列)
  • 検定名: コクランのQ検定(内部計算にフリードマン検定を使用)
  • 多重比較: Pairwise マクネマー検定 (Bonferroni / Holm)

相関解析

cor.test(x = 変数1, y = 変数2, method = "pearson")
  • method:
    • "pearson" (デフォルト): 積率相関係数
    • "spearman": 順位相関係数(オプションで変更時)

統計解析 (個別統計解析)

詳細なオプション設定が可能な解析モードです。

名義変数の検定

カイ二乗検定

chisq.test(x = クロス集計表, correct = TRUE)
  • correctTRUE (Yatesの連続性補正・デフォルト), FALSE
  • 多重比較: Pairwise chisq.test + p.adjust

フィッシャーの正確検定

fisher.test(x = クロス集計表, simulate.p.value = FALSE, B = 2000)
  • simulate.p.valueTRUE (モンテカルロ法), FALSE (正確計算)
  • 多重比較: Pairwise fisher.test + p.adjust

コクランQ検定

friedman.test(y = 0/1データ行列)
  • 注釈: 2値データに対するフリードマン検定として計算。
  • 多重比較: Pairwise mcnemar.test + p.adjust

マクネマー検定

mcnemar.test(x = クロス集計表, correct = TRUE)

コクラン・アーミテージ検定

# カイ二乗分布または正規近似によるZ検定 (prop.trend.test相当のロジック)
pnorm(Z, lower.tail = ...)
  • 対立仮説: 両側 / 増加傾向 / 減少傾向

残差分析

chisq.test(x = クロス集計表)$stdres
  • 出力: 調整済み標準化残差 (Adjusted Standardized Residuals)
  • 判定: 絶対値が1.96を超えるセルを有意とみなします。

連続変数の検定

対応のないt検定

t.test(x = 群1データ, y = 群2データ, alternative = "two.sided", conf.level = 0.95, var.equal = FALSE)
  • alternative"two.sided" (両側), "less""greater"
  • var.equalFALSE (Welch法), TRUE (Student法)

対応のあるt検定

t.test(x = 変数1, y = 変数2, paired = TRUE, alternative = "two.sided", conf.level = 0.95)

分散分析

oneway.test(formula = 目的変数 ~ 群変数, var.equal = FALSE)
  • var.equalFALSE (Welch法), TRUE (Classic ANOVA)
  • 多重比較TukeyHSD (Classic時) または pairwise.t.test

反復測定分散分析

summary(aov(val ~ time + Error(id/time), data = ...))
  • 球形性検定: Mauchly’s test (自前実装)
  • 補正: Greenhouse-Geisser, Huynh-Feldt epsilon
  • 多重比較pairwise.t.test(..., paired = TRUE)

ノンパラメトリック検定

マン・ホイットニーのU検定

wilcox.test(x = 群1データ, y = 群2データ, alternative = "two.sided", conf.int = TRUE, exact = NULL)
  • exactNULL (自動), TRUE (正確検定), FALSE (正規近似)

符号付順位和検定

wilcox.test(x = 変数1, y = 変数2, paired = TRUE, alternative = "two.sided", exact = NULL)

クラスカルウォリス

kruskal.test(x = 目的変数, g = 群変数)
  • 多重比較pairwise.wilcox.test(..., p.adjust.method = "bonferroni"/"holm")

フリードマン検定

friedman.test(y = データ行列)
  • 多重比較pairwise.wilcox.test(..., paired = TRUE)

ヨンクヒール・タプストラ検定

# wilcox.testの結果を集積してZ値を算出 (正規近似)
pnorm(Z, lower.tail = ...)
  • 対立仮説: 両側 / 増加傾向 / 減少傾向

相関の検定

相関分析 (無相関検定)

cor.test(x = 変数1, y = 変数2, method = "pearson", alternative = "two.sided")
  • method"pearson""spearman""kendall"

事前の検定

コルモゴロフ・スミノフ検定

ks.test(x = データ, y = "pnorm", mean = mean(x), sd = sd(x))

シャピロ・ウィルク検定

shapiro.test(x = データ)

F検定

var.test(x = 群1データ, y = 群2データ, alternative = "two.sided", conf.level = 0.95)
  • alternative"two.sided""less""greater"

タイトルとURLをコピーしました