为adehabitatHR中的多个动物创建内核密度估计

时间:2019-03-16 14:28:49

标签: r adehabitathr

我正在尝试创建内核密度估计(KDE),以估计多对长尾山雀的原始范围。尽管滤除了少于五个GPS位置的对(“ nest_id”变量),但在尝试为所有个人创建kernelUD时,我仍然收到错误消息“至少需要5个重定位才能容纳原始范围”。我不确定到底是什么问题/我在做什么错。我对家庭范围分析以及R和adehabitatHR非常陌生。下面是我的代码。

library(dplyr)
# reading in location data
locations <- read.csv("./data/GPS_LOCATIONS_MASTER.csv")

## making nest_id a factor
locations$nest_id <- as.factor(locations$nest_id)

## filtering for points I want to include
location_sub <- filter(locations, start_at_nest == "no")

## taking out pairs (via nest_id) with less than 5 GPS locations
xorig <- subset(location_sub,
                with(location_sub,
                     nest_id %in% names(which(table(nest_id) >= 5))))

glimpse(xorig)


Observations: 257
Variables: 10
$ point_id          <int> 293, 294, 299, 300, 303, 306, 307, 312, 315, 318, 324…
$ nest_id           <fct> 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,…
$ female_id         <fct> RPR, RPR, RPR, RPR, RPR, RPR, RPR, RPR, RPR, RPR, RPR…
$ male_id           <fct> OWL, OWL, OWL, OWL, OWL, OWL, OWL, OWL, OWL, OWL, OWL…
$ lat               <dbl> 53.38293, 53.38285, 53.38282, 53.38302, 53.38300, 53.…
$ lon               <dbl> -1.554700, -1.554000, -1.553967, -1.554067, -1.553867…
$ start_at_nest     <fct> no, no, no, no, no, no, no, no, no, no, no, no, no, n…
$ place_in_sequence <int> 3, 1, 3, 4, 3, 3, 4, 3, 3, 3, 3, 4, 5, 1, 2, 3, 4, 5,…
$ date_time         <fct> 2019-02-27T13:26:31Z, 2019-02-27T13:28:46Z, 2019-02-2…
$ notes             <fct> , , , , , , , , , , , , , , , , , , , , , , , , , , 


library(sp)

## projecting so that my x & y (in coords.x1 & coords.x2) are in metres
xorig_s <- SpatialPointsDataFrame(xorig,
                                  coords = cbind(xorig$lon, xorig$lat),
                                  proj4string =  CRS("+proj=longlat +datum=WGS84 +no_defs"))
xorig_utm <- spTransform(xorig_s, CRS("+proj=utm +zone=30 +ellps=WGS84 
                                      +datum=WGS84 +units=m +no_defs"))
glimpse(as.data.frame(xorig_utm))

Observations: 257
Variables: 12
$ point_id          <int> 293, 294, 299, 300, 303, 306, 307, 312, 315, 318, 324…
$ nest_id           <fct> 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,…
$ female_id         <fct> RPR, RPR, RPR, RPR, RPR, RPR, RPR, RPR, RPR, RPR, RPR…
$ male_id           <fct> OWL, OWL, OWL, OWL, OWL, OWL, OWL, OWL, OWL, OWL, OWL…
$ lat               <dbl> 53.38293, 53.38285, 53.38282, 53.38302, 53.38300, 53.…
$ lon               <dbl> -1.554700, -1.554000, -1.553967, -1.554067, -1.553867…
$ start_at_nest     <fct> no, no, no, no, no, no, no, no, no, no, no, no, no, n…
$ place_in_sequence <int> 3, 1, 3, 4, 3, 3, 4, 3, 3, 3, 3, 4, 5, 1, 2, 3, 4, 5,…
$ date_time         <fct> 2019-02-27T13:26:31Z, 2019-02-27T13:28:46Z, 2019-02-2…
$ notes             <fct> , , , , , , , , , , , , , , , , , , , , , , , , , , 
$ coords.x1         <dbl> 596131.3, 596178.1, 596180.4, 596173.3, 596186.6, 596…
$ coords.x2         <dbl> 5915843, 5915835, 5915831, 5915853, 5915852, 5915848,…

library(adehabitatHR)

## trying to create :
kud <- kernelUD(xorig_utm[,1], h = "href")
## this procures the error message:
Error in kernelUD(xorig_utm[, 1], h = "href") : 
  At least 5 relocations are required to fit an home range

1 个答案:

答案 0 :(得分:0)

已更新为指向最新版本的kernelUD()函数文档:

help docs for kernelUD

  

用法

kernelUD(xy, h = "href", grid = 60,
         same4all = FALSE, hlim = c(0.1, 1.5),
         kern = c("bivnorm", "epa"), extent = 1,
         boundary = NULL)
     

...

     

参数

xy 

An object inheriting the class SpatialPoints containing the x and y relocations
of the animal. If xy inherits the class SpatialPointsDataFrame, it should contain
only one column (factor) corresponding to the identity of the animals for
each relocation.

因此,在上面使用示例的情况下,您可能还会使用Vignette

  

我在下面给出了使用kernelUD的简短示例,   puechabonsp数据集。请记住,组件的第一列   此数据集的重定位包含动物的身份:

> data(puechabonsp)
> kud <- kernelUD(puechabonsp$relocs[,1], h="href")
> kud

了解xy以上所需条件的一种方法是打印出包装示例中包含的示例数据:

data("puechabonsp")
head( puechabonsp$relocs[,1] )


            coordinates  Name
    1 (699889, 3161560) Brock
    2 (700046, 3161540) Brock
    3 (698840, 3161030) Brock
    4 (699809, 3161500) Brock
    5 (698627, 3160940) Brock
    6 (698719, 3160990) Brock
    Coordinate Reference System (CRS) arguments: NA 

请注意,puechabonsp $ relocs [,1]是一个SpatialPointsDataFrame对象,其中包含坐标和ID(即上面的“名称”)。

从此处继续,请查看?SpatialPointsDataFrame帮助,以了解该功能及其创建的对象:

  

用法

SpatialPointsDataFrame(coords, data, coords.nrs = numeric(0), 
      proj4string = CRS(as.character(NA)), match.ID, bbox = NULL)
     

参数

coords      numeric matrix or data.frame with coordinates (each row 
is a point); in case of SpatialPointsDataFrame an object of class
SpatialPoints-class is also allowed.

“您的任务,应该选择接受...”是在SpatialPointsDataFrame中正确创建coords,其中coords包括坐标和动物ID。

从这里提出一个新问题,例如“如何创建包含动物ID的SpatialPointsDataFrame”可能会有所帮助。如果您确实提出了这个问题,请确保包括可重现的数据集,因为这将对帮助人员大有帮助。