Ккросс для пространственного точечного анализа - в R - PullRequest
0 голосов
/ 24 июня 2018

Я пытаюсь использовать Kcross для анализа пространственных точек. Я хочу сравнить виды A и B из моего набора данных, называемого «птицы». Интересующая переменная species_name. Он имеет только 2 уровня - species A и species B.

Ниже приведены мои коды, в которых я пытался установить species_name как многотипный объект.

marks(birds) <- factor("species_name") #where birds is a ppp object
Kcross(birds,i = "species A", j = "species B")

Однако я столкнулся с сообщением об ошибке: No points have mark i = species A.

Я перепробовал все способы, но безрезультатно, и мне нужно выполнить K-скрещивание между этими двумя видами. Неправильно ли я определил свой многотипный объект или функцию Kcross? Какой правильный способ сделать это?

Для воспроизводимого примера, пожалуйста, найдите ниже ссылку на набор данных птиц и коды: https://drive.google.com/file/d/1uaQu9LTLqnIjiIRQZLNlraRcLe6nsqkr/view?usp=sharing

library(tidyverse)
library(spatstat)
library(sp)
library(sf)
library(rgdal)
birds = read_csv("birds_sample1.csv")

#create 200x200 polygon as window
x_coord <- c(0,0,200,200,0)
y_coord <- c(0,200,200,0,0)
xym <- cbind(x_coord, y_coord)
p <- Polygon(xym)
ps <-Polygons(list(p),1)
sps <- SpatialPolygons(list(ps))
raster_owin <- as(sps, "owin") 
raster_owin

#create ppp object for birds 
birds <- st_as_sf(birds, coords = c("X", "Y"))
birds  <- as(birds , 'Spatial')
birds<- as(birds, "ppp") 
birds<- birds[raster_owin]

#attempt for Kcross, which failed
marks(birds) <- factor("species_name") #where birds is a ppp object
Kcross(birds,i = "species A", j = "species B")

Ответы [ 2 ]

0 голосов
/ 24 июня 2018

Вам не нужно загружать много библиотек (все еще использующих readr из tidyverse), чтобы сделать это с spatstat.Вот несколько строк кода:

library(spatstat)
W <- owin(c(0,200), c(0,200))
birds <- readr::read_csv("https://drive.google.com/uc?export=download&id=1uaQu9LTLqnIjiIRQZLNlraRcLe6nsqkr")
#> Warning: Missing column names filled in: 'X1' [1]
species <- factor(birds$species_name)
birds <- ppp(x = birds$X, y = birds$Y, marks = species, window = W)
#> Warning: data contain duplicated points
Kbirds <- Kcross(birds, i = "Species A", j = "Species B")
plot(Kbirds)

0 голосов
/ 24 июня 2018

Поскольку birds теперь является ppp объектом, атрибуты теперь перечислены в marks, поэтому вы должны вызывать их как таковые,

marks(birds) <- factor(birds$marks$species_name) 

Затем можно вызвать KCross без установки этих аргументов, поскольку по умолчанию уже установлено i для первого уровня меток и j для второго уровня

levels(marks(birds))
#[1] "Ordinary Snape"          "Rose-crested Blue Pipit"

Kcross(birds)
...