从 spatstat 中的模拟 mppm 获取值
Obtain values from simulated mppm in spatstat
我通过使用 R
包 spatstat
中的 mppm
函数在几个独立的数据集上拟合模型获得了一个 mppm
对象。如何生成此模型的模拟实现并获得模拟的 x
、y
和 marks
属性?
我这样安装我的模型:
data <- listof(NMJ1,NMJ2,NMJ3)
data <- hyperframe(X=1:3, Points=data)
model <- mppm(Points ~marks*sqrt(x^2+y^2), data)
其中 NMJ1、NMJ2 和 NMJ3 已标记 ppp
,并且是同一实验的独立实现。
sim <- simulate(model)
允许我生成该模型的模拟实现,并 plot(sim,axes = TRUE)
绘制它们。 sim
本身就是一个hyperframe
对象:
> sim
Hyperframe:
Sim1
1 (ppp)
2 (ppp)
3 (ppp)
如何访问此超帧中的值(x
、y
和 marks
)?我的目标是从我的模型中生成大量独立的实现,并将模拟值用于另一项任务。有没有实用的方法来获取、检索和保存这些值?
既然你说你要模拟这个很多次我在这里展示了代码
有两个模拟(而不是你在问题中的一个):
library(spatstat)
data <- list(amacrine, amacrine, amacrine)
data <- hyperframe(X=1:3, Points=data)
model <- mppm(Points ~marks*sqrt(x^2+y^2), data)
sim <- simulate(model, nsim = 2)
#> Generating simulated realisations of 3 models..
#> 1, 2, 3.
现在 sim
是一个有 2 列的 hyperframe
(每个模拟一列)。每个
列是 3 点模式的列表。获取三组坐标
第一次模拟的标记在每个点模式上使用 as.data.frame
:
co1 <- lapply(sim$Sim1, as.data.frame)
那么co1
就是一个长度为3的列表,我们可以打印出前几个
与 head()
命令协调,例如第三个坐标
点模式:
head(co1[[3]])
#> x y marks
#> 1 0.4942587 0.7889985 off
#> 2 0.6987270 0.7637359 on
#> 3 0.3926415 0.6819965 on
#> 4 0.7982686 0.9060733 off
#> 5 1.3507722 0.9731363 on
#> 6 0.6450985 0.6924126 on
我们可以通过另一个 lapply
提取每个模拟的坐标和标记
遍历每个模拟(在本例中为 2):
co <- lapply(sim, function(x) lapply(x, as.data.frame))
现在co
是一个有2个元素的列表,每个元素是3组的列表
坐标:
length(co)
#> [1] 2
length(co[[2]])
#> [1] 3
head(co[[2]][[3]])
#> x y marks
#> 1 0.1660580 0.04180501 on
#> 2 0.7840025 0.71727782 on
#> 3 1.2011733 0.17109112 on
#> 4 1.0429867 0.49284639 on
#> 5 1.1411869 0.86711072 off
#> 6 1.0375942 0.06427601 on
我通过使用 R
包 spatstat
中的 mppm
函数在几个独立的数据集上拟合模型获得了一个 mppm
对象。如何生成此模型的模拟实现并获得模拟的 x
、y
和 marks
属性?
我这样安装我的模型:
data <- listof(NMJ1,NMJ2,NMJ3)
data <- hyperframe(X=1:3, Points=data)
model <- mppm(Points ~marks*sqrt(x^2+y^2), data)
其中 NMJ1、NMJ2 和 NMJ3 已标记 ppp
,并且是同一实验的独立实现。
sim <- simulate(model)
允许我生成该模型的模拟实现,并 plot(sim,axes = TRUE)
绘制它们。 sim
本身就是一个hyperframe
对象:
> sim
Hyperframe:
Sim1
1 (ppp)
2 (ppp)
3 (ppp)
如何访问此超帧中的值(x
、y
和 marks
)?我的目标是从我的模型中生成大量独立的实现,并将模拟值用于另一项任务。有没有实用的方法来获取、检索和保存这些值?
既然你说你要模拟这个很多次我在这里展示了代码 有两个模拟(而不是你在问题中的一个):
library(spatstat)
data <- list(amacrine, amacrine, amacrine)
data <- hyperframe(X=1:3, Points=data)
model <- mppm(Points ~marks*sqrt(x^2+y^2), data)
sim <- simulate(model, nsim = 2)
#> Generating simulated realisations of 3 models..
#> 1, 2, 3.
现在 sim
是一个有 2 列的 hyperframe
(每个模拟一列)。每个
列是 3 点模式的列表。获取三组坐标
第一次模拟的标记在每个点模式上使用 as.data.frame
:
co1 <- lapply(sim$Sim1, as.data.frame)
那么co1
就是一个长度为3的列表,我们可以打印出前几个
与 head()
命令协调,例如第三个坐标
点模式:
head(co1[[3]])
#> x y marks
#> 1 0.4942587 0.7889985 off
#> 2 0.6987270 0.7637359 on
#> 3 0.3926415 0.6819965 on
#> 4 0.7982686 0.9060733 off
#> 5 1.3507722 0.9731363 on
#> 6 0.6450985 0.6924126 on
我们可以通过另一个 lapply
提取每个模拟的坐标和标记
遍历每个模拟(在本例中为 2):
co <- lapply(sim, function(x) lapply(x, as.data.frame))
现在co
是一个有2个元素的列表,每个元素是3组的列表
坐标:
length(co)
#> [1] 2
length(co[[2]])
#> [1] 3
head(co[[2]][[3]])
#> x y marks
#> 1 0.1660580 0.04180501 on
#> 2 0.7840025 0.71727782 on
#> 3 1.2011733 0.17109112 on
#> 4 1.0429867 0.49284639 on
#> 5 1.1411869 0.86711072 off
#> 6 1.0375942 0.06427601 on