簡體   English   中英

使用 perm.t.test 的多對排列 t 檢驗

[英]Multiple paired permutation t-tests using perm.t.test

我有一些實驗數據要使用 R 進行分析,但我遇到了問題,經過幾天的搜索,我找不到解決方案。

我需要對我的數據運行多個配對排列 t 檢驗。 這是我的數據集的簡化版本:

treat = c("C","C","C","C","C","C","C","C","C","C","C","C","C",
         "C","C","C","C","C","C","C","T","T","T","T","T","T",
         "T","T","T","T","T","T","T","T","T","T","T","T","T","T")
subj = c("B16","B17","B18","B19","B20","B16","B17","B18","B19",
        "B20","B16","B17","B18","B19","B20","B16","B17","B18",
        "B19","B20","B1","B2","B3","B4","B5","B1","B2","B3","B4"
        ,"B5","B1","B2","B3","B4","B5","B1","B2","B3","B4","B5")
t = c("T0","T0","T0","T0","T0","T1","T1","T1","T1","T1","T2",
      "T2","T2","T2","T2","T3","T3","T3","T3","T3","T0","T0",
      "T0","T0","T0","T1","T1","T1","T1","T1","T2","T2","T2",
      "T2","T2","T3","T3","T3","T3","T3")
exparat = c(0.11,0.27,0.04,0.47,-0.11,-0.05,-0.05,0.33,-0.11,
            0.47,-0.01,0.43,0.47,0.33,-0.11,-0.09,0.20,-0.11,
                0.47,0.33,0.19,0.02,0.33,0.47,-0.11,0.42,0.13,0.47,
                -0.11,0.33,0.42,0.19,-0.11,0.33,0.47,0.42,0.17,
                0.33,0.47,-0.11)

data = data.frame(treat, subj, t, exparat)

head(data)

  treat subj  t exparat
1     C  B16 T0    0.11
2     C  B17 T0    0.27
3     C  B18 T0    0.04
4     C  B19 T0    0.47
5     C  B20 T0   -0.11
6     C  B16 T1   -0.05

例如,我不得不說我的響應變量(respvar)在每次治療(治療)的時間(t)組合之間是否存在差異。 如果我必須使用參數 t 檢驗,我會使用 dplyr pipe 和 function group_by:

stat.test <- data %>%
  group_by(treat) %>%
  t_test(exparat ~ t, paired = TRUE)

但我不能對置換 t 檢驗(perm.t.test,package:RVAideMemoire)做同樣的事情,因為它只允許對具有兩個級別的因素進行測試。 而我的因子時間 (t) 有 4 個級別。 一種解決方案是對每對時間 (t) 的數據進行子集化,如下所示:

perm.t.test(exparat~t,data = subset(data, t == "T1" | t == "T2"), nperm=999, paired = T)
perm.t.test(exparat~t,data = subset(data, t == "T1" | t == "T3"), nperm=999, paired = T)
perm.t.test(exparat~t,data = subset(data, t == "T2" | t == "T3"), nperm=999, paired = T)
perm.t.test(exparat~t,data = subset(data, t == "T1" | t == "T2"), nperm=999, paired = T)
perm.t.test(exparat~t,data = subset(data, t == "T1" | t == "T3"), nperm=999, paired = T)
perm.t.test(exparat~t,data = subset(data, t == "T2" | t == "T3"), nperm=999, paired = T)
    
#and so on

但這似乎是一種非常低效且耗時的方法。 在我的真實數據集中,我確實有更多級別的因子 t,因此設置所有這些需要很長時間。

誰能幫我設置一個循環來執行此操作?

先感謝您。

您可以使用combn獲取data$t值的所有組合。

combn(levels(data$t), 2, function(x) {
  perm.t.test(exparat~t,data = subset(data, t %in% x), nperm=999, paired = T)
}, simplify = FALSE) -> result

result

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM