Создание оценки плотности ядра для нескольких животных в adehabitatHR - PullRequest
1 голос
/ 16 марта 2019

Я пытаюсь создать оценки плотности ядра (KDE), чтобы оценить домашние диапазоны для нескольких пар длиннохвостых сисек. Несмотря на отфильтровывание пар (переменная «nest_id»), которые имеют менее пяти местоположений GPS, я все равно получаю сообщение об ошибке «Требуется как минимум 5 перемещений для соответствия домашнему диапазону» при попытке создания kernelUD для всех пользователей. Я не уверен точно, в чем проблема / что я делаю неправильно. Я очень новичок в домашних анализах диапазона в целом, а также в 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 голосов
/ 08 апреля 2019

Обновлено, чтобы указывать на текущую версию документации функции kernelUD ():

справочные документы для 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.

Таким образом, используя выше, вы также можете использовать Виньетка , где есть пример, которому вы уже можете следовать:

Ниже приведен краткий пример использования 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, содержащим как координаты, так и идентификатор (который является «Имя» выше).

Перемещениеотсюда, посмотрите на справку ?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.

«Ваша миссия, если вы решите принять ...» - правильно создать coords в вашем SpatialPointsDataFrame, где coords включает в себя как координаты, так и идентификатор животного.

Отсюда это может бытьполезно поднять новый вопрос типа «Как создать SpatialPointsDataFrame, который включает идентификаторы животных?»Если вы поднимаете этот вопрос, обязательно включите воспроизводимый набор данных, так как это будет иметь большое значение для людей, помогающих.

...