Проблемы с построением результатов теста тренда по Кендаллу с учетом сезонности (пакет EnvStats) в R

Вопрос или проблема

Я использую тест сезонного тренда Кендалла из пакета EnvStats для оценки данных о качестве воды.

  1. Я хотел бы построить линии тренда, используя значение пересечения и наклон по методу Тейла-Сена из результатов теста, но у меня возникают проблемы с построением линии через мои данные. Я не уверён, связано ли это с проблемой масштабирования моих графиков или чем-то ещё?

  2. Я также заметил, что значения пересечения, которые я получаю из теста сезонного тренда Кендалла, отличаются от ожидаемых, и хотел бы узнать, может ли кто-то объяснить, почему так происходит?

Я понимаю, что значение пересечения для теста сезонного Кендалла является медианным значением пересечений, полученных от отдельных трендов Кендалла, рассчитанных на каждую сезон. Однако я получаю значения, которые, похоже, не совпадают. Например, если я запускаю тренды Кендалла для каждого отдельного сезона и вычисляю медианное значение пересечения, я получаю значение 20.5. Однако результат теста сезонного Кендалла выводит значение -44.4 для пересечения.

Ниже приведен пример того, как я ожидаю, что будут выглядеть большинство моих графиков:

seasonal_test_sal <- kendallSeasonalTrendTest(Salinity_ppth ~ month + year, data = df)
seasonal_test_sal
# Оцененные параметры:          tau       = -1.188119e-03
# наклон     = -5.050505e-05
# пересечение =  3.250258e+01

ggplot(df,aes(x= year, y = Salinity_ppth)) +
  geom_point() +
  geom_abline(intercept = 3.250258e+01, slope = -5.050505e-05) +
  labs(x = "Год",
       y = "Соленость") +
  theme_minimal()

График Солености

Однако, используя тот же код, я иногда получаю графики, которые выглядят так для других параметров качества воды:

seasonal_test_temp <- kendallSeasonalTrendTest(Water_Temp_deg_C ~ month + year, data = df)
seasonal_test_temp
#Оцененные параметры:          tau       =   0.10109619
#                                 наклон     =   0.03838542
#                                 пересечение = -44.36713333

ggplot(df,aes(x=year, y = Water_Temp_deg_C)) +
  geom_point() +
  geom_abline(intercept = -44.36713333, slope = 0.03838542) +
  labs(x = "Год",
       y = "Температура воды (°C)") +
  theme_minimal()

#Примечание: это создаёт линию в самом верхнем левом углу

Температура воды

seasonal_test_TN <- kendallSeasonalTrendTest(TN_mgL ~ month + year, data = df)
seasonal_test_TN
# Оцененные параметры:          tau       = 0.0143334926
# наклон     = 0.0001207307
# пересечение = 0.3934360222

ggplot(df,aes(x=year, y = TN_mgL)) +
  geom_point() +
  geom_abline(intercept = 0.3934360222, slope = 0.0001207307) +
  labs(x = "Год",
       y = "Общий азот") +
  theme_minimal()

#Примечание: линия для этого тренда кажется слишком высокой?

Общий азот

Ответ или решение

Проблема, с которой вы столкнулись при построении графиков результатов теста на сезонные тренды Кендалла с использованием пакета EnvStats в R, может быть вызвана несколькими факторами. Давайте разберем вашу ситуацию более подробно.

1. Построение графиков с трендовыми линиями

Вы упомянули, что получаете проблемы с отрисовкой трендовой линии через ваши данные. Прежде всего, важно убедиться, что оси графика правильно масштабированы и что данные не имеют значительных выбросов, которые могут влиять на визуализацию. Если ваши данные находятся в разных диапазонах, использование функции geom_abline может не дать ожидаемого результата.

Вместо geom_abline можно использовать geom_smooth, чтобы более точно оценить трендовая линия, основываясь на ваших данных:

ggplot(df, aes(x = year, y = Salinity_ppth)) +
  geom_point() +
  geom_smooth(method = "lm", se = FALSE, color = "blue", formula = y ~ x) +
  labs(x = "Год", y = "Соленость") +
  theme_minimal()

Такой подход даст более корректное представление о тренде, учитывая все точки данных.

2. Разница в значениях перехвата

Относительно разницы в значениях перехвата между результатами сезонного теста Кендалла и расчетами, основанными на индивидуальных сезонах, следует учитывать, что сезонный тест Кендалла включает в себя статистическую обработку, выполняемую на основе всей выборки, а не на основании медианных значений для каждого сезона. Это может привести к значительным расхождениям, особенно если распределение данных не является линейным.

Для понимания различий важно также учитывать следующие моменты:

  • Статистическая природа теста: Тест Кендалла производит оценку, которая основывается на всех данных, а не отдельно по сезонам, что может привести к другим значениям.
  • Шум в данных: Если ваши данные имеют высокую степень изменчивости или выбросы, это окажет значительное влияние на интерпретацию результатов.

3. Наиболее вероятные причины проблем

В вашем случае значения перехвата значительно варьируются, и это может быть связано с:

  • Неправильным выбором модели: Убедитесь, что выбранная вами модель адекватно описывает данные. Возможно, линейная модель не подходит для ваших данных.
  • Проблемы с данные: Проверьте ваши данные на отсутствие выбросов или неожиданных значений, так как это может искажать результаты.

Рекомендуемые шаги

  1. Перепроверьте ваши данные на наличие выбросов и пропусков, используя методы визуализации, такие как коробочные диаграммы или распределения.
  2. Используйте geom_smooth, чтобы оценить тренд по данным, а не только по оцененным параметрам.
  3. Обратитесь к документации пакета EnvStats и литературе по статистике, чтобы лучше понять, как интерпретировать выходные данные теста Кендалла.

В заключение, наличие различий в значениях интерцепта между индивидуальными и сезонными трендами должно быть более подробно изучено в контексте ваших данных, так как это может повлиять на вашу интерпретацию результатов. Удачи в вашем анализе данных!

Оцените материал
Добавить комментарий

Капча загружается...