Значение LSD равно нулю при использовании процедуры Бонферрони в R

#r #statistics

#r #Статистика #bonferroni

Вопрос:

У меня проблема с поиском значения LSD при использовании процедуры Бонферрони. Он возвращает значение NULL, и не могли бы вы, пожалуйста, помочь мне с этим? Большое спасибо.

 library(agricolae)

# Input the treatments and responses
trt <- c(rep("P", 4), rep("T", 4), rep("S", 4), rep("E", 4), rep("C",4))
response <- c(29.6, 24.3, 28.5, 32, 27.3, 32.6, 30.8, 34.8, 5.8, 6.2, 11, 8.3, 
             21.6, 17.4, 18.3, 19, 29.2, 32.8, 25, 24.2)
trt <- as.factor(trt)

df <- data.frame(trt, response)
model <- aov(response ~ trt, data = df)
out <- LSD.test(model, "trt", p.adj = "bonferroni")
out

# Obtain the LSD value
out$statistics$LSD
  

введите описание изображения здесь

Комментарии:

1. Забавный факт: rep(c("P", "T", "S", "E", "C"), each=4) это более простой способ сделать trt

2. Запустите str(out) , и вы увидите, что вы получаете NULL , потому out$statistics$LSD что не является элементом out . Похоже, что LSD это не статистика, предоставленная agricolae::LSD.test() .

Ответ №1:

К сожалению, это не очень хорошо документировано. Вы можете проверить код для LSD.test, и там у вас есть:

    if (length(nr) == 1 amp; p.adj == "none") 
        statistics <- data.frame(statistics, t.value = Tprob, 
            LSD = LSD)
    if (length(nr) == 1 amp; p.adj != "none") 
        statistics <- data.frame(statistics, t.value = Tprob, 
            MSD = LSD)
  

Поэтому, когда ваш p.adjust не "none" соответствует, он изменяет имя столбца MSD , что означает минимальную существенную разницу. Вы также можете переключиться на консоль (опция console =TRUE), чтобы увидеть это.