将“ppp”转换为multitype

时间:2015-12-24 21:38:53

标签: r spatstat

我通过一系列spatstat函数运行了两个未标记的平面点模式数据集。现在我想使用Kcross.inhom函数来描述两者之间的交互,但Kcross只能处理标记数据,所以我将所有x-y数据合并到一个csv文件中,并添加了一个区分两者的列。我已经建立了以下点模式对象,但是不明白如何为我的目的编辑Kcross的后续示例。或者,也许有更好的方法?谢谢你的帮助!

# read in data & create ppp
collisionspotholes<-read.csv("cpmulti.csv")
cp<-ppp(collisionspotholes[,3],collisionspotholes[,4],c(40.50390735,40.91115166),c(-74.25262139,-73.7078596))

# synthetic example
pp <- runifpoispp(50)
pp <- pp %mark% factor(sample(0:1, npoints(pp), replace=TRUE))
K <- Kcross(pp, "0", "1")
K <- Kcross(pp, 0, 1) # equivalent

2 个答案:

答案 0 :(得分:1)

我不清楚你遇到的问题是什么。你好像我在本质上“在那里”。但是,为了完整起见,请告诉我您应遵循的程序:

让X和Y成为你的两点模式(可能在相同的窗口中观察到)。

将这些组合成一个单一的模式:

XY <- superimpose(X=X,Y=Y)

请注意,您无需使用csv文件。使用spatstat提供的工具效率要高得多。

上述语法产生多点模式,其中标记是具有级别“X”和“Y”的因子。 (如果您希望水平用其他符号表示,您可以轻松安排。)

然后只计算非均匀Kcross函数:

Ki <- Kcross.inhom(XY,"X","Y")

这就是它的全部内容。

请注意,上述内容使用默认方法来估计两种模式的强度,明确地使用bw.diggle()选择的带宽保留一次内核平滑。可能有更好的方法来估计强度,可能通过拟合参数模型。这取决于您可获得的信息的性质。

解释 Kcross.inhom()的输出,恕我直言,微妙而困难。 你得出的任何结论都要谨慎。

答案 1 :(得分:1)

Rolf Turner的回答是正确的。但是,你说那个

  

我已将所有x-y数据合并到一个csv文件中,并添加了一个区分两者的列。

好的,假设数据框被称为df,它有名为xy的列给出空间坐标,h是一个字符向量,用于标识是否对应点是坑洞(h="p")或碰撞(h="c")。然后你可以做

X <- ppp(df$x, df$y, xlim, ylim, marks=factor(df$h))

其中xlim, ylim是空间坐标的限制。或者更优雅

X <- with(df, ppp(x, y, xlim, ylim, marks=factor(h))

请注意使用factor确保标记是分类值。然后输入

X

检查你是否有'多重点模式'。

然后你可以做,例如

K <- Kcross(X)
Ki <- Kcross.inhom(X)

请阅读Kcross, Kcross.inhom的帮助文件,以获取有关如何使用这些功能以及如何解释结果的建议。

顺便说一句,请不要同时向多个论坛发送相同的问题。那些必须回答的人很难。