1-мерный точечный процесс в R (spatstat) - PullRequest
0 голосов
/ 18 декабря 2018

Я задал другой вопрос , который был закрыт как слишком широкий.Теперь я попытаюсь указать.

Опять же, я хотел бы смоделировать одномерный точечный процесс в R. До сих пор я работал только над двумерным моделированием и мне нужно немногоhelp.

Моя цель - симуляция, как на картинке

picture

Но мне нужна только реальная линия со случайными точками на ней.

Я использую spatstat и уже обнаружил, что могу генерировать случайные точки на 1-мерной линии с помощью:

rpoisppOnLines(lambda, L, lmax = NULL, ..., nsim=1, drop=TRUE)

Теперь я хотел бы создать реальную линию, предпочтительно с соответствиеммаркировка.

У кого-нибудь есть идеи?

Ответы [ 2 ]

0 голосов
/ 19 декабря 2018

Вы можете использовать простую линейную сеть для представления одномерного отрезка, который вы хотите смоделировать.Это также позволяет подобрать модели (lppm), оценить интенсивность непараметрически (density.lpp), оценить K-функцию (linearK) и множество других вещей:

library(spatstat)
x_start <- 0
x_end <- 3
endpoints <- ppp(x=c(x_start, x_end), y=c(0,0), window = owin(c(x_start, x_end), c(-.1,.1)))
L <- linnet(endpoints, edges = matrix(c(1,2),ncol = 2))
X <- rpoislpp(lambda = 5, L = L)

Однако этот инструмент предназначен для точек в сложной сети, а не только для реальной линии, поэтому метод построения графика не очень приспособлен к этому параметру и может не дать того, что вы хотите (слишком много пустого пространства):

plot(X, pch = 4, lwd = 2, main = "")
axis(1)

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

co <- coords(X)
co$x
#> [1] 1.3306861 2.5550691 1.7776248 2.9486675 1.8571362 2.5020587 1.4843001
#> [8] 0.4371669 0.8478670

Создано в 2018-12-18 с помощью представительного пакета (v0.2.1)

0 голосов
/ 18 декабря 2018

Вот некоторый примерный код получения образцов из точечного процесса.

library(spatstat)
lambda = 5
L = psp(0, 0, 3, 0, owin(c(0, 3), c(-1, 1)))
pp = rpoisppOnLines(lambda, L, lmax = NULL, nsim=1, drop=TRUE)
plot(pp$x, pp$y, pch = 4, lwd = 2, cex = 2)
abline(0, 0)

Вы можете сделать свой график необычным с помощью ggplot2

...