Страница 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
...
получить количество пикселей:
то потом надо просто сделать регрессию в цикле
Код: Выделить всё
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
Максим Дубинин
можно, почему нет, просто перед регрессией сделайте
Re: Регрессионный анализ временных серий растров
Добавлено: 28 июн 2015, 17:30
alexeysmirnov20