R可視化重復(fù)測(cè)量的方差分析拟糕,自動(dòng)兩兩比較

參考Mixed ANOVA in R: The Ultimate Guide - Datanovia

library(tidyverse)
library(ggpubr)
library(rstatix)

數(shù)據(jù)準(zhǔn)備

set.seed(123)
data("anxiety", package = "datarium")
anxiety %>% sample_n_by(group, size = 1)

將短數(shù)據(jù)轉(zhuǎn)換為長(zhǎng)數(shù)據(jù)

# 將t1, t2 和 t3 列轉(zhuǎn)換為長(zhǎng)數(shù)據(jù)格式
# 將id和time列轉(zhuǎn)換為因子形式
anxiety <- anxiety %>%
  gather(key = "time", value = "score", t1, t2, t3) %>%
  convert_as_factor(id, time)
# Inspect some random rows of the data by groups
set.seed(123)
anxiety %>% sample_n_by(group, time, size = 1)

數(shù)據(jù)統(tǒng)計(jì)

按照time和group分組脏毯,計(jì)算score的總結(jié)統(tǒng)計(jì)(均數(shù)和標(biāo)準(zhǔn)差)

anxiety %>%
 group_by(time, group) %>%
 get_summary_stats(score, type = "mean_sd")
## # A tibble: 9 x 6
##   group time  variable     n  mean    sd
##   <fct> <fct> <chr>    <dbl> <dbl> <dbl>
## 1 grp1  t1    score       15  17.1  1.63
## 2 grp2  t1    score       15  16.6  1.57
## 3 grp3  t1    score       15  17.0  1.32
## 4 grp1  t2    score       15  16.9  1.70
## 5 grp2  t2    score       15  16.5  1.70
## 6 grp3  t2    score       15  15.0  1.39
## # … with 3 more rows

可視化

bxp <- ggboxplot(
  anxiety, x = "time", y = "score",
  color = "group", palette = "jco"
  )
bxp
boxplot

假設(shè)性檢驗(yàn)

異常值

anxiety %>%
  group_by(time, group) %>%
  identify_outliers(score)
## [1] group      time       id         score      is.outlier is.extreme
## <0 rows> (or 0-length row.names)

正態(tài)性假設(shè)

anxiety %>%
  group_by(time, group) %>%
  shapiro_test(score)
##   group time  variable statistic     p
##   <fct> <fct> <chr>        <dbl> <dbl>
## 1 grp1  t1    score        0.964 0.769
## 2 grp2  t1    score        0.977 0.949
## 3 grp3  t1    score        0.954 0.588
## 4 grp1  t2    score        0.956 0.624
## 5 grp2  t2    score        0.935 0.328
## 6 grp3  t2    score        0.952 0.558

可視化

ggqqplot(anxiety, "score", ggtheme = theme_bw()) +
  facet_grid(time ~ group)
qqplot

方差齊性假設(shè)

anxiety %>%
  group_by(time) %>%
  levene_test(score ~ group)
## # A tibble: 3 x 5
##   time    df1   df2 statistic     p
##   <fct> <int> <int>     <dbl> <dbl>
## 1 t1        2    42     0.176 0.839
## 2 t2        2    42     0.249 0.781
## 3 t3        2    42     0.335 0.717

計(jì)算

# Two-way mixed ANOVA test
res.aov <- anova_test(
  data = anxiety, dv = score, wid = id,
  between = group, within = time
  )
get_anova_table(res.aov)
## ANOVA Table (type II tests)
## 
##       Effect DFn DFd      F        p p<.05   ges
## 1      group   2  42   4.35 1.90e-02     * 0.168
## 2       time   2  84 394.91 1.91e-43     * 0.179
## 3 group:time   4  84 110.19 1.38e-32     * 0.108

事后檢驗(yàn)

