2016-08-20 55 views
1

下一个分配样本生成的目标数量我想rnbinom如下如何从排斥标准

x<- rnbinom(500, mu = 4, size = .1) 
xtrunc <- x[x>0] 

然后我就得到125个观察。

但是,我想在相同条件(mu = 4, size =.1)下进行500次观测,排除0(零)。

回答

1

这做工作:

N <- 500 ## target number of samples 

## set seed for reproducibility 
set.seed(0) 
## first try 
x <- rnbinom(N, mu = 4, size = .1) 
p_accept <- mean(success <- x > 0) ## estimated probability of accepting samples 
xtrunc <- x[success] 
## estimated further sampling times 
n_further <- (N - length(xtrunc))/p_accept 
## further sampling 
alpha <- 1.5 ## inflation factor 
x_further <- rnbinom(round(alpha * n_further), mu = 4, size = .1) 
## filter and combine 
xtrunc <- c(xtrunc, (x_further[x_further > 0])[seq_len(N - length(xtrunc))]) 

## checking 
length(xtrunc) 
# [1] 500 

summary(xtrunc) 
# Min. 1st Qu. Median Mean 3rd Qu. Max. 
# 1.00 2.00 5.00 12.99 16.00 131.00 

在上面,采样在两个阶段。初始阶段的结果被用来估计接受率的概率来指导第二阶段抽样。

但是,由于底层分布是明确已知的,所以接受率的理论概率是已知的。因此,在这种情况下不需要执行两阶段方法。尝试:

p <- 1 - pnbinom(0, mu = 4, size = .1) ## theoretical probability 
alpha <- 1.5 
n_try <- round(alpha * N/p) 
set.seed(0) 
x <- rnbinom(n_try, mu = 4, size = .1) 
xtrunc <- (x[x > 0])[1:N] 

## checking 
length(xtrunc) 
# [1] 500 

summary(xtrunc) 
# Min. 1st Qu. Median Mean 3rd Qu. Max. 
# 1.00 2.00 5.00 12.99 16.00 131.00 

背后的想法是几何分布的理论。 My answer here是密切相关的。请阅读“更高效的矢量化方法”一节以获取详细说明。

+0

你的编码非常有用。然而,我正在解决做同样的分布与均值,甚至变异x < - rnbinom(500,mu = 4,size = .1); x大于1 – lee