r - 抛硬币概率(已解决)
问题描述
我想知道我应该在这里做什么(请参阅图片)。我已经定义了两个向量,分别是k=c(0,1)
和v=c(runif(2,0.3,0.7))
wherealpha=v[1]
和beta=v[2]
。之后,我使用了 if 语句,if(Xn==k[1]){...}
但这就是我坚持的地方。根据这个问题,我必须同时Xn+1=k[1]
用概率(alpha
)分配Xn+1=k[2]
概率(1-alpha)
,if(Xn==k[2]){...}
然后Xn+1=k[1]
有概率(beta
)并且Xn+1=k[2]
将有概率(1-beta)
。
所以我的问题是如何将值分配给 的Xn+1
和0
的1
概率[(alpha), (1-alpha)]
和[(beta),(1-beta)]
。分配后,您如何使用循环模拟随机变量的 500 个观察值?这X1
类似于抛硬币实验,但正面和反面的概率由 [alpha,beta] 决定= runif(2,0.3,0.7)`。X500
for
解决方案
这是一个基本的 R 解决方案。
toss <- function(n = 500L){
a <- runif(2, min = 0.3, max = 0.7)
alpha <- a[1]
beta <- a[2]
x <- integer(n)
x[1] <- rbinom(1, size = 1, prob = alpha)
for(i in seq_len(n - 1)){
if(x[i] == 0)
x[i + 1L] <- rbinom(1, size = 1, prob = 1 - alpha)
else
x[i + 1L] <- rbinom(1, size = 1, prob = 1 - beta)
}
list(x = x, alpha = alpha, beta = beta)
}
set.seed(2021)
X <- toss()
table(X$x)
#
# 0 1
#277 223
mean(X$x)
#[1] 0.446
X$alpha
#[1] 0.4805069
X$beta
#[1] 0.6135119
1000 次运行的直方图。
要重复运行该函数,请使用replicate
.
Y <- replicate(1000, mean(toss()$x))
hist(Y, xlab = "Proportion of successes")
推荐阅读
- delphi - 在为选定文本设置背景颜色后将字体分配给 TRichEdit
- html - Angularjs 控制器和表达式行为
- vb6 - 带有 VB6 应用程序的 Sxs(manifest)
- javascript - 如何使用 Sequelize Node Express Mysql 修复插入数据库?
- tensorflow - 使用 tf.estimator.EstimatorSpec 时如何在每个 epoch 后检查评估 auc?
- python - 为什么必须在 PyCharm 中指定 print 以例如 print(data.head)
- typescript - 具有属性键集的打字稿对象
- botframework - botframework 中的某些链接无法在 MS Teams 中打开
- uwp - 如何从 UWP C# 中的 SoftwareBitmap 获取像素数据?
- r - 如何在不同的几何图形中具有相同的美学(颜色)不同的比例?