我想我明白您的要求。看看这是否适合您:
另一答案
我想我明白您的要求。看看这是否适合您:
以上是关于使用一列内的数据进行非配对t检验的主要内容,如果未能解决你的问题,请参考以下文章
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用一列内的数据进行非配对t检验相关的知识,希望对你有一定的参考价值。
我想进行不成对的t检验,以检查在每个type类别中values是否在站点间不同。
所以我的问题是,intypes(AB或CD),values(valueA或valueB)是否不同于站点之间(A或B)?
这是我的数据的示例:
dat <- data.frame(
"site" = c("A","B","B","A","A","B","B","A"),
"type" = c("AB","CD"),
"valueA" = c(13,-10,-5,18,-14,12,-17,19),
"valueB" = c(-3,20,15,-16,12,15,-11,14)
)
dat
site type valueA valueB
A AB 13 -3
B CD -10 20
B AB -5 15
A CD 18 -16
A AB -14 12
B CD 12 15
B AB -17 -11
A CD 19 14
我正在尝试进行四个unpaired t检验以检查:
为了运行未配对的t检验,我相信我需要重新安排我的数据,以便AB类型和CB类型以及站点A和站点B都为一列(而不是在类型或站点列内) 。
编辑:
在注释中使用建议的代码:
library(dplyr)
d %>%
group_by(site, type) %>%
summarise(pval = t.test(valueA, valueB)$p.value)
输出是这个:
site type pval
A AB 0.784
A CD 0.417
B AB 0.492
B CD 0.365
据我所知,这里的p值是给我valueA和valueB之差。
例如,我正在寻找:CD类型中valueA的站点A和站点B之间的差异。
因此,如果我想得正确,则t检验的输出应包含一列以表示类型,值A和值B。然后,p值用于表示站点之间的差异。
类似于此:
type valueA valueB
AB 0.365 0.784
CD 0.492 0.417
这有意义吗?
我们可以执行group_by
'站点','类型'并应用t.test
library(dplyr)
out <- dat %>%
group_by(site, type) %>%
summarise(pval = t.test(valueA, valueB)$p.value)
默认情况下,paired = FALSE
中的t.test
上面的输出可以用pivot_wider
整形为'宽'格式>
library(stringr) library(tidyr) out %>% ungroup %>% mutate(site = str_c('value', site)) %>% pivot_wider(names_from = site, values_from = pval) # A tibble: 2 x 3 # type valueA valueB # <fct> <dbl> <dbl> #1 AB 0.784 0.492 #2 CD 0.417 0.365
如果我们要比较“ AB”和“ CD”之间的“值”列,则>
dat %>% group_by(site) %>% summarise_at(vars(starts_with('value')), ~ t.test(.[type == 'AB'], .[type == 'CD'])$p.value) # A tibble: 2 x 3 # site valueA valueB # <fct> <dbl> <dbl> #1 A 0.393 0.784 #2 B 0.464 0.439
我想我明白您的要求。看看这是否适合您:
我想我明白您的要求。看看这是否适合您:
以上是关于使用一列内的数据进行非配对t检验的主要内容,如果未能解决你的问题,请参考以下文章