Skip to content

Instantly share code, notes, and snippets.

@agila5
Created September 28, 2025 20:48
Show Gist options
  • Save agila5/3a0ad58081a4fdc0a52d8afaa0bd4bb6 to your computer and use it in GitHub Desktop.
Save agila5/3a0ad58081a4fdc0a52d8afaa0bd4bb6 to your computer and use it in GitHub Desktop.
Showcase error with mppm
# Packages and data
library(spatstat)
library(dplyr)
library(splines)
dataNBA <- read.csv(unz("data/newDataNBA.zip", "newDataNBA.csv"))

# The observation window
crcl <- function(x0, y0, r, span = r, nsteps = 100) {
  x <- seq(x0 - span, x0 + span, length.out = nsteps)
  ylo <- y0 - sqrt(r^2 - (x - x0)^2)
  yup <- y0 + sqrt(r^2 - (x - x0)^2)
  data.frame(x = x, ylo = ylo, yup = yup)
}
crcl2 <- crcl(x0 = 0, y0 = -41.75, r = 34, span = 25, nsteps = 1000)
Z.m <- owin(poly = list(
  x = c(-25, -3, 3, 25, 25, rev(crcl2$x), -25, -25), 
  y = c(-47, -43, -43, -47, -18.70656, rev(crcl2$yup), -18.70656, -47)
))
rm(crcl, crcl2)

# The hyperframe object. The following warnings are simply due to a few
# points recorded in locations we do not wish to consider since they are too
# far from plausible shooting areas.
hy.data <- dataNBA |> 
  select(TEAM_NAME, newreal_x, newreal_y) |> 
  group_nest(TEAM_NAME) |> 
  rowwise() |> 
  mutate(
    pts = list(ppp(data$newreal_x, data$newreal_y, window = Z.m))
  ) |> 
  select(-data) |> 
  as.hyperframe()
#> Warning: There were 30 warnings in `mutate()`.
#> The first warning was:
#> ℹ In argument: `pts = list(ppp(data$newreal_x, data$newreal_y, window = Z.m))`.
#> ℹ In row 1.
#> Caused by warning:
#> ! 54 points were rejected as lying outside the specified window
#> ℹ Run `dplyr::last_dplyr_warnings()` to see the 29 remaining warnings.

