Есть ли способ указать веса в relrisk.ppp
функции в spatstat
(версия 1.63-3)?
Функция relrisk.ppp
вызывает функцию density.ppp
, которая позволяет пользователям указывать свои собственные веса.
Например, давайте построим на предоставленных spatstat.data::urkiola
данных, где вместо отдельных деревьев местоположениями являются древовидные насаждения, и у нас есть вторая числовая метка для частоты появления деревьев в каждой точке-местоположении:
urkiola_new <- spatstat.data::urkiola
urkiola_new$marks <- data.frame("type" = urkiola_new$marks, "freq" = rpois(urkiola_new$n, 3))
f1 <- spatstat::relrisk(urkiola_new, weights = urkiola_new$marks$freq)
При использовании urkiola_new
в вызове relrisk
urkiola_new
перехватывается stopifnot(is.multitype(X))
в relrisk.ppp
. Затем я попытался указать веса отдельно как вектор, используя исходные данные urkiola
,
f2 <- spatstat::relrisk(urkiola, weights = urkiola_new$marks$freq)
но был пойман предупреждением от функции pixellate.ppp
внутри внутренней функции density.ppp
:
Error in pixellate.ppp(x, ..., padzero = TRUE) : length(weights) == npoints(x) || length(weights) == 1 is not TRUE
Та же ошибка возникает, когда я конвертирую веса в список
urkiola_weights <- split(urkiola_new$marks$freq, urkiola_new$marks$type)
f3 <- spatstat::relrisk(urkiola, weights = urkiola_weights)
Я подозреваю, что есть способ грамотно указать веса, но он все же ускользает от меня. Любые предложения или рекомендации будут полезны, спасибо!
$
для извлечения данных из объекта и, особенно, не используйте$
для присвоения значений компонентам объекта. Это может повредить внутреннюю структуру. Например, присвоениеX$marks <- value
приводит к повреждению внутренней структурыX
. Для этого используйтеmarks(X) <- value
. - person Adrian Baddeley   schedule 06.05.2020