Как объединить несколько объектов estUD в объект estUDm для функции kerneloverlaphr.
Я создал несколько объектов estUD (предполагаемое распределение использования пространства одним животным) вне пакета adehabitatHR, используя второй метод на этой странице https://ecosystems.psu.edu/research/labs/walter-lab/manual/home-range-estimation/4.3-kde-with-plug-in-bandwidth-selection-hplug-in. Я сделал это, потому что пакет adehabitatHR не имеет возможности оценить распределение использования с пропускной способностью плагина.
сценарий:
`#Load dataset, x = animal pair number, 21 pairs in total.
fulldata <- read.csv("clean_data.csv", header=T)
fulldata$pair.id <- as.factor(fulldata$pair.id)
pair_x <- subset(fulldata, fulldata$pair.id == "26")
#Get only the coordinates
loc <- data.frame(pair_x$x, pair_x$y)
#Define the projection
proj4string <- CRS("+proj=utm +zone=17N +ellps=WGS84")
#Make SpatialPointsDataFrame using coordinates, pair id and projection
spdf <- SpatialPointsDataFrame(loc, fulldata, proj4string = proj4string)
#Calculate the bandwidth matrix to use later in creating the KDE
Hpi1 <- Hpi(x = loc)
#Create spatial points from just the coordinates
loc.pts <- SpatialPoints(loc, proj4string=proj4string)
#Set the expansion value for the grid and get the bbox from the
SpatialPointsDataFrame
expandValue <- 100 #This value is the amount to add on each side of the
bbox
boundingVals <- spdf@bbox
#Get the change in x and y and adjust using expansion value
deltaLong <- as.integer(((boundingVals[1,2]) - (boundingVals[1,1]))
+ (2*expandValue))
deltaLat <- as.integer(((boundingVals[2,2]) - (boundingVals[2,1]))
+ (2*expandValue))
# 7 meter grid used because that is average accuracy of GPS unit
gridRes <- 7
gridSizeX <- deltaLong / gridRes
gridSizeY <- deltaLat / gridRes
#Offset the bounding coordinates to account for the additional area
boundingVals[2,1] <- boundingVals[2,1] - expandValue
boundingVals[2,2] <- boundingVals[2,2] + expandValue
boundingVals[1,1] <- boundingVals[1,1] - expandValue
boundingVals[1,2] <- boundingVals[1,2] + expandValue
#Grid Topology object is basis for grid (offset, cellsize, dim)
gridTopo <- GridTopology((boundingVals[,1]),
c(gridRes,gridRes),c(gridSizeX,gridSizeY))
#Using the Grid Topology and projection create a SpatialGrid class
sampGrid <- SpatialGrid(gridTopo, proj4string = proj4string)
#Cast over to Spatial Pixels
sampSP <- as(sampGrid, "SpatialPixels")
#convert the SpatialGrid class to a raster
sampRaster <- raster(sampGrid)
#set all the raster values to 1 such as to make a data mask
sampRaster[ ] <- 1
#Get the center points of the mask raster with values set to 1
evalPoints <- xyFromCell(sampRaster, 1:ncell(sampRaster))
#Create the KDE using the evaluation points
hpikde <- kde(x=loc, H=Hpi1, eval.points=evalPoints)
#Create a template raster based upon the mask and then assign the values
from
#the kde to the template
hpikde.raster <- raster(sampRaster)
hpikde.raster <- setValues(hpikde.raster,hpikde$estimate)
hpikde_full_SPDF<-rasterToPoints(hpikde.raster, spatial=TRUE, fun=NULL)
#convert raster to estUDm (adehabitat) object
hpikde.px <- as(hpikde.raster,"SpatialPointsDataFrame")
#create new estUD using the SPxDF
hpikde.ud_x <- new("estUDm", hpikde.px)
#Assign values to a couple slots of the estUD
hpikde.ud_x@vol = FALSE
hpikde.ud_x@h$meth = "Plug-in Bandwidth"`
Теперь я хочу выполнить функцию kerneloverlaphr, но для этого требуется объект estUDm (предполагаемое распределение использования пространства несколькими животными). Есть ли способ объединить несколько объектов estUD в один объект estUDm? Или же можно отредактировать приведенный выше код для создания одного объекта estUDm, классифицированного по идентификатору пары?
Я попытался поместить все данные, содержащие все пары, в приведенный выше код, но не могу классифицировать этот объект как estUDm и получить эту ошибку:
hpikde.ud_full <- new("estUDm", hpikde.px)
Error in getClass(Class, where = topenv(parent.frame())) :
“estUDm” is not a defined class