Сравнение моделей

#r #dataframe

#r #фрейм данных

Вопрос:

Я пытаюсь сравнить две модели, DIC(Deviance information criterion) используя цикл for, но он возвращает

Аргумент ошибки имеет нулевую длину

в строке else if. ниже приведен код.

 Data <- read.delim("A.txt")
a = Data[, 16]

if (isTRUE(MannKendall(a)[["p.value"]] > 0.05 amp;amp;
           Box.test(a, lag = 8, type = "Ljung-Box") [["p.value"]] > 0.05) amp;amp;
    pettitt.test(a)
    [["p.value"]] > 0.05 |
    kpss.test(log(a), null = "Trend")[["p.value"]] > 0.05) {
  fit1 <-
    fevd(a, Data, method = "Bayesian", units = "mm")
  print(return.level(fit1, return.period = c(25, 50, 100)))
  rp = c(25, 50, 100)
  print(ci(fit1, return.period = c(25, 50, 100)))
  
} else if (fevd(a,
                Data,
                method = "Bayesian",
                location.fun = ~ ti,
                units = "mm")[["DIC"]] < fevd(
                  a,
                  Data,
                  method = "Bayesian",
                  location.fun = ~ ti,
                  scale.fun = ~ ti,
                  use.phi = TRUE,
                  na.action = na.fail,
                  units = "mm"
                )[["DIC"]]) {
  fit2 <-
    fevd(
      a,
      Data,
      method = "Bayesian",
      location.fun = ~ ti,
      units = "mm"
    )
  print(return.level(fit2, return.period = c(25)))
  print(return.level(fit2, return.period = c(50)))
  print(return.level(fit2, return.period = c(100))):rp = c(25, 50, 100, 150)
  print(ci(fit2, return.period = c(25)))
  
} else {
  fit3 <-
    fevd(
      a,
      Data,
      method = "Bayesian",
      location.fun = ~ ti,
      scale.fun = ~ ti,
      use.phi = TRUE,
      na.action = na.fail,
      units = "mm"
    )
  print(return.level(fit3, return.period = c(25)))
  print(return.level(fit3, return.period = c(50)))
  print(return.level(fit3, return.period = c(100))):rp = c(25, 50, 100)
  print(ci(fit3, return.period = c(25)))
  
}
 

введите описание ссылки здесь

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

1. fevd(a, Data, метод = «байесовский», location.fun = ~ti, единицы измерения = «мм»)[[«DIC»]] < fevd(a, Data, метод = «байесовский», location.fun = ~ti, scale.fun = ~ti, использовать.phi =TRUE,na.action = na.fail, единицы измерения = «мм»)[[«DIC»]] возвращает нулевую ошибку длины аргумента

2. Пожалуйста, уделите немного времени форматированию и прочтите «справку» по написанию вопросов, прежде чем отправлять вопрос. Использование ctrl a followed by ctrl shift a в Rstudio автоматически отформатирует ваш код во что-то, что обычно более читаемо. Я сделал это на данный момент и немного сократил ваш текст. Ваша ссылка также не работает, поскольку файл не доступен никому, у кого есть ссылка. Я не знаю содержимого файла, но, как правило, не рекомендуется ссылаться на содержимое, поскольку ссылка может «сломаться» позже, что затруднит понимание вопроса будущими читателями. Вместо этого вставьте содержимое в свой пост.