Как изобразить тренд во времени?


34

У меня есть временной ряд растров, где ячейки каждого растра представляют определенное значение в определенное время.

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

Мой несколько наивный подход состоит в том, чтобы подогнать простую линейную регрессию (X = время и Y = значение) к каждой ячейке и вывести массив уклонов в растр (как показано на изображениях ниже). Это может быть отфильтровано только путем экспорта значимых результатов.

временной ряд из четырех отдельных ячеек

Склоны от линейной регрессии

Как еще я могу представить тренд во времени в растровой серии?

Я интересуюсь общими методиками, а не специальными инструкциями.

Ответы:


15

Построение предполагаемых склонов, как в вопросе, является отличной вещью. Однако вместо того, чтобы фильтровать по значимости - или в сочетании с этим - почему бы не наметить некоторую меру того, насколько хорошо каждая регрессия соответствует данным? Для этого среднеквадратическая ошибка регрессии легко интерпретируется и имеет смысл.

Например, приведенный Rниже код генерирует временной ряд из 11 растров, выполняет регрессии и отображает результаты тремя способами: в нижнем ряду в виде отдельных сеток оцененных уклонов и среднеквадратичных ошибок; в верхнем ряду, как наложение этих сеток вместе с истинными базовыми склонами (что на практике вы никогда не будете иметь, но предоставляется компьютерным моделированием для сравнения). Наложение, поскольку оно использует цвет для одной переменной (предполагаемый наклон) и яркость для другой (MSE), нелегко интерпретировать в этом конкретном примере, но вместе с отдельными картами в нижнем ряду может быть полезно и интересно.

Карты

(Пожалуйста, игнорируйте перекрывающиеся легенды на оверлее. Обратите также внимание, что цветовая схема для карты «Истинные уклоны» не совсем такая же, как и для карт предполагаемых уклонов: случайная ошибка приводит к тому, что некоторые из предполагаемых уклонов охватывают более экстремальный диапазон, чем истинные склоны. Это общее явление, связанное с регрессией к среднему .)

Кстати, это не самый эффективный способ сделать большое количество регрессий для одного и того же набора времени: вместо этого матрица проекции может быть предварительно вычислена и применена к каждому «стеку» пикселей быстрее, чем ее пересчет для каждой регрессии. Но это не имеет значения для этой маленькой иллюстрации.


# Specify the extent in space and time.
#
n.row <- 60; n.col <- 100; n.time <- 11
#
# Generate data.
#
set.seed(17)
sd.err <- outer(1:n.row, 1:n.col, function(x,y) 5 * ((1/2 - y/n.col)^2 + (1/2 - x/n.row)^2))
e <- array(rnorm(n.row * n.col * n.time, sd=sd.err), dim=c(n.row, n.col, n.time))
beta.1 <- outer(1:n.row, 1:n.col, function(x,y) sin((x/n.row)^2 - (y/n.col)^3)*5) / n.time
beta.0 <- outer(1:n.row, 1:n.col, function(x,y) atan2(y, n.col-x))
times <- 1:n.time
y <- array(outer(as.vector(beta.1), times) + as.vector(beta.0), 
       dim=c(n.row, n.col, n.time)) + e
#
# Perform the regressions.
#
regress <- function(y) {
  fit <- lm(y ~ times)
  return(c(fit$coeff[2], summary(fit)$sigma))
}
system.time(b <- apply(y, c(1,2), regress))
#
# Plot the results.
#
library(raster)
plot.raster <- function(x, ...) plot(raster(x, xmx=n.col, ymx=n.row), ...)
par(mfrow=c(2,2))
plot.raster(b[1,,], main="Slopes with errors")
plot.raster(b[2,,], add=TRUE, alpha=.5, col=gray(255:0/256))
plot.raster(beta.1, main="True slopes")
plot.raster(b[1,,], main="Estimated slopes")
plot.raster(b[2,,], main="Mean squared errors", col=gray(255:0/256))

4

