在 R 中执行配对 t 检验后得到错误结果

问题描述 投票:0回答:1

我正在尝试对以下数据进行配对 t 检验:

化合物 分数1 分数2
A 1 3.3 16.5
A 2 1.4 11.2
A 3 2.8 15.3
A 4 0.6 42.4
A 5 0.9 20
A 6 21 43.8
A 7 22 56.5
A 8 1.1 9.6
A 9 2.3 6.5
A 10 0.4 7.1
B 1 1.2 15.4
B 2 1.4 11.4
... ... ... ...
B 10 14.3 18.7

我想分别对化合物 A 和 B 进行 t 检验。 我尝试了以下方法:

library(dplyr)
library(broom)

data <- df1 %>% 
  group_by(compound) %>% 
  do(tidy(t.test(df1$fraction1, 
                 df1$fraction2, 
                 mu = 0, 
                 alt = "two.sided", 
                 paired = TRUE, 
                 conf.level = 0.95)))
data

最终结果如下: A

 tibble: 2 × 9
# Groups:   compound [2]
  compound estimate statistic p.value parameter conf.low conf.high method        alternative
  <chr>       <dbl>     <dbl>   <dbl>     <dbl>    <dbl>     <dbl> <chr>         <chr>      
1 A           -9.58     -3.47 0.00254        19    -15.3     -3.81 Paired t-test two.sided  
2 B           -9.58     -3.47 0.00254        19    -15.3     -3.81 Paired t-test two.sided  

但是,它没有单独考虑化合物 A 和 B。 如何对两种化合物进行配对 t 检验?是否还可以查看显着性水平(即表示为 ns、*、** 等)?

非常感谢!

r statistics t-test
1个回答
0
投票

目前还不清楚您的分析目标是什么,以及您的研究问题是什么。但要按原样回答问题,然后分别对每种化合物进行配对 t 检验并获得表示为

ns
*
**
等的显着性水平,您需要确保
 t.test
函数应用于复合变量的每组内。您当前方法的问题在于
t.test
应用于整个数据集而不是每个组内。以下是使用
dplyr
broom
实现此目的的方法:

library(dplyr)
library(broom)

# Example data frame
df1 <- data.frame(
  compound = rep(c("A", "B"), each = 10),
  day = rep(1:10, 2),
  fraction1 = c(3.3, 1.4, 2.8, 0.6, 0.9, 21, 22, 1.1, 2.3, 0.4, 1.2, 1.4, 2.8, 0.6, 0.9, 21, 22, 1.1, 2.3, 14.3),
  fraction2 = c(16.5, 11.2, 15.3, 42.4, 20, 43.8, 56.5, 9.6, 6.5, 7.1, 15.4, 11.4, 15.3, 42.4, 20, 43.8, 56.5, 9.6, 6.5, 18.7)
)

# Perform paired t-test separately for each compound
result <- df1 %>%
  group_by(compound) %>%
  do(tidy(t.test(.$fraction1, 
                 .$fraction2, 
                 mu = 0, 
                 alt = "two.sided", 
                 paired = TRUE, 
                 conf.level = 0.95)))

# Function to add significance level
add_significance <- function(p.value) {
  if(p.value < 0.001) {
    return("***")
  } else if(p.value < 0.01) {
    return("**")
  } else if(p.value < 0.05) {
    return("*")
  } else {
    return("ns")
  }
}

# Add significance level to the result
result <- result %>%
  mutate(significance = sapply(p.value, add_significance))

print(result)

结果如下:

# A tibble: 2 × 10
# Groups:   compound [2]
  compound estimate statistic p.value parameter conf.low conf.high method        alternative significance
  <chr>       <dbl>     <dbl>   <dbl>     <dbl>    <dbl>     <dbl> <chr>         <chr>       <chr>       
1 A           -17.3     -4.41 0.00170         9    -26.2     -8.43 Paired t-test two.sided   **          
2 B           -17.2     -4.31 0.00195         9    -26.2     -8.18 Paired t-test two.sided   **          

配对 t 检验适用于比较两个相关组,例如每种化合物每天的

fraction1
fraction2
测量值。该检验假设配对观测值之间的差异呈正态分布。虽然每种化合物 10 个观察值的样本量对于 t 检验来说(几乎)是合理的,但解释小样本的结果需要谨慎。

此外,执行多次 t 检验会增加 I 类错误(误报)的风险,因此需要使用 Bonferroni 校正等方法对多重比较进行调整。报告置信区间和 p 值可以提供有关估计精度的宝贵信息。使用成对散点图或 Bland-Altman 图可视化数据可以进一步了解

fraction1
fraction2
之间的关系。

可以使用单一混合效应回归模型对数据进行建模。混合效应模型可以解释固定效应(观察结果一致)和随机效应(捕获组内的变异性,例如不同的化合物)。这种方法可以有效地处理配对观察内和组之间的相关性。然而,在不了解更多有关数据和研究问题的情况下,我现在犹豫是否要对此说更多。

© www.soinside.com 2019 - 2024. All rights reserved.