重复测量相关分析|每个参与者的相关性

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

我有一个基于受试者内设计的数据集。所以我们有一个包含 3 个不同变量的重复测量的数据集。因此,变量之间的关联在受试者之间应该是独立的。因此需要在个人层面上计算相关性。

我想做以下事情:

步骤 1) 为每个参与者创建一个包含所有 3 个变量(value_01value_02、value_01value_03、value_02*value_03)相关性的表。

第 2 步)针对零执行单边 t 检验

所以,假设我们有一个这样的数据集:

df <- read.table(text = 'ID condition value_01 value_02 value_03
    01 A 7 13 22
    01 B 5 20 18
    01 C 6 60 23
    01 D 8 11 22
    02 B 7 17 18
    02 C 9 18 20
    02 D 5 7 23
    02 A 7 7 22
    03 C 8 12 20
    03 D 3 11 22
    03 A 8 15 22'
    03 B 9 118 25')

我们正在寻找的是这样的关联表:

ID value_01*value_02 value_01*value_03 value_01*value_02*value_03
01 0.56 0.37 0.28
02 0.4 5 0.45 0.35
03 0.34 0.36 0.23

我尝试像这样计算相关性:

 library(dplyr)
subset <- df %>%
    group_by(ID) %>% 
    summarise(
    Value_01_02 = cor(value_01, value_02, method = "pearson"),
    Value_01_03 = cor(value_01, value_03, method = "pearson"),
    Value_02_03 = cor(value_02, value_03, method = "pearson")
    )

View(subset)

但是输出是错误的,因为它只计算每个变量组合的一个相关系数。错误的结果如下所示:

ID value_01*value_02 value_01*value_03 value_02*value_03
01 0.24 0.13 0.33

有人知道我该如何解决这个问题吗? 预先感谢您!

r correlation t-test
2个回答
1
投票

您可以使用rmcorr

library(dplyr)                 
library(rmcorr)

cor <- rmcorr_mat(participant = ID,
                  variables = c('value_01',
                                'value_02',
                                'value_03'),
                  dataset = df,
                  CI.level = 0.95)

cor
#> 
#> Repeated measures correlation matrix
#> 
#>            value_01  value_02   value_03
#> value_01 1.00000000 0.3443627 0.09101661
#> value_02 0.34436266 1.0000000 0.48127980
#> value_03 0.09101661 0.4812798 1.00000000

cor$summary
#>   measure1 measure2 df   rmcorr.r    lowerCI   upperCI    p.vals effective.N
#> 1 value_01 value_02  8 0.34436266 -0.3642375 0.8004381 0.3298600          10
#> 2 value_01 value_03  8 0.09101661 -0.5713518 0.6815838 0.8025423          10
#> 3 value_02 value_03  8 0.48127980 -0.2128438 0.8525584 0.1590385          10

创建于 2023-08-03,使用 reprex v2.0.2


0
投票

代码中的一个问题是缺少 header=TRUE 部分。在最后一行之前你也有一些 '

library(dplyr)
library(tidyr)


df <- read.table(text = 'ID condition value_01 value_02 value_03
    01 A 7 13 22
    01 B 5 20 18
    01 C 6 60 23
    01 D 8 11 22
    02 B 7 17 18
    02 C 9 18 20
    02 D 5 7 23
    02 A 7 7 22
    03 C 8 12 20
    03 D 3 11 22
    03 A 8 15 22
    03 B 9 118 25', header=TRUE)


#See df
print(df)

之后,代码如下:

df %>%
  group_by(ID) %>% 
  summarise(
    Value_01_02 = cor(value_01, value_02, method = "pearson"),
    Value_01_03 = cor(value_01, value_03, method = "pearson"),
    Value_02_03 = cor(value_02, value_03, method = "pearson")
  )

给我以下输出:

# A tibble: 3 x 4
     ID Value_01_02 Value_01_03 Value_02_03
  <int>       <dbl>       <dbl>       <dbl>
1     1      -0.415       0.640       0.379
2     2       0.739      -0.552      -0.885
3     3       0.512       0.239       0.893

见截图:

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