[英]R: Sample data from model, package `ks`
很抱歉,如果在某个地方有一个明显的答案,我还没有找到答案,并且我对R不太有经验。
我正在使用内核平滑软件包ks
使用kde
生成内核密度估计模型。 然后,我想对生成的模型进行采样。
library(ks)
data <- read.table("data_file.txt", header=FALSE)
model <- kde(data)
然后我不确定如何继续。 我已经阅读了帮助文档,但是没有找到必要的功能。
单变量情况
请参阅帮助文档: https : //cran.r-project.org/web/packages/ks/ks.pdf
您可以看到dkde
, pkde
, qkde
, rkde
与任何R发行版一样。
rkde(100, model)
它将根据估计的分布生成100个随机数。
多元案例
我惊讶地发现ks包鞭子不直接生产样品方法。 无论如何,原则上很容易。 您只需要首先随机选择一个采样点,然后在其上应用估计的内核噪声即可。 对于带有多变量普通内核的缓慢但基本的代码示例:
library(mvtnorm)
rmkde <- function(size,flat){
n <- nrow(flat$x)
s <- sample(1:n,size,replace=TRUE)
t(apply(flat$x[s,],1,function(mean)rmvnorm(1,mean=mean,sigma=flat$H)))
}
rmkde(100, model)
由于rmvnorm
计算相同的矩阵分解,所以速度很慢,因此可以从rmvnorm
源代码中选择分解来加速分解。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.