mppm(
  formula = pts ~ y, 
  data = hy.data, 
  random = ~ bs(x, degree = 3, df = 3) | TEAM_NAME, 
  gcontrol = list(msVerbose = TRUE, msMaxIter = 150)
)
#> iteration 1 
#>   0:     8683290.2:  3.68734  4.30950 0.388302  4.13124  17.0227 -15.1854 -72.8263 -103.675 -98.0104  14.2680
#>   1:     8683289.5:  3.68293  4.28391 0.361249  4.12979  17.0245 -15.1836 -72.8267 -103.675 -98.0104  14.2680
#>   2:     8683288.8:  3.67806  4.30993 0.334687  4.12931  17.0265 -15.1817 -72.8263 -103.675 -98.0104  14.2680
#>   3:     8683287.6:  3.66510  4.28176 0.266636  4.12714  17.0319 -15.1761 -72.8267 -103.675 -98.0104  14.2681
#>   4:     8683286.2:  3.62652  4.32416 0.130109  4.12782  17.0504 -15.1572 -72.8264 -103.675 -98.0103  14.2680
#>   5:     8683285.2:  3.53435  4.28799 0.0769331  4.16922  17.1143 -15.0924 -72.8272 -103.675 -98.0102  14.2666
#>   6:     8683278.8:  3.12283  4.26497 0.00577310  5.39128  18.0247 -14.1800 -72.8275 -103.666 -98.0093  14.2497
#>   7:     8683274.9:  2.96704  4.27737 -0.00365739  5.91342  18.8649 -13.3340 -72.8282 -103.663 -98.0084  14.2428
#>   8:     8683274.6:  2.97813  4.32281 -0.00140261  5.91439  18.8662 -13.3326 -72.8276 -103.663 -98.0084  14.2428
#>   9:     8683273.9:  2.98728  4.29981 -0.00280936  5.93205  18.8913 -13.3073 -72.8280 -103.663 -98.0084  14.2426
#>  10:     8683273.4:  3.06956  4.31618 0.0110332  5.94824  18.9165 -13.2815 -72.8278 -103.662 -98.0084  14.2425
#>  11:     8683272.3:  3.09070  4.29678 0.00116513  6.03041  19.0332 -13.1637 -72.8282 -103.662 -98.0082  14.2414
#>  12:     8683262.2:  3.56422  4.31927 -0.255118  8.13110  22.0304 -10.1362 -72.8315 -103.647 -98.0051  14.2129
#>  13:     8683252.5:  3.83048  4.31909 0.121384  10.1544  25.0291 -7.04540 -72.8405 -103.636 -98.0005  14.1833
#>  14:     8683247.3:  3.94849  4.31948 0.0385093  12.0869  28.0477 -3.88554 -72.8575 -103.624 -97.9974  14.1533
#>  15:     8683243.8:  4.25927  4.31546 -0.00777101  14.0100  31.0789 -0.744458 -72.8712 -103.614 -97.9935  14.1209
#>  16:     8683242.1:  4.44667  4.31341 0.0287162  15.9638  34.0813  2.41517 -72.8898 -103.602 -97.9899  14.0906
#>  17:     8683240.2:  4.54793  4.31272 0.0538241  17.9220  37.0588  5.59955 -72.9137 -103.590 -97.9867  14.0613
#>  18:     8683239.4:  4.69398  4.31462 0.0308070  19.8668  40.0457  8.78163 -72.9339 -103.578 -97.9834  14.0313
#>  19:     8683238.8:  4.80812  4.31597 0.0165021  21.8157  43.0189  11.9754 -72.9552 -103.566 -97.9803  14.0018
#>  20:     8683238.2:  4.92565  4.31644 0.0159158  24.2078  46.6473  15.8971 -72.9808 -103.552 -97.9765  13.9660
#>  21:            8683238.:  5.04819  4.31619 0.0243189  26.6012  50.2759  19.8175 -73.0037 -103.537 -97.9727  13.9301
#>  22:     8683237.7:  5.13762  4.31634 0.0249592  28.9952  53.8862  23.7553 -73.0256 -103.522 -97.9690  13.8947
#>  23:     8683237.6:  5.28686  4.31676 0.0250268  32.4857  59.1615  29.4908 -73.0545 -103.500 -97.9636  13.8427
#>  24:     8683237.4:  5.28509  4.31688 0.0245291  32.9053  59.7807  30.1902 -73.0542 -103.498 -97.9630  13.8368
#>  25:     8683237.4:  5.34161  4.31702 0.0244450  34.5804  62.3007  32.9503 -73.0637 -103.487 -97.9605  13.8121
#>  26:     8683237.3:  5.49892  4.31724 0.0247337  39.2837  69.3748  40.7012 -73.0866 -103.458 -97.9534  13.7427
#>  27:     8683237.2:  5.46963  4.31706 0.0249448  38.7511  68.5637  39.8303 -73.0771 -103.461 -97.9543  13.7507
#>  28:     8683237.2:  5.52673  4.31709 0.0249489  40.7556  71.5698  43.1397 -73.0791 -103.448 -97.9513  13.7213
#>  29:     8683237.2:  5.59854  4.31711 0.0248718  43.3155  75.4079  47.3670 -73.0795 -103.432 -97.9475  13.6838
#>  30:     8683237.1:  5.66367  4.31706 0.0247171  45.8758  79.2403  51.5993 -73.0722 -103.416 -97.9437  13.6463
#>  31:     8683237.1:  5.71251  4.31685 0.0245382  48.1520  82.6390  55.3683 -73.0536 -103.402 -97.9404  13.6131
#>  32:     8683237.1:  5.76560  4.31661 0.0246346  50.4280  86.0413  59.1339 -73.0383 -103.388 -97.9371  13.5799
#>  33:     8683237.0:  5.81377  4.31623 0.0248040  52.7043  89.4392  62.9035 -73.0137 -103.373 -97.9338  13.5467
#>  34:     8683237.0:  5.86625  4.31560 0.0249265  55.4677  93.5584  67.4840 -72.9699 -103.356 -97.9298  13.5066
#>  35:     8683237.0:  5.92249  4.31511 0.0248372  58.2309  97.6810  72.0617 -72.9321 -103.338 -97.9258  13.4663
#>  36:     8683237.0:  5.95514  4.31459 0.0246937  60.0999  100.464  75.1618 -72.8914 -103.326 -97.9231  13.4392
#>  37:            8683237.:  6.00440  4.31363 0.0247265  62.9730  104.742  79.9281 -72.8225 -103.308 -97.9190  13.3975
#>  38:            8683237.:  6.06829  4.31228 0.0247530  66.7565  110.374  86.2054 -72.7248 -103.284 -97.9136  13.3426
#>  39:            8683237.:  6.12327  4.31046 0.0247952  70.5403  115.998  92.4893 -72.5921 -103.260 -97.9082  13.2879
#>  40:            8683237.:  6.18304  4.30887 0.0247954  74.3239  121.627  98.7697 -72.4769 -103.236 -97.9028  13.2330
#>  41:            8683237.:  6.18374  4.30864 0.0247453  74.4994  121.886  99.0624 -72.4599 -103.235 -97.9026  13.2305
#>  42:            8683237.:  6.18508  4.30847 0.0247423  74.6750  122.147  99.3540 -72.4527 -103.234 -97.9023  13.2280
#>  43:            8683237.:  6.18998  4.30834 0.0247378  75.0261  122.669  99.9371 -72.4392 -103.232 -97.9018  13.2229
#> Error in `lme.formula()`:
#> ! nlminb problem, convergence error code = 1
#>   message = singular convergence (7)

