如何使用 multcompLetters4 计算 TukeyHSD 字母并将它们按组关联到 originl 数据集

How to compute TukeyHSD letters with multcompLetters4 and associate them to the originl dataset by group

提问人:Betty888 提问时间:11/14/2023 更新时间:11/14/2023 访问量:8

问:

我从R开始,我遇到了一个问题,但我忽略了它的根源,所以我来这里寻求你的帮助,我希望你能帮助我 🙏 我有一个包含以下列的数据集: Y = 响应 TRT:第一解释变量 地段 : 第二个解释变量 位置:是对我的数据进行分组的列,因此“aov”按位置运行。 我的目标是提取 Tukey-test goup 字母输出 + 学生化残差来标记异常值。 为此,我使用以下代码:

library(multcomp)
library(multcompView)
library(dplyr)
library(tidyr)
library(na.tools)
library(tibble)

#My datasets and my variables
output <- as.data.frame(dataset)
output$response <- as.numeric(output$response)
output$trt <- as.factor(output$trt)
output$lot <- as.factor(output$lot)
output <- output %>% 
     group_by(location) %>% 
     mutate(row=row_number(),unique_trt = n_distinct(trt), unique_lot = n_distinct(lot), var = var(response, na.rm = TRUE))


# create a subset dataset where I use filter to exclude cases where one of the factors has only 1 level and where variance in data is null 
lsplit <-  output %>%
         filter( var != 0 & unique_trt != 1 & unique_lot != 1)
lsplit <- lsplit %>% mutate(response3 = replace_na(response, mean(response, na.rm = TRUE)))

# split my sub-dataset by "location"
lsplit <- split(lsplit, ~ location)
# Create a function of lm and TukeyHSD to apply by "Location" and combine the output to the original dataset "output"
all_results <- lapply(lsplit,function(x){
     model <- aov(reponse3 ~ trt + lot, data = x, na.rm=TRUE)
     tukey <- TukeyHSD(model)
     cld <- multcompLetters4(model, tukey)
     TK <- group_by(x,trt) %>% summarise (mean = mean(response3, na.rm=TRUE)) %>% arrange(desc(mean))
     cld <- as.data.frame.list(cld$trt)
     TK$cld <- cld$Letters
     x$stud_resid <- studres(model)
     x <- left_join(x, TK, by = "trt")
      x
  })
output <- left_join(output,bind_rows(all_results) %>% select(location, mean, stud_resid, row, cld) , by=c("location", "row"))

此代码非常适合我用于测试的位置示例,但是一旦我将其应用于整个数据集(我在Power query中大约20 M行的数据集上使用它),我就会收到一条错误消息,我不知道这是从哪个位置来的,这就是为什么我无法提供示例来重现错误。 这是我收到的错误消息:

“vec2mat(x) 中的错误:不允许 36 个 NA,在 x 中发现”任何帮助,最欢迎 🙏 提前感谢您的帮助!

R 统计 anova tukey multcompview

评论


答: 暂无答案