【发布时间】:2021-01-25 21:17:02
【问题描述】:
在处理 Rcpp 程序时,我使用了 sample() 函数,它给了我以下错误:“NAs not allowed in probability.”我将此问题追溯到我使用的概率向量中包含 NA 值的事实。我不知道怎么做。下面是一些捕获错误的 R 代码:
n.0=20
n.1=20
n.reps=1
beta0.vals=rep(seq(-.3,.1,,n.0),n.reps)
beta1.vals=rep(seq(-7,0,,n.1),n.reps)
beta.grd=as.matrix(expand.grid(beta0.vals,beta1.vals))
n.rnd=200
beta.rnd.grd=cbind(runif(n.rnd,min(beta0.vals),max(beta0.vals)),runif(n.rnd,min(beta1.vals),max(beta1.vals)))
beta.grd=rbind(beta.grd,beta.rnd.grd)
N = 22670
count = 0
for(i in 1:dim(beta.grd)[1]){ # iterate through 600 possible beta values in beta grid
beta.ind = 0 # indicator for current pair of beta values
for(j in 1:N){ # iterate through all possible Nsums
logit = beta.grd[i,1]/N*(j - .1*N)^2 + beta.grd[i,2];
phi01 = exp(logit)/(1 + exp(logit))
if(is.na(phi01)){
count = count + 1
}
}
}
cat("Total number of invalid probabilities: ", count)
这里,$\beta_0 \in (-0.3, 0.1), \beta_1 \in (-7, 0), N = 22670, N_\text{sum} \in (1, N)$。注意 $N$ 和 $N_\text{sum}$ 是整数,而 beta 值可能不是。
由于在数学上,$\phi_{01} \in (0,1)$,我假设 NA 的出现是因为 R 不喜欢极小价值观。我也收到了大量的 NA 值。比数字更重要。为什么我会在这段代码中得到 NA?
【问题讨论】:
-
一个可运行的示例会有所帮助。另外,第一行的除法和乘法是否按照您想要的顺序?
-
这确实不属于这里,但是在stackoverflow上,我们可以为您迁移它,但首先您需要制作一个可重现(即只需复制代码即可运行)的示例。
-
同时,为了不收集误导性的回复,最好将其关闭。一旦进行了编辑,社区就会注意到这一点并可以进行迁移。或者,直接在Stack Overflow 上发布您的问题。抄送@Kjetil
-
@kjetilbhalvorsen 我添加了可重现的代码(在 R 中,而不是在 Rcpp 中)
标签: r probability missing-data