Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
373 views
in Technique[技术] by (71.8m points)

spatial - Generate random points with kernel density estimate values in R


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Your sample code isn't reproducible, so I'll create some fake data instead, and use it in my code:

x <- rexp(100)
y <- rnorm(100)
library(MASS)
kde <- kde2d(x, y, n = 100)

size <- 100  # Sample size wanted

# Sample cells from the density matrix
pts <- sample(length(kde$z), size, prob = as.numeric(kde$z))

# Generate the samples by choosing corresponding elements from
# the x and y vectors, and adding some fuzz
xfuzz <- diff(kde$x)[1]/2
sx <- kde$x[row(kde$z)[pts]] + runif(size, -xfuzz, xfuzz)
yfuzz <- diff(kde$y)[1]/2
sy <- kde$y[col(kde$z)[pts]] + runif(size, -yfuzz, yfuzz)

# Plot the original sample and the generated one
par(mfrow=c(1,2))
plot(x, y, main = "Real data")
plot(sx, sy, main = "Fake data")

Created on 2021-01-25 by the reprex package (v0.3.0)


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...