Я пытаюсь получить среднее значение меток в каждой точке, считая все точки, доступные на определенном расстоянии вокруг каждой точки, и включая точку, из которой мы измеряем.Среднее значение оценок ближайших соседей markmean
Я использовал markmean() {pulstats} с буфером, но я не уверен, что он делает то, что я хочу делать.
Вот простой пример того, что я пытаюсь сделать:
library(spatstat)
p <- c(1:25) #points ID
x <- c(4,4,4,4,4,3,3,3,3,3,2,2,2,2,2,1,1,1,1,1,0,0,0,0,0) #x location
y <- c(0,1,2,3,4,0,1,2,3,4,0,1,2,3,4,0,1,2,3,4,0,1,2,3,4) #y location
i <- c(0,0,0,0,0,0,0,0,0,0,0,0,60,40,0,0,0,0,0,0,0,0,0,0,0) #mark or value in each point
w <- owin(c(0,4), c(0,4))# window needed to create ppp
table <- data.frame(p,x,y,i)
ppptable.Mark <- ppp(table$x, table$y,
marks = table$i,
window = w)
meanmarkstable <- markmean (ppptable.Mark, sigma=1, at="points")
tableresults <- cbind(table,meanmarkstable)
Пространственная точка смотреть что-то вроде этого:
Point distribution with IDs and marks (marks are in point 13=60,in point 14=40, for the rest of the points the mark is 0 Конечно мои реальные данные не следовать шаблону регулярного, так расстояние между точками является переменным.
Я ожидал бы, что для точки 13 с сигмой 1 значение markmean равно: (60 + 40 + 0 + 0 + 0)/5 = 20 или для точки 7 обозначение означает: (60 + 0 + 0 + 0 + 0)/5 = 12.
Но после приведенного выше кода я получаю:
p x y i meanmarkstable
1 1 4 0 0 0.5588339
2 2 4 1 0 1.8035799
3 3 4 2 0 3.3992581
4 4 4 3 0 3.2959390
5 5 4 4 0 2.1132312
6 6 3 0 0 1.6559496
7 7 3 1 0 5.5518658
8 8 3 2 0 10.5182801
9 9 3 3 0 10.1597853
10 10 3 4 0 6.2832065
11 11 2 0 0 2.5529727
12 12 2 1 0 8.6038936
13 13 2 2 60 4.7103612
14 14 2 3 40 7.6160733
15 15 2 4 0 10.0581368
16 16 1 0 0 1.6560550
17 17 1 1 0 5.5599181
18 18 1 2 0 10.6956613
19 19 1 3 0 11.0335128
20 20 1 4 0 7.7616822
21 21 0 0 0 0.5589243
22 22 0 1 0 1.8099875
23 23 0 2 0 3.5421055
24 24 0 3 0 4.0856978
25 25 0 4 0 2.1128894
вы знаете, почему я получаю эти результаты? Как вы правильно вычислили среднее значение меток вокруг каждой точки в определенном буфере?
Большое спасибо за ваше время и помощь!
Большое спасибо за ваш вклад! Именно то, что я искал. – YDO