Created on 2025-09-28 with reprex v2.1.1.9000

Session info
sessioninfo::session_info()
#> Warning in system2("quarto", "-V", stdout = TRUE, env = paste0("TMPDIR=", :
#> running command '"quarto"
#> TMPDIR=C:/Users/andre/AppData/Local/Temp/RtmpuePdZr/file1e2870ae5899 -V' had
#> status 1
#> ─ Session info ───────────────────────────────────────────────────────────────
#>  setting  value
#>  version  R version 4.4.2 (2024-10-31 ucrt)
#>  os       Windows 11 x64 (build 26100)
#>  system   x86_64, mingw32
#>  ui       RTerm
#>  language (EN)
#>  collate  Italian_Italy.utf8
#>  ctype    Italian_Italy.utf8
#>  tz       Europe/Rome
#>  date     2025-09-28
#>  pandoc   3.2 @ C:/Program Files/RStudio/resources/app/bin/quarto/bin/tools/ (via rmarkdown)
#>  quarto   NA @ C:\\Users\\andre\\AppData\\Local\\Programs\\Quarto\\bin\\quarto.exe
#> 
#> ─ Packages ───────────────────────────────────────────────────────────────────
#>  package          * version    date (UTC) lib source
#>  abind              1.4-8      2024-09-12 [1] CRAN (R 4.4.2)
#>  cli                3.6.5      2025-04-23 [1] CRAN (R 4.4.2)
#>  deldir             2.0-4      2024-02-28 [1] CRAN (R 4.4.2)
#>  digest             0.6.37     2024-08-19 [1] CRAN (R 4.4.2)
#>  dplyr            * 1.1.4      2023-11-17 [1] CRAN (R 4.4.2)
#>  evaluate           1.0.3      2025-01-10 [1] CRAN (R 4.4.2)
#>  fastmap            1.2.0      2024-05-15 [1] CRAN (R 4.4.2)
#>  fs                 1.6.5      2024-10-30 [1] CRAN (R 4.4.2)
#>  generics           0.1.3      2022-07-05 [1] CRAN (R 4.4.2)
#>  glue               1.8.0      2024-09-30 [1] CRAN (R 4.4.2)
#>  goftest            1.2-3      2021-10-07 [1] CRAN (R 4.4.2)
#>  htmltools          0.5.8.1    2024-04-04 [1] CRAN (R 4.4.2)
#>  knitr              1.50.4     2025-07-11 [1] https://yihui.r-universe.dev (R 4.4.2)
#>  lattice            0.22-6     2024-03-20 [2] CRAN (R 4.4.2)
#>  lifecycle          1.0.4      2023-11-07 [1] CRAN (R 4.4.2)
#>  magrittr           2.0.3      2022-03-30 [1] CRAN (R 4.4.2)
#>  Matrix             1.7-1      2024-10-18 [2] CRAN (R 4.4.2)
#>  mgcv               1.9-3      2025-04-04 [1] CRAN (R 4.4.2)
#>  nlme             * 3.1-166    2024-08-14 [2] CRAN (R 4.4.2)
#>  pillar             1.10.2     2025-04-05 [1] CRAN (R 4.4.3)
#>  pkgconfig          2.0.3      2019-09-22 [1] CRAN (R 4.4.2)
#>  polyclip           1.10-7     2024-07-23 [1] CRAN (R 4.4.2)
#>  R6                 2.6.1      2025-02-15 [1] CRAN (R 4.4.2)
#>  reprex             2.1.1.9000 2025-02-25 [1] Github (tidyverse/reprex@07cd5d7)
#>  rlang              1.1.6      2025-04-11 [1] CRAN (R 4.4.3)
#>  rmarkdown          2.29       2024-11-04 [1] CRAN (R 4.4.2)
#>  rpart            * 4.1.23     2023-12-05 [2] CRAN (R 4.4.2)
#>  rstudioapi         0.17.1     2024-10-22 [1] CRAN (R 4.4.2)
#>  sessioninfo        1.2.3      2025-02-05 [1] CRAN (R 4.4.2)
#>  spatstat         * 3.4-0.001  2025-08-24 [1] https://spatstat.r-universe.dev (R 4.4.2)
#>  spatstat.data    * 3.1-8      2025-08-24 [1] https://spatstat.r-universe.dev (R 4.4.2)
#>  spatstat.explore * 3.5-2      2025-08-24 [1] https://spatstat.r-universe.dev (R 4.4.2)
#>  spatstat.geom    * 3.5-0.008  2025-08-19 [1] https://spatstat.r-universe.dev (R 4.4.2)
#>  spatstat.linnet  * 3.3-1      2025-08-24 [1] https://spatstat.r-universe.dev (R 4.4.2)
#>  spatstat.model   * 3.4-0.004  2025-09-01 [1] Github (spatstat/spatstat.model@873a75e)
#>  spatstat.random  * 3.4-1      2025-05-20 [1] CRAN (R 4.4.2)
#>  spatstat.sparse    3.1-0      2024-06-21 [1] CRAN (R 4.4.2)
#>  spatstat.univar  * 3.1-4      2025-07-13 [1] https://spatstat.r-universe.dev (R 4.4.2)
#>  spatstat.utils     3.1-5.001  2025-07-25 [1] https://spatstat.r-universe.dev (R 4.4.3)
#>  tensor             1.5        2012-05-05 [1] CRAN (R 4.4.2)
#>  tibble             3.2.1      2023-03-20 [1] CRAN (R 4.4.2)
#>  tidyselect         1.2.1      2024-03-11 [1] CRAN (R 4.4.2)
#>  vctrs              0.6.5      2023-12-01 [1] CRAN (R 4.4.2)
#>  withr              3.0.2      2024-10-28 [1] CRAN (R 4.4.2)
#>  xfun               0.52       2025-04-02 [1] CRAN (R 4.4.2)
#>  yaml               2.3.10     2024-07-26 [1] CRAN (R 4.4.2)
#> 
#>  [1] C:/Users/andre/AppData/Local/R/win-library/4.4
#>  [2] C:/Program Files/R/R-4.4.2/library
#>  * ── Packages attached to the search path.
#> 
#> ──────────────────────────────────────────────────────────────────────────────
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment