Получение аккуратных результатов после c тестов - PullRequest
1 голос
/ 27 мая 2020

Рассмотрим этот фрейм данных 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, созданные выше. Region, State и Loc - это группирующие переменные для каждого наблюдения ID, и для каждого наблюдения var1:var5 выполняется 5 измерений. Для каждой группирующей переменной я провожу одномерную анову для каждого var. Когда обнаруживаются существенные различия, я использую функцию TukeyHSD() и функцию multcompLetters() из пакета multcompView для генерации CLD в группах. Поскольку я хочу сделать это для каждой группирующей переменной, я пытаюсь написать функцию, чтобы не повторяться и не делать опечаток. Ниже показано, где я нахожусь с этим:

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())? Как я могу это исправить и как я могу получить функцию вывода аккуратной таблицы, которая показывает каждую группу и буквы для каждой переменной, которую я ей даю сразу. Например, это будет выглядеть примерно так для State с использованием всех 5 переменных

     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 буквы?

Ответы [ 2 ]

2 голосов
/ 27 мая 2020
• 1000 *

1 голос
/ 29 мая 2020

Вы приняли ответ, но, просто задокументировав, вы можете получить то, что изначально просили, немного поработав ...

Я обрезал результаты

...