<div dir="ltr">Dear list,<div><br></div><div>I need a dataset (preferably a raster) that has a negative spatial autocorrelation. I just used an arbitrary procedure to simulate a simple one, but I think it is not realistic at all. The procedure I used:</div><div>I<span style="line-height:1.5"> generated two separate rasters using unconditional simulation given two different variogram models with different mean, and variance. I then combined the values from different parts of these two rasters into a single new raster in a way that each cell is surrounded by </span><span style="line-height:1.5">dissimilar values. I am wondering if anyone is aware of a more formal procedure or simply can introduce a dataset.</span></div><div><span style="line-height:1.5"><br></span></div><div>Following is the code I used. Thanks for your help.</div><div>Best regards,</div><div>Babak</div><div>(web: <a href="http://r-gis.net">r-gis.net</a>)</div><div><span style="line-height:1.5"><br></span></div><div><div><span style="line-height:1.5"># a function to generate an unconditional simulation as a raster using grf function in package geoR:</span><br></div><div><br></div><div>library(geoR)</div><div>genrf <- function(side,model='exponential',sill=10,phi,nugget=0,mean=50,nsim=1,method='cholesky') {</div><div>  sim0<-grf(side*side,grid='reg',xlims=c(0.5,side-0.5),ylims=c(0.5,side-0.5),cov.pars=c(sill,phi),cov.model=model,mean=mean,nugget=nugget,nsim=nsim,method=method)</div><div>  if (nsim == 1) {</div><div>    r<-as.data.frame(cbind(sim0$coords,sim0$data))</div><div>    coordinates(r)<-~x+y</div><div>    gridded(r) <- TRUE</div><div>    r <- as(r, "SpatialGridDataFrame")</div><div>    names(r@data)<-c('sim1')</div><div>    r <- raster(r)</div><div>  } else {</div><div>    r <- as.data.frame(cbind(sim0$coords,sim0$data[,1]))</div><div>    coordinates(r)<-~x+y</div><div>    gridded(r) <- TRUE</div><div>    r <- as(r, "SpatialGridDataFrame")</div><div>    names(r@data)<-c('sim1')</div><div>    r <- stack(raster(r))</div><div>    for (i in 2:nsim) {</div><div>      rr <- as.data.frame(cbind(sim0$coords,sim0$data[,i]))</div><div>      coordinates(rr)<-~x+y</div><div>      gridded(rr) <- TRUE</div><div>      rr <- as(rr, "SpatialGridDataFrame")</div><div>      names(rr@data)<-c(paste('sim',i,sep=''))</div><div>      rr <- raster(rr)</div><div>      r <- addLayer(r,rr)</div><div>    }</div><div>    </div><div>  }</div><div>  r</div><div>}</div><div>#------------</div></div><div>###########</div><div># --- the procedure to generate the surface with negative spatial autocorrelation:</div><div><div><br></div><div>f1 <- genrf(20,phi=20, model='exponential',nugget=0,nsim=1,sill=20,mean = 100)</div><div>f2 <- genrf(20,phi=20, model='spherical',nugget=0,nsim=1,sill=30,mean = 200)</div><div>f <- raster(f1) # an empty raster to have the output</div><div># loops to take values from different parts of the two simulated rasters put together just to make sure each cell is serronded by dissimilar values</div><div>for (i in seq(19,1,-2)) f[i,] <- f1[,i]</div><div>for (i in seq(2,20,2)) f[i-1,] <- f2[i,]</div><div>for (i in seq(19,1,-2)) f[,i] <- f2[i+1,]</div><div>for (i in seq(2,20,2)) f[,i-1] <- f1[,i]</div><div><br></div><div>plot(f)</div><div style="line-height:1.5"><br></div></div></div>