2015-09-16 2 views
1

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

require(spatstat) 
X <- ppp(runif(200), runif(200), 
c(0,1), c(0,1), unitname=c("metre","metre")) 

Давайте ресэмплировать данные:

a <- quadratresample(X, nx=25, ny=5, replace=F, nsamples = 1) 

Но новые точки генерируются в пределах одной и той же области/пространственного окна

> a 
planar point pattern: 200 points 
window: rectangle = [0, 1] x [0, 1] metres 

Мой вопрос: как бы я переделал 200 точек в новом окне больше, чем исходное окно (1 на 1 м); другими словами, как бы я экстраполировал небольшой набор из 200 пространственных точек в больший масштаб, сохраняя при этом ту же плотность повторной дискретизации; скажем, я хочу увидеть в общей сложности 1000 точек данных в объеме 5 на 5 м?

+0

Я не уверен, что понимаю ваше использование «экстраполяции». Вы просто хотите увеличить выборку, то есть взять 200 точек, отобранных из вашего окна 1x1, и поместить их в окно 5x5 с одинаковыми относительными позициями? – Gregor

+0

Да, вы правы, это то, что я подразумевал под экстраполяцией - плотность данных оставалась бы одной и той же/единичной областью, но я хочу переделать в большей степени, то есть если 200 точек в 1 на 1 м площади, то будет 1000 в области 5 на 5 м. – ToNoY

+0

. Хорошо, поэтому ** не ** масштабирование, некое создание данных. Вы хотите повторить образец с повторной выборкой в ​​200 пунктов, чтобы было 25 экземпляров в области 5x5? – Gregor

ответ

2

Это довольно просто, потому что spatstat дает нам все необходимые инструменты. В настоящее время у вас есть сетка 1x1. Вам нужна сетка 5x5, которая построена из 25 сеток 1x1. Мы можем попробовать точки для этих сеток с nsamples аргументом:

a <- quadratresample(X, nx = 25, ny = 5, replace = F, nsamples = 25) 

Теперь у нас есть список из 25 ppp с. Как вы заметили, все они будут в одном окне 1x1. Для того, чтобы превратить их в сетку, мы перемещаем их соответствующим образом, от 0 до 4-х единиц х сдвига и от 0 до 4 единиц у сдвига:

for (i in seq_along(a)) { 
    a[[i]] = shift(a[[i]], vec = c((i - 1) %% 5, (i - 1) %/% 5)) 
} 

объединить их, используйте superimpose:

b = superimpose(a) 

Это дает единственный объект ppp в окне 5x5 с 200 * 25 = 5000 точек, который сохраняет 200 точек на единицу квадрата оригинала.

+0

выглядит неплохо, но накладываю на него ошибку:> b = наложение (a) Ошибка в superimpose.default (a): Аргумент 1 не содержит компонентов x и y – ToNoY

+0

@ToNoY Какая версия из 'spartstat' вы работаете? В версии 1.42-0 они добавили метод списка для наложения. Если вы обновляетесь до последней версии, она должна работать. – Gregor

+1

У меня есть версия 1-43-0, и я по-прежнему получаю ту же ошибку, что и @ToNoY. Я решил эту проблему, извлекая содержимое списка в качестве аргументов: 'do.call (superimpose, list.of.ppps)'. – Arthur

Смежные вопросы