diff --git a/man/figures/slm/sim_trispecies-1.png b/man/figures/slm/sim_trispecies-1.png
index 74f34350..62ece92c 100644
Binary files a/man/figures/slm/sim_trispecies-1.png and b/man/figures/slm/sim_trispecies-1.png differ
diff --git a/man/figures/slm/slm1-1.png b/man/figures/slm/slm1-1.png
index b4ce212a..e4d86079 100644
Binary files a/man/figures/slm/slm1-1.png and b/man/figures/slm/slm1-1.png differ
diff --git a/man/figures/slm/slm2-1.png b/man/figures/slm/slm2-1.png
index db484e85..816ac530 100644
Binary files a/man/figures/slm/slm2-1.png and b/man/figures/slm/slm2-1.png differ
diff --git a/vignettes/si1_slm.Rmd b/vignettes/si1_slm.Rmd
index 4cee15e2..9abb3ee9 100644
--- a/vignettes/si1_slm.Rmd
+++ b/vignettes/si1_slm.Rmd
@@ -2,8 +2,8 @@
title: "Spatial Logistic Map"
author: "Wenbo Lyu"
date: |
- | Last update: 2026-02-15
- | Last run: 2026-04-05
+ | Last update: 2026-07-20
+ | Last run: 2026-07-20
output: rmarkdown::html_vignette
vignette: >
%\VignetteIndexEntry{SI1. Spatial Logistic Map}
@@ -86,13 +86,13 @@ We first construct three simulated species density distributions by combining a
sim_trispecies = \(nx,ny,seed = 123){
grid = expand.grid(seq(0, 10, length.out = nx),
seq(0, 10, length.out = ny))
- cov.fun = \(d, range = 1.5, sill=1) sill * exp(-d/range)
+ cov.fun = \(d, range=1.5, sill=1) sill * exp(-d/range)
dist.mat = fields::rdist(grid)
cov.mat = cov.fun(dist.mat, range=1.5, sill=1)
set.seed(seed)
res = replicate(3, {
MASS::mvrnorm(1, rep(0, nrow(grid)), cov.mat) |>
- pmax(0) |>
+ #pmax(0) |>
sdsfun::normalize_vector(0,1) |>
matrix(nrow = nx, ncol = ny) |>
terra::rast()
@@ -103,14 +103,14 @@ sim_trispecies = \(nx,ny,seed = 123){
species = sim_trispecies(20,20)
names(species) = letters[1:3]
species
-## class : SpatRaster
+## class : SpatRaster
## size : 20, 20, 3 (nrow, ncol, nlyr)
## resolution : 1, 1 (x, y)
## extent : 0, 20, 0, 20 (xmin, xmax, ymin, ymax)
-## coord. ref. :
+## coord. ref. :
## source(s) : memory
-## names : a, b, c
-## min values : 0, 0, 0
+## names : a, b, c
+## min values : 0, 0, 0
## max values : 1, 1, 1
options(terra.pal = grDevices::terrain.colors(100,rev = T))
@@ -125,28 +125,28 @@ terra::plot(species, nc = 3,
-We assume an underlying causal interaction structure among species, where species *a* influences *b*, and *b* in turn influences *c* (i.e., *a* → *b* → *c*). The intrinsic growth rates of species a, b, and c are uniformly assigned a value of 0.2. Species a exerts an effect of 1 on species b, and species b exerts an effect of 1 on species c. All other interspecific influence parameters are set to 0. This setup provides a controlled environment to test spatial causality detection methods under known dynamic interactions.
+We assume an underlying causal interaction structure among species, where species *a* influences *b*, and *b* in turn influences *c* (i.e., *a* → *b* → *c*). The intrinsic growth rates of species a, b, and c are assigned to 0.75, 0.78 and 0.76 respectively. Species a exerts an effect of 0.04 on species b, and species b exerts an effect of 0.04 on species c. All other interspecific influence parameters are set to 0. This setup provides a controlled environment to test spatial causality detection methods under known dynamic interactions.
``` r
simv = spEDM::slm(species, x = "a", y = "b", z = "c", k = 4, step = 15, transient = 1, interact = "local",
- alpha_x = 0.2, alpha_y = 0.2, alpha_z = 0.2,
- beta_xy = 1, beta_xz = 0, beta_yx = 0, beta_yz = 1, beta_zx = 0, beta_zy = 0)
+ alpha_x = 0.75, alpha_y = 0.78, alpha_z = 0.76,
+ beta_xy = 0.04, beta_xz = 0, beta_yx = 0, beta_yz = 0.04, beta_zx = 0, beta_zy = 0)
species_evolution = species
terra::values(species_evolution[["a"]]) = simv$x
terra::values(species_evolution[["b"]]) = simv$y
terra::values(species_evolution[["c"]]) = simv$z
species_evolution
-## class : SpatRaster
+## class : SpatRaster
## size : 20, 20, 3 (nrow, ncol, nlyr)
## resolution : 1, 1 (x, y)
## extent : 0, 20, 0, 20 (xmin, xmax, ymin, ymax)
-## coord. ref. :
+## coord. ref. :
## source(s) : memory
-## names : a, b, c
-## min values : 0.8553408, 0.9733337, 0.9886246
-## max values : 0.8611597, 0.9803933, 1.0008822
+## names : a, b, c
+## min values : 0.652826, 0.65015, 0.6594
+## max values : 0.672098, 0.673739, 0.681139
terra::plot(species_evolution, nc = 3,
mar = rep(0.1,4),
@@ -155,29 +155,29 @@ terra::plot(species_evolution, nc = 3,
legend = FALSE)
```
-
+
``` r
simv = spEDM::slm(species, x = "a", y = "b", z = "c", k = 4, step = 15, transient = 1, interact = "neighbors",
- alpha_x = 0.2, alpha_y = 0.2, alpha_z = 0.2, beta_xy = 1, beta_xz = 0, beta_yx = 0, beta_yz = 1, beta_zx = 0, beta_zy = 0)
+ alpha_x = 0.75, alpha_y = 0.78, alpha_z = 0.76, beta_xy = 0.04, beta_xz = 0, beta_yx = 0, beta_yz = 0.04, beta_zx = 0, beta_zy = 0)
species_evolution = species
terra::values(species_evolution[["a"]]) = simv$x
terra::values(species_evolution[["b"]]) = simv$y
terra::values(species_evolution[["c"]]) = simv$z
species_evolution
-## class : SpatRaster
+## class : SpatRaster
## size : 20, 20, 3 (nrow, ncol, nlyr)
## resolution : 1, 1 (x, y)
## extent : 0, 20, 0, 20 (xmin, xmax, ymin, ymax)
-## coord. ref. :
+## coord. ref. :
## source(s) : memory
-## names : a, b, c
-## min values : 0.8553408, 0.9718102, 0.9887262
-## max values : 0.8611597, 0.9803232, 0.9986816
+## names : a, b, c
+## min values : 0.652826, 0.649896, 0.659449
+## max values : 0.672098, 0.673748, 0.681138
terra::plot(species_evolution, nc = 3,
mar = rep(0.1,4),
@@ -186,4 +186,4 @@ terra::plot(species_evolution, nc = 3,
legend = FALSE)
```
-
+
diff --git a/vignettes/si1_slm.Rmd.orig b/vignettes/si1_slm.Rmd.orig
index 8739a2d5..41784614 100644
--- a/vignettes/si1_slm.Rmd.orig
+++ b/vignettes/si1_slm.Rmd.orig
@@ -2,7 +2,7 @@
title: "Spatial Logistic Map"
author: "Wenbo Lyu"
date: |
- | Last update: 2026-02-15
+ | Last update: 2026-07-20
| Last run: `r Sys.Date()`
output: rmarkdown::html_vignette
vignette: >
@@ -91,13 +91,13 @@ We first construct three simulated species density distributions by combining a
sim_trispecies = \(nx,ny,seed = 123){
grid = expand.grid(seq(0, 10, length.out = nx),
seq(0, 10, length.out = ny))
- cov.fun = \(d, range = 1.5, sill=1) sill * exp(-d/range)
+ cov.fun = \(d, range=1.5, sill=1) sill * exp(-d/range)
dist.mat = fields::rdist(grid)
cov.mat = cov.fun(dist.mat, range=1.5, sill=1)
set.seed(seed)
res = replicate(3, {
MASS::mvrnorm(1, rep(0, nrow(grid)), cov.mat) |>
- pmax(0) |>
+ #pmax(0) |>
sdsfun::normalize_vector(0,1) |>
matrix(nrow = nx, ncol = ny) |>
terra::rast()
@@ -119,12 +119,12 @@ terra::plot(species, nc = 3,
-We assume an underlying causal interaction structure among species, where species *a* influences *b*, and *b* in turn influences *c* (i.e., *a* → *b* → *c*). The intrinsic growth rates of species a, b, and c are uniformly assigned a value of 0.2. Species a exerts an effect of 1 on species b, and species b exerts an effect of 1 on species c. All other interspecific influence parameters are set to 0. This setup provides a controlled environment to test spatial causality detection methods under known dynamic interactions.
+We assume an underlying causal interaction structure among species, where species *a* influences *b*, and *b* in turn influences *c* (i.e., *a* → *b* → *c*). The intrinsic growth rates of species a, b, and c are assigned to 0.75, 0.78 and 0.76 respectively. Species a exerts an effect of 0.04 on species b, and species b exerts an effect of 0.04 on species c. All other interspecific influence parameters are set to 0. This setup provides a controlled environment to test spatial causality detection methods under known dynamic interactions.
-```{r slm1,fig.width=6.55,fig.height=2.60,fig.dpi=100,fig.cap=knitr::asis_output("**Figure 2**. Species distributions following spatiotemporal interaction and evolution after 20 simulation steps with 4-neighbor interactions.")}
+```{r slm1,fig.width=6.55,fig.height=2.60,fig.dpi=100,fig.cap=knitr::asis_output("**Figure 2**. Species distributions following spatiotemporal interaction and evolution after 15 simulation steps with 4-neighbor interactions.")}
simv = spEDM::slm(species, x = "a", y = "b", z = "c", k = 4, step = 15, transient = 1, interact = "local",
- alpha_x = 0.2, alpha_y = 0.2, alpha_z = 0.2,
- beta_xy = 1, beta_xz = 0, beta_yx = 0, beta_yz = 1, beta_zx = 0, beta_zy = 0)
+ alpha_x = 0.75, alpha_y = 0.78, alpha_z = 0.76,
+ beta_xy = 0.04, beta_xz = 0, beta_yx = 0, beta_yz = 0.04, beta_zx = 0, beta_zy = 0)
species_evolution = species
terra::values(species_evolution[["a"]]) = simv$x
@@ -141,9 +141,9 @@ terra::plot(species_evolution, nc = 3,
-```{r slm2,fig.width=6.55,fig.height=2.60,fig.dpi=100,fig.cap=knitr::asis_output("**Figure 3**. Species distributions after 20 simulation steps with 4-neighbor interactions and neighbor-averaged cross-variable dynamics.")}
+```{r slm2,fig.width=6.55,fig.height=2.60,fig.dpi=100,fig.cap=knitr::asis_output("**Figure 3**. Species distributions after 15 simulation steps with 4-neighbor interactions and neighbor-averaged cross-variable dynamics.")}
simv = spEDM::slm(species, x = "a", y = "b", z = "c", k = 4, step = 15, transient = 1, interact = "neighbors",
- alpha_x = 0.2, alpha_y = 0.2, alpha_z = 0.2, beta_xy = 1, beta_xz = 0, beta_yx = 0, beta_yz = 1, beta_zx = 0, beta_zy = 0)
+ alpha_x = 0.75, alpha_y = 0.78, alpha_z = 0.76, beta_xy = 0.04, beta_xz = 0, beta_yx = 0, beta_yz = 0.04, beta_zx = 0, beta_zy = 0)
species_evolution = species
terra::values(species_evolution[["a"]]) = simv$x