Страница 1 из 1

Регрессионный анализ временных серий растров

Добавлено: 09 окт 2008, 12:02
eveeza
Можно ли анализировать временной ряд в R как в Erdas в виде протсранственного стека данных? Т.е. можно ли получить, к примеру, регрессию для каждой точки пространственно-временного ряда в виде картинки?

Re: Регрессионный анализ временных серий растров

Добавлено: 12 окт 2008, 06:18
Максим Дубинин
то есть у вас растры b1, b2, b3, b4, b5, b6 .... совпадающие по размеру и вам надо для каждого пиксела сделать регрессию?

Если это так, то не совсем понятно, что является зависимой переменной, один из каналов? или еще какое-то значение?

В любом случае, в R это сделать достаточно просто. Если вы импортировали каналы во фреймы данных:

Код: Выделить всё

x = new("GDALReadOnlyDataset", test)
b1 = getRasterTable(x)$band1
b2 = getRasterTable(x)$band2
...
получить количество пикселей:

Код: Выделить всё

numpix = dim(b1)[1]*dim(b1)[2]
то потом надо просто сделать регрессию в цикле

Код: Выделить всё

new = data.frame()
for (i in 1:numpix) {
lm1 = lm(y~b1[i]+b2[i]+b3[i])
new = cbind(new,lm1)
}
и потом сохранить массив как растр. Не хочу все подробно расписывать, так как не очень понимаю, то ли что это нужно.

Re: Регрессионный анализ временных серий растров

Добавлено: 14 окт 2008, 15:36
eveeza
В рассматриваемом примере зависимая переменная - номер растра в стеке, если так можно назвать. В данном случае каждый слой представляет собой измерение некоторой величины в определённый момент времени. Т.е. в каждой точке в стеке задан временной ход некоторого параметра.

Re: Регрессионный анализ временных серий растров

Добавлено: 16 окт 2008, 06:41
Максим Дубинин
Хмм, честно говоря, не могу понять, как может ли быть номер растра в стэке зависимой переменной? Наверное будет полегче, если объясните, какая перед вами стоит задача.

Re: Регрессионный анализ временных серий растров

Добавлено: 21 окт 2008, 13:18
eveeza
Тут можно уточнить, что номеру стека соответствует определённый момент времени. И зависимость, конечно, получается не от номера стека, а от времени. Задача заключается в определении тренда (т.е. угла наклона прямой) в значениях ежегодных показателей некоторой величины и в определении надёжности этого тренда. Функция - значение пикселя, зависимая переменная - в какой момент времени взято это измерение в пикселе (связано с номером стека). В дальнейшем необходимо найти множественную регрессию - насколько некоторое число параметров определяют поведение рассматриваемого. Параметры представлены в одинаковых форматах в пространстве и времени.

Re: Регрессионный анализ временных серий растров

Добавлено: 22 окт 2008, 01:31
Максим Дубинин
значит я с самого начала понял правильно, просто наоборот, в вашем случае зависимой переменной является спектральное отражение или то, какое значение у вас имеет растр, а независимой - момент времени. Например:

Код: Выделить всё

aseq = seq(10) #время
data = runif(10) #данные
lm1 = lm(data~aseq) #линейная регрессия
intecept = lm1$coefficients[1]
slope = lm1$coefficients[2]
intercept и slope и есть основные показатели регрессии, их и надо картировать так как я показал в посте выше. С множественной регрессией принцип тот же, просто для надо где-то брать еще переменные.

графически это будет выглядеть так:

Код: Выделить всё

plot(data~aseq,type="b",xlab="time",ylab="value")
abline(lm1)
Изображение

Re: Регрессионный анализ временных серий растров

Добавлено: 23 окт 2008, 19:00
eveeza
Спасибо!

Re: Регрессионный анализ временных серий растров

Добавлено: 26 дек 2008, 13:45
eveeza
Можно ли при вычислении регрессии исключить из расчёта некое значение, к примеру, ноль?

Re: Регрессионный анализ временных серий растров

Добавлено: 26 дек 2008, 19:02
Максим Дубинин
можно, почему нет, просто перед регрессией сделайте

Код: Выделить всё

data = subset(data,data != 0) 

Re: Регрессионный анализ временных серий растров

Добавлено: 28 июн 2015, 17:30
alexeysmirnov20