Hi R-users, I hope this is not redundant questions. I tried to search similar threads relevant to my questions but could not find. Any input would be greatly appreciated. I want to generate grid with binary values (1 or 0) in n1 by n2 (e.g., 100 by 100 or 200 by 500, etc.) given proportions of 1 and 0 values (e.g., 1, 5, or 10% of 1 from 100 by 100 grid). For clustered distributed grid, I hope to be able to define cluster size if possible. Is there a simple way to generate random/clustered grids with 1 and 0 values with a pre-defined proportion? So far, the function "EVariogram" in the "CompRandFld" package generates clustered grid with 1 and 0. Especially, the example #4 in the "EVariogram" function description is a kind of what I want. Below is the slightly modified code from the original one. However, the code below can't control proportion of 1 and 0 values and complicated or I have no idea how to do it. I believe there may be easies ways to generate random/clustered grids with proportional 1 and 0 values. Thank you very much in advance, Steve library(CompRandFld) library(RandomFields) x0 <- seq(1, 50, length.out=50) y0 <- seq(1, 60, length.out=60) d <- expand.grid(x=x0, y=y0) dim(d) head(d) x <- d$x y <- d$y # Set the model's parameters: corrmodel <- 'exponential' mean <- 0 sill <- 1 nugget <- 0 scale <- 3 set.seed(1221) # Simulation of the Binary-Gaussian random field: data <- RFsim(x, y, corrmodel="exponential", model="BinaryGauss", param=list(mean=mean,sill=sill,scale=scale,nugget=nugget), threshold=0)$data # Empirical lorelogram estimation: fit <- EVariogram(data, x, y, numbins=20, maxdist=7, type="lorelogram") # Results: plot(fit$centers, fit$variograms, xlab='Distance', ylab="Lorelogram", ylim=c(min(fit$variograms), max(fit$variograms)), xlim=c(0, max(fit$centers)), pch=20, main="Spatial Lorelogram") # Plotting plot(d, type='n') text(d, label=data) [[alternative HTML version deleted]]
You can use gstat, as in: https://www.researchgate.net/publication/43279659_Behavior_of_Vegetation_Sampling_Methods_in_the_Presence_of_Spatial_Autocorrelation If you need more detail, I can dig up the code. Sarah On Wed, Sep 9, 2015 at 8:49 AM, SH <emptican at gmail.com> wrote:> Hi R-users, > > I hope this is not redundant questions. I tried to search similar threads > relevant to my questions but could not find. Any input would be greatly > appreciated. > > I want to generate grid with binary values (1 or 0) in n1 by n2 (e.g., 100 > by 100 or 200 by 500, etc.) given proportions of 1 and 0 values (e.g., 1, > 5, or 10% of 1 from 100 by 100 grid). For clustered distributed grid, I > hope to be able to define cluster size if possible. Is there a simple way > to generate random/clustered grids with 1 and 0 values with a > pre-defined proportion? > > So far, the function "EVariogram" in the "CompRandFld" package generates > clustered grid with 1 and 0. Especially, the example #4 in the > "EVariogram" function description is a kind of what I want. Below is the > slightly modified code from the original one. However, the code below > can't control proportion of 1 and 0 values and complicated or I have no > idea how to do it. I believe there may be easies ways to > generate random/clustered grids with proportional 1 and 0 values. > > Thank you very much in advance, > > Steve > > > library(CompRandFld) > library(RandomFields) > > x0 <- seq(1, 50, length.out=50) > y0 <- seq(1, 60, length.out=60) > d <- expand.grid(x=x0, y=y0) > dim(d) > head(d) > x <- d$x > y <- d$y > # Set the model's parameters: > corrmodel <- 'exponential' > mean <- 0 > sill <- 1 > nugget <- 0 > scale <- 3 > set.seed(1221) > # Simulation of the Binary-Gaussian random field: > data <- RFsim(x, y, corrmodel="exponential", model="BinaryGauss", > param=list(mean=mean,sill=sill,scale=scale,nugget=nugget), > threshold=0)$data > # Empirical lorelogram estimation: > fit <- EVariogram(data, x, y, numbins=20, maxdist=7, type="lorelogram") > # Results: > plot(fit$centers, fit$variograms, xlab='Distance', ylab="Lorelogram", > ylim=c(min(fit$variograms), max(fit$variograms)), > xlim=c(0, max(fit$centers)), pch=20, main="Spatial Lorelogram") > # Plotting > plot(d, type='n') > text(d, label=data) >-- Sarah Goslee http://www.functionaldiversity.org
Hi Sarah, Thanks for your prompt responding. The methodology in the publication is very similar to what I plan to do. Yes, could you be willing to share the code if you don't mind? Thanks a lot again, Steve On Wed, Sep 9, 2015 at 9:11 AM, Sarah Goslee <sarah.goslee at gmail.com> wrote:> You can use gstat, as in: > > https://www.researchgate.net/publication/43279659_Behavior_of_Vegetation_Sampling_Methods_in_the_Presence_of_Spatial_Autocorrelation > > If you need more detail, I can dig up the code. > > Sarah > > On Wed, Sep 9, 2015 at 8:49 AM, SH <emptican at gmail.com> wrote: > > Hi R-users, > > > > I hope this is not redundant questions. I tried to search similar > threads > > relevant to my questions but could not find. Any input would be greatly > > appreciated. > > > > I want to generate grid with binary values (1 or 0) in n1 by n2 (e.g., > 100 > > by 100 or 200 by 500, etc.) given proportions of 1 and 0 values (e.g., 1, > > 5, or 10% of 1 from 100 by 100 grid). For clustered distributed grid, I > > hope to be able to define cluster size if possible. Is there a simple > way > > to generate random/clustered grids with 1 and 0 values with a > > pre-defined proportion? > > > > So far, the function "EVariogram" in the "CompRandFld" package generates > > clustered grid with 1 and 0. Especially, the example #4 in the > > "EVariogram" function description is a kind of what I want. Below is the > > slightly modified code from the original one. However, the code below > > can't control proportion of 1 and 0 values and complicated or I have no > > idea how to do it. I believe there may be easies ways to > > generate random/clustered grids with proportional 1 and 0 values. > > > > Thank you very much in advance, > > > > Steve > > > > > > library(CompRandFld) > > library(RandomFields) > > > > x0 <- seq(1, 50, length.out=50) > > y0 <- seq(1, 60, length.out=60) > > d <- expand.grid(x=x0, y=y0) > > dim(d) > > head(d) > > x <- d$x > > y <- d$y > > # Set the model's parameters: > > corrmodel <- 'exponential' > > mean <- 0 > > sill <- 1 > > nugget <- 0 > > scale <- 3 > > set.seed(1221) > > # Simulation of the Binary-Gaussian random field: > > data <- RFsim(x, y, corrmodel="exponential", model="BinaryGauss", > > param=list(mean=mean,sill=sill,scale=scale,nugget=nugget), > > threshold=0)$data > > # Empirical lorelogram estimation: > > fit <- EVariogram(data, x, y, numbins=20, maxdist=7, type="lorelogram") > > # Results: > > plot(fit$centers, fit$variograms, xlab='Distance', ylab="Lorelogram", > > ylim=c(min(fit$variograms), max(fit$variograms)), > > xlim=c(0, max(fit$centers)), pch=20, main="Spatial Lorelogram") > > # Plotting > > plot(d, type='n') > > text(d, label=data) > > > > > -- > Sarah Goslee > http://www.functionaldiversity.org >[[alternative HTML version deleted]]