То, что вы описываете, это «Обнаружение изменений». Существует много методов обнаружения изменений с использованием растров. Вероятно, наиболее распространенным является различие изображений, когда вы вычитаете одно изображение из другого, чтобы получить третье. Однако это зависит от типа данных, которые вы пытаетесь сравнить. Из вашего изображения видно, что вы сравниваете изменения в уклоне с течением времени (если эта область не подвергается крупным земляным работам, это вряд ли изменится). Однако, если вы сравниваете изменения класса земли с течением времени, вы можете использовать другой подход.

Я наткнулся на эту статью D. Lu et al. в котором они сравнивают различные методы обнаружения изменений. Вот тезисы:

Своевременное и точное обнаружение изменений характеристик поверхности Земли чрезвычайно важно для понимания взаимосвязей и взаимодействий между человеком и природными явлениями, чтобы способствовать более эффективному принятию решений. Данные дистанционного зондирования являются первичными источниками, широко используемыми для обнаружения изменений в последние десятилетия. Многие методы обнаружения изменений были разработаны. Эта статья суммирует и рассматривает эти методы. Предыдущая литература показала, что различие в изображениях, анализ главных компонентов и сравнение после классификации являются наиболее распространенными методами, используемыми для обнаружения изменений. В последние годы анализ спектральной смеси, искусственные нейронные сети и интеграция географической информационной системы и данных дистанционного зондирования стали важными методами для приложений обнаружения изменений. Различные алгоритмы обнаружения изменений имеют свои преимущества, и ни один из подходов не является оптимальным и применимым во всех случаях. На практике часто сравнивают разные алгоритмы, чтобы найти лучшие результаты обнаружения изменений для конкретного приложения. Исследование методов обнаружения изменений по-прежнему является актуальной темой, и необходимы новые методы для эффективного использования все более разнообразных и сложных данных дистанционного зондирования, доступных или планируемых к скорому доступу со спутниковых и бортовых датчиков. Эта статья представляет собой всестороннее исследование всех основных подходов к обнаружению изменений, реализованных в литературе. Различные алгоритмы часто сравнивают, чтобы найти наилучшие результаты обнаружения изменений для конкретного приложения. Исследование методов обнаружения изменений по-прежнему является актуальной темой, и необходимы новые методы для эффективного использования все более разнообразных и сложных данных дистанционного зондирования, доступных или планируемых к скорому доступу со спутниковых и бортовых датчиков. Эта статья представляет собой всестороннее исследование всех основных подходов к обнаружению изменений, реализованных в литературе. Различные алгоритмы часто сравнивают, чтобы найти наилучшие результаты обнаружения изменений для конкретного приложения. Исследование методов обнаружения изменений по-прежнему является актуальной темой, и необходимы новые методы для эффективного использования все более разнообразных и сложных данных дистанционного зондирования, доступных или планируемых к скорому доступу со спутниковых и бортовых датчиков. Эта статья представляет собой всестороннее исследование всех основных подходов к обнаружению изменений, реализованных в литературе.


4

Существует дополнение ArcGIS, разработанное Центром наук об окружающей среде Upper Midwest USGS под названием Curve Fit: инструмент регрессии растровых изображений на уровне пикселей, который может быть именно тем, что вам нужно. Из документации:

Curve Fit - это расширение к ГИС-приложению ArcMap, которое позволяет пользователю запускать регрессионный анализ для серии наборов растровых данных (изображений с географической привязкой). Пользователь вводит массив значений для объясняющей переменной (X). Набор растровых данных, представляющий соответствующую переменную ответа (Y), связан с каждым значением X, введенным пользователем. Затем в Curve Fit используются методы линейной или нелинейной регрессии (в зависимости от выбора пользователя) для расчета уникальной математической модели для каждого пикселя входных наборов растровых данных. Curve Fit выводит растровые поверхности оценки параметров, ошибок и мультимодельных выводов. Curve Fit - это как пояснительный, так и прогнозирующий инструмент, который предоставляет разработчикам пространственного моделирования возможность выполнять ключевые статистические функции в точном масштабе.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.