我有一个二维点模式(没有标记),我试图使用包络和非均匀对相关函数在存在空间不均匀性的情况下测试聚类。我正在使用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
我似乎无法弄清问题是什么......任何建议?
感谢您的帮助!
答案 0 :(得分:2)
这种情况正在发生,因为图片core-site.xml
包含一些负值,可能是非常小的值但是负值。您可以通过计算I
或range(I)
或min(I)
来检查。
any(I < 0)
的帮助表示由于数字错误,结果可能包含负值(非常小的值)。要删除这些内容,您需要在density.ppp
。
positive=TRUE
顺便说一句,参数density.ppp
在上面的代码中拼写错误。向量kernel
的间距太粗 - 你最好不要指定这个参数。此外,您无需键入r
,只需density.ppp
。