У меня возникают трудности с преобразованием точечных паттернов в гиперкадры, несмотря на онлайновый поиск и консультации с Бэддли и Рубаком Пространственные точечные паттерны: методология и приложения с R. Я новичок в R и пространственной статистике.Любая помощь приветствуется!Моя ситуация: у меня есть точечный шейп-файл и полигональный шейп-файл из ГИС.Точечный шейп-файл содержит координаты xy, а также множество группирующих переменных, ковариат и переменных отклика.Шейп-файл полигона содержит координаты графика, в котором расположены точки, и включает столбец идентификатора графика.
Мне нужно охарактеризовать и проанализировать точечные паттерны на основе нескольких факторов, как внутри каждого графика, так и между графиками.Примечание: сюжет является экспериментальной единицей.Основываясь на показаниях, я пришел к выводу, что гиперфрейм является наиболее удобным методом анализа.В качестве примера вот как я представляю гиперкадр:
PlotID Point# X Coord Y Coord Color Size Sex Weight Growth
A 1 514514.5 3372057 Red Small Female 10 0.5
A 2 514484.2 3372062 Red Medium Male 14 0.6
A 3 514517.8 3372017 Red Large Female 12 0.6
B 1 524514.5 3372065 Blue Small Male 14 0.4
B 2 524484.2 3372067 Blue Small Male 16 0.3
B 3 524517.8 3372063 Blue Large Male 10 0.35
C 1 504514.5 3372041 Red Medium Female 10 0.7
C 2 504484.2 3372042 Red Large Female 12 0.4
C 3 504517.8 3372038 Red Small Male 16 0.6
D 1 504517.8 3372038 Blue Small Male 10 0.7
D 2 504517.8 3372038 Blue Medium Female 12 0.3
D 3 504517.8 3372038 Blue Small Male 16 0.6
Вышеупомянутый гиперкадр может быть использован для группировки точечных рисунков по цвету для анализа различий в точечных рисунках.
Я успешно преобразовал упрощенную версиюшейп-файлов к гиперкадру путем поднабора одного графика с соответствующими точками.Вот код:
library(sp)
library(spatstat)
library(shapefiles)
library(maptools)
library(rgdal)
x <- readShapeSpatial("Points_subset.shp") #creates a spatial points
#dataframe
x.data <- slot(x,"data") #columns of the data frame used as marks
p <- readShapeSpatial("Plot_subset") #creates spatial polygons df.
w <- as(as(p,"SpatialPolygons"),"owin") #assign the plot boundary as the
#window of the point pattern
y <- as(x, "SpatialPoints") #Assign point coordinates as spatial points
z <- as(y, "ppp") #Convert to class "ppp"
z <- z[w] #Assign the plot boundary as the window of the ppp
marks(z) <- x.data #Attach the data.frame of variables to the ppp.
plot(z) #Correctly produces 1 plot containing all points
Однако, когда я применяю один и тот же процесс для нескольких графиков, используя цикл, гиперкадр включает в себя информацию только из одного графика.Вот код для нескольких графиков:
xm <- readShapeSpatial("Points_All.shp")
xm.data <- slot(xm,"data")
xn <- levels(unique(xm$PlotID)) #identify all plots
pm <- readShapeSpatial("Plots_All.shp")
for(i in 1:length(xn)) {
pm2 <- subset(pm, pm$PlotID == xn[i])
wm2 <- as(as(pm2,"SpatialPolygons"),"owin")#list of polygon windows
xm2 <- subset(xm, xm$PlotID == xn[i])
xm2.data <- subset(xm.data, xm.data$PlotID == xn[i])
ym <- as(xm2, "SpatialPoints")
zm2 <- as.ppp(coordinates(ym),wm2)
marks(zm2) <- xm2.data
unitname(zm) <- c("metre","metres")
plot(zm2, main=paste(xn[i])) #plots each plot's points with correct
#window
}
Исследование zm2
str(zm2) # Although all plots print above, "str" shows only the first
#plot
View(zm2)#Contains only the points of the first plot
Преобразование в гиперкадр
zm2.hyp <- as.hyperframe(zm2)
str(zm2.hyp) #as above, contains a row for each point of the first plot.
#hyperframe should include points for all plots
Как включить все графики в гиперкадр?