使用计算的 lambda 生成泊松点模式时出错
Error in generating a poisson point pattern with calculated lambda
我有一个二维点模式(无标记),我正在尝试使用包络线和非均匀对相关函数在存在空间不均匀性的情况下测试聚类。我正在使用 density.ppp 函数估算数据的非均匀强度函数。这是一些示例数据:
x y
1 533.03 411.58
2 468.39 622.92
3 402.86 530.94
4 427.13 616.81
5 495.20 680.62
6 566.61 598.99
7 799.03 585.16
8 1060.09 544.23
9 144.66 747.40
10 138.14 752.92
11 449.49 839.15
12 756.45 713.72
13 741.01 728.41
14 760.22 740.28
15 802.34 756.21
16 799.04 764.89
17 773.81 771.97
18 768.41 720.07
19 746.14 754.11
20 815.40 765.14
总共有 ~1700 个数据点
这是我的代码:
library("spatstat")
WT <- read.csv("Test.csv")
colnames(WT) <- c("x","y")
#determine bounding window
win <- ripras(WT)
unitname(win) <- c("micrometer")
#convert to ppp data class
WT.ppp <- as.ppp(WT, win)
plot(WT.ppp)
#estimate intensity function using cross validation
I <- density.ppp(WT.ppp,sigma=bw.diggle(WT.ppp),adjust=0.3,kernal="epanechnikov")
plot(I)
#predetermined r values for PCF
radius <- seq(from = 0, to = 50, by = 0.5)
#use envelopes to test the null hypothesis (ie. inhomogenous poisson process)
PCF_envelopes <- envelope(WT.ppp,divisor="d", pcfinhom,r = radius,nsim=10,simulate=expression(rpoispp(I)) )
当我 运行 rpoisspp(I) 时,出现以下错误:
Error in sample.int(npix, size = ni, replace = TRUE, prob = lpix) :
negative probability
我似乎无法弄清楚问题是什么......有什么建议吗?
感谢您的帮助!
发生这种情况是因为图像 I
包含一些负值,可能是非常小的负值。您可以通过计算 range(I)
或 min(I)
或 any(I < 0)
来检查。
density.ppp
的帮助说由于数值错误,结果可能包含负值(非常小的值)。要删除这些,您需要在对 density.ppp
.
的调用中设置 positive=TRUE
顺便说一下,参数 kernel
在上面的代码中被拼错了。向量 r
的间距也太粗了——你最好不要指定这个参数。此外,您不需要键入 density.ppp
,只需键入 density
。
我有一个二维点模式(无标记),我正在尝试使用包络线和非均匀对相关函数在存在空间不均匀性的情况下测试聚类。我正在使用 density.ppp 函数估算数据的非均匀强度函数。这是一些示例数据:
x y
1 533.03 411.58
2 468.39 622.92
3 402.86 530.94
4 427.13 616.81
5 495.20 680.62
6 566.61 598.99
7 799.03 585.16
8 1060.09 544.23
9 144.66 747.40
10 138.14 752.92
11 449.49 839.15
12 756.45 713.72
13 741.01 728.41
14 760.22 740.28
15 802.34 756.21
16 799.04 764.89
17 773.81 771.97
18 768.41 720.07
19 746.14 754.11
20 815.40 765.14
总共有 ~1700 个数据点
这是我的代码:
library("spatstat")
WT <- read.csv("Test.csv")
colnames(WT) <- c("x","y")
#determine bounding window
win <- ripras(WT)
unitname(win) <- c("micrometer")
#convert to ppp data class
WT.ppp <- as.ppp(WT, win)
plot(WT.ppp)
#estimate intensity function using cross validation
I <- density.ppp(WT.ppp,sigma=bw.diggle(WT.ppp),adjust=0.3,kernal="epanechnikov")
plot(I)
#predetermined r values for PCF
radius <- seq(from = 0, to = 50, by = 0.5)
#use envelopes to test the null hypothesis (ie. inhomogenous poisson process)
PCF_envelopes <- envelope(WT.ppp,divisor="d", pcfinhom,r = radius,nsim=10,simulate=expression(rpoispp(I)) )
当我 运行 rpoisspp(I) 时,出现以下错误:
Error in sample.int(npix, size = ni, replace = TRUE, prob = lpix) :
negative probability
我似乎无法弄清楚问题是什么......有什么建议吗?
感谢您的帮助!
发生这种情况是因为图像 I
包含一些负值,可能是非常小的负值。您可以通过计算 range(I)
或 min(I)
或 any(I < 0)
来检查。
density.ppp
的帮助说由于数值错误,结果可能包含负值(非常小的值)。要删除这些,您需要在对 density.ppp
.
positive=TRUE
顺便说一下,参数 kernel
在上面的代码中被拼错了。向量 r
的间距也太粗了——你最好不要指定这个参数。此外,您不需要键入 density.ppp
,只需键入 density
。