File: spattemp.LOO.R

package info (click to toggle)
r-cran-sparr 2.3-16-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 884 kB
  • sloc: makefile: 2
file content (45 lines) | stat: -rw-r--r-- 1,320 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
spattemp.LOO <- function(pp,tt,h,lambda,tlim,xyin,xys,sedge,tedge,parallelise){
  W <- Window(pp)
  n <- npoints(pp)
  ppmat <- cbind(pp$x,pp$y)
  qs <- qt <- 1
  
  if(is.na(parallelise)){
    loo <- rep(NA,n)
    for(i in 1:n){
      ppt.i <- pp[i]
      ppt.mi <- pp[-i]
      t.i <- tt[i]
      t.mi <- tt[-i]
      
      if(sedge){
        pxy <- kernel2d(xyin[,1]-ppt.i$x, xyin[,2]-ppt.i$y, h)
        qs <- dintegral(pxy,xys[1],xys[2])
      }
      if(tedge) qt <- pnorm(tlim[2],t.i,lambda) - pnorm(tlim[1],t.i,lambda)
      
      ut <- (t.i-t.mi)/lambda
      ivals <- kernel2d(ppt.i$x-ppt.mi$x,ppt.i$y-ppt.mi$y,h)*lambda^(-1)*exp(-0.5*ut^2)/sqrt(2*pi)
      loo[i] <- mean(ivals)/(qs*qt)
    }
  } else {
    registerDoParallel(cores=parallelise)
    loo <- foreach(i=1:n,.packages="spatstat",.combine=c) %dopar% {
      ppt.i <- pp[i]
      ppt.mi <- pp[-i]
      t.i <- tt[i]
      t.mi <- tt[-i]
      
      if(sedge){
        pxy <- kernel2d(xyin[,1]-ppt.i$x, xyin[,2]-ppt.i$y, h)
        qs <- dintegral(pxy,xys[1],xys[2])
      }
      if(tedge) qt <- pnorm(tlim[2],t.i,lambda) - pnorm(tlim[1],t.i,lambda)
      
      ut <- (t.i-t.mi)/lambda
      ivals <- kernel2d(ppt.i$x-ppt.mi$x,ppt.i$y-ppt.mi$y,h)*lambda^(-1)*exp(-0.5*ut^2)/sqrt(2*pi)
      return(mean(ivals)/(qs*qt))
    }
  }
  return(loo)
}