# Effect of group at each time point
one.way <- anxiety %>%
  group_by(time) %>%
  anova_test(dv = score, wid = id, between = group) %>%
  get_anova_table() %>%
  adjust_pvalue(method = "bonferroni")
one.way
## # A tibble: 3 x 9
##   time  Effect   DFn   DFd      F         p `p<.05`   ges     p.adj
##   <fct> <chr>  <dbl> <dbl>  <dbl>     <dbl> <chr>   <dbl>     <dbl>
## 1 t1    group      2    42  0.365 0.696     ""      0.017 1        
## 2 t2    group      2    42  5.84  0.006     *       0.218 0.018    
## 3 t3    group      2    42 13.8   0.0000248 *       0.396 0.0000744
# Pairwise comparisons between group levels
pwc <- anxiety %>%
  group_by(time) %>%
  pairwise_t_test(score ~ group, p.adjust.method = "bonferroni")
pwc
## # A tibble: 9 x 10
##   time  .y.   group1 group2    n1    n2       p p.signif   p.adj p.adj.signif
## * <fct> <chr> <chr>  <chr>  <int> <int>   <dbl> <chr>      <dbl> <chr>       
## 1 t1    score grp1   grp2      15    15 0.43    ns       1       ns          
## 2 t1    score grp1   grp3      15    15 0.895   ns       1       ns          
## 3 t1    score grp2   grp3      15    15 0.51    ns       1       ns          
## 4 t2    score grp1   grp2      15    15 0.435   ns       1       ns          
## 5 t2    score grp1   grp3      15    15 0.00212 **       0.00636 **          
## 6 t2    score grp2   grp3      15    15 0.0169  *        0.0507  ns          
## # … with 3 more rows

可視化報(bào)告

# 可視化: boxplots with p-values
pwc <- pwc %>% add_xy_position(x = "time")
pwc.filtered <- pwc %>% filter(time != "t1")
bxp + 
  stat_pvalue_manual(pwc.filtered, tip.length = 0, hide.ns = TRUE) +
  labs(
    subtitle = get_test_label(res.aov, detailed = TRUE),
    caption = get_pwc_label(pwc)
  )
image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末民轴,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌桌硫,老刑警劉巖沛豌,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件趋箩,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡琼懊,警方通過(guò)查閱死者的電腦和手機(jī)阁簸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)哼丈,“玉大人启妹,你說(shuō)我怎么就攤上這事∽淼” “怎么了饶米?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)车胡。 經(jīng)常有香客問(wèn)我檬输,道長(zhǎng),這世上最難降的妖魔是什么匈棘? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任丧慈,我火速辦了婚禮,結(jié)果婚禮上主卫,老公的妹妹穿的比我還像新娘逃默。我一直安慰自己,他們只是感情好簇搅,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布完域。 她就那樣靜靜地躺著,像睡著了一般瘩将。 火紅的嫁衣襯著肌膚如雪吟税。 梳的紋絲不亂的頭發(fā)上凹耙,一...
    開(kāi)封第一講書(shū)人閱讀 48,970評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音肠仪,去河邊找鬼肖抱。 笑死,一個(gè)胖子當(dāng)著我的面吹牛藤韵,可吹牛的內(nèi)容都是我干的虐沥。 我是一名探鬼主播,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼泽艘,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼欲险!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起匹涮,我...
    開(kāi)封第一講書(shū)人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤天试,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后然低,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體喜每,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年雳攘,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了带兜。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡吨灭,死狀恐怖刚照,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情喧兄,我是刑警寧澤无畔,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布,位于F島的核電站吠冤,受9級(jí)特大地震影響浑彰,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜拯辙,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一郭变、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧涯保,春花似錦饵较、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)横辆。三九已至撇他,卻和暖如春茄猫,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背困肩。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來(lái)泰國(guó)打工划纽, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人锌畸。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓勇劣,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親潭枣。 傳聞我的和親對(duì)象是個(gè)殘疾皇子比默,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容