r - 从事后测试中获得整洁的输出

标签 r function functional-programming tidyeval tukey

考虑这个数据框dat1:

dat1 <- data.frame(Region = rep(c("r1","r2"), each = 100),
                   State = rep(c("NY","MA","FL","GA"), each = 10),
                   Loc = rep(c("a","b","c","d","e","f","g","h"),each = 5),
                   ID = rep(c(1:10), each=2),
                   var1 = rnorm(200),
                   var2 = rnorm(200),
                   var3 = rnorm(200),
                   var4 = rnorm(200),
                   var5 = rnorm(200))

我有与上面创建的 dat1 类似的数据框。 RegionStateLoc 是每个观测值 ID 的分组变量,每个观测值进行 5 次测量var1:var5。对于每个分组变量,我对每个 var 进行单变量方差分析。当发现显着差异时,我使用 multcompView 包中的 TukeyHSD() 函数和 multcompLetters() 函数在组。由于我想对每个分组变量执行此操作,因此我尝试编写一个函数来防止自己重复和拼写错误。下面显示了我的情况:

library(tidyverse)
library(multcomp)
library(multcompView)

Tuk <- function(dat,groupvar,var){
  TUK <- TukeyHSD(aov(lm(get(var) ~ get(groupvar), data=dat)))
  names(TUK)[[1]] <- paste0(groupvar)
  lets<-multcompLetters(extract_p(TUK$groupvar))
  lets
}
#assuming all 5 vars were significant in the anovas, I would then run this for each grouping variable as follows:
vars <- paste0(names(dat1[,5:9]))
#by Region
lapply(vars, FUN=Tuk, dat=dat1, groupvar="Region")
#by State
lapply(vars, FUN=Tuk, dat=dat1, groupvar="State")
#by Loc
lapply(vars, FUN=Tuk, dat=dat1, groupvar="Loc")

代码在函数之外运行。该函数将创建模型,但我不知道如何格式化它,以便它识别 groupvar 对于 multcompLetters(extract_p()) 部分是什么?我该如何解决这个问题,以及如何让它输出一个整洁的表格的功能,该表格显示每个组以及我立即给出的每个变量的字母。例如,对于使用所有 5 个变量的 State 来说,它看起来像这样

     NY   MA   FL   GA
var1  a    ab   c    a
var2  a    ab   b    c
var3  a    c    ab   bc  
var4  ab   c    ab   ab 
var5  a    b    c     b

此外,是否有一种合理的方法可以使该函数生成显示 CLD 字母的组的箱线图(针对每个变量)?

最佳答案

假设情节确实是您正在寻找的内容,这是否会让您非常接近 var1 ~ State 的歌唱情节,Indrajeet 在构建这个包方面做得很好,我讨厌重新发明轮子。

dat1 <- data.frame(Region = rep(c("r1","r2"), each = 100),
                   State = rep(c("NY","MA","FL","GA"), each = 10),
                   Loc = rep(c("a","b","c","d","e","f","g","h"),each = 5),
                   ID = rep(c(1:10), each=2),
                   var1 = rnorm(200),
                   var2 = rnorm(200),
                   var3 = rnorm(200),
                   var4 = rnorm(200),
                   var5 = rnorm(200))

library(ggstatsplot)

ggbetweenstats(dat1, State, var1, 
               plot.type = "box", 
               pairwise.comparisons = TRUE, 
               pairwise.display = "everything")

#> Note: Shapiro-Wilk Normality Test for var1: p-value = 0.183
#> 
#> Note: Bartlett's test for homogeneity of variances for factor State: p-value = 0.373
#> 

关于r - 从事后测试中获得整洁的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62050403/

相关文章:

c# - 推断具有功能组合的通用类型

r - dplyr:使用链接传递变量

r - 在用户定义的函数中使用 Dplyr 来汇总数据然后绘制它

r - R 中的 grepl 查找与任何字符串列表的匹配项

python - 将函数 1 中元组的所有元素(从 *args)传递到 python 中的函数 2(作为 *args)

r - 使用 tcltk 包制作简单的 R GUI

Javascript 等效于 Python 的 zip 函数

RStudio:如何在 Windows 7 中设置 Git 可执行文件?

c - 运行程序时出错 - C

带有参数的 Java 8 流映射