Преобразование PPP в multitype

Я обработал два немаркированных набора данных плоских точечных шаблонов с помощью серии функций spatstat. Теперь я хотел бы использовать функцию Kcross.inhom для описания взаимодействия между ними, но Kcross работает только с помеченными данными, поэтому я объединил все данные x-y в один файл csv и добавил столбец, который их различает. Я установил следующий объект точечного шаблона, но не понимаю, как редактировать последующий пример Kcross для моих целей. Или, может, есть способ получше? Спасибо за вашу помощь!

# read in data & create ppp
collisionspotholes<-read.csv("cpmulti.csv")
cp<-ppp(collisionspotholes[,3],collisionspotholes[,4],c(40.50390735,40.91115166),c(-74.25262139,-73.7078596))

# synthetic example
pp <- runifpoispp(50)
pp <- pp %mark% factor(sample(0:1, npoints(pp), replace=TRUE))
K <- Kcross(pp, "0", "1")
K <- Kcross(pp, 0, 1) # equivalent

person watermillvillage    schedule 24.12.2015    source источник
comment
Пакеты, которые вы используете, пожалуйста.   -  person    schedule 25.12.2015
comment
Я использую spatstat. Я тоже загрузил spdep, но не думаю, что использую какие-либо его функции.   -  person watermillvillage    schedule 25.12.2015


Ответы (2)


Я не совсем понимаю, в чем проблема. Мне кажется, что вы по существу "присутствуете". Однако позвольте мне для полноты изложить процедуру, которой вы должны следовать:

Пусть X и Y будут вашими двумя точечными шаблонами (предположительно, наблюдаемыми в том же окне).

Соедините их в единый узор:

XY <- superimpose(X=X,Y=Y)

Обратите внимание, что нет необходимости возиться с вашими CSV-файлами; гораздо эффективнее использовать возможности spatstat.

Вышеупомянутый синтаксис создает многотипный точечный образец с метками, являющимися фактором с уровнями «X» и «Y». (Если вы хотите, чтобы уровни обозначались другими символами, вы можете легко это сделать.)

Затем просто вычислите неоднородную функцию Kcross:

Ki <- Kcross.inhom(XY,"X","Y")

Вот и все, что нужно знать об этом.

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

Интерпретация вывода Kcross.inhom(), ИМХО, тонкая и трудная. Будьте осторожны с любыми выводами, которые вы делаете.

person Rolf Turner    schedule 26.12.2015

Ответ Рольфа Тернера правильный. Однако вы говорите, что

Я объединил все данные x-y в один файл csv и добавил столбец, который их различает.

Хорошо, предположим, что фрейм данных называется df и в нем есть столбцы с именами x и y, дающие пространственные координаты, и h, который является вектором символов, определяющим, является ли соответствующая точка выбоиной (h="p") или столкновением (h="c"). Тогда ты мог бы сделать

X <- ppp(df$x, df$y, xlim, ylim, marks=factor(df$h))

где xlim, ylim - пределы пространственных координат. Или более элегантно

X <- with(df, ppp(x, y, xlim, ylim, marks=factor(h))

Обратите внимание на использование factor, чтобы отметки были категориальными значениями. Затем введите

X

чтобы убедиться, что у вас есть «многотипный точечный узор».

Тогда вы можете сделать, например,

K <- Kcross(X)
Ki <- Kcross.inhom(X)

Прочтите файлы справки для Kcross, Kcross.inhom, чтобы узнать, как использовать эти функции и как интерпретировать результаты.

Между прочим, пожалуйста, не отправляйте один и тот же вопрос на несколько форумов одновременно. Это сложно для тех, кто должен ответить.

person Adrian Baddeley    schedule 27.12.2015