【问题标题】:Coin flip probability ( solved)抛硬币概率(已解决)
【发布时间】:2021-10-27 19:10:23
【问题描述】:

我想知道我应该在这里做什么(请参阅图片)。我已经定义了两个向量,它们是k=c(0,1)v=c(runif(2,0.3,0.7)),其中alpha=v[1]beta=v[2]。 之后,我使用了一个 if 语句,if(Xn==k[1]){...} 但是这就是我坚持的地方。根据问题,我必须同时分配Xn+1=k[1] 概率(alphaXn+1=k[2] 概率(1-alpha)if(Xn==k[2]){...} 然后Xn+1=k[1] 概率(beta)和Xn+1=k[2]会有概率(1-beta)

所以我的问题是如何将值分配给01 的相应Xn+1 值,概率为[(alpha), (1-alpha)][(beta),(1-beta)]。分配它之后,您如何使用for 循环对随机变量从X1X500 的500 个观察值进行模拟这类似于抛硬币实验,不同之处在于正面和正面的概率尾部由 [alpha,beta] = runif(2,0.3,0.7)` 决定。

【问题讨论】:

  • 我清理了您的格式,但不清楚您尝试了什么。您首先解释您定义了kv,但问题没有提到变量kv。你能解释一下吗?您的内联代码(也许是您的实际代码)在您是否使用括号进行索引方面似乎非常草率。 XnXn+1X[n]X[n + 1]X[n] + 1 的含义截然不同。请始终为您尝试执行的操作使用有效的代码语法。
  • 如果您将代码放在单个可运行代码块中,那么到目前为止您的尝试会更加清晰。目前,如果我尝试运行您共享的代码,我可以定义kv,但是您的行if(Xn==k[1]){....} 将是一个错误,因为Xn 没有定义。因此,请通过分享所有定义、解释变量的含义并解释您的尝试来使您的示例具有可重复性。
  • 好的,谢谢。抱歉,我没有注意到您的评论。以后会做得更好

标签: r probability-distribution uniform-distribution


【解决方案1】:

这是一个基本的 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")

【讨论】:

  • 您好,感谢您的帮助。我不得不问一下 set.seed(2021) 的目的是什么。抱歉问,因为我不知道它是做什么的,为什么数字 2021。其次,我相信你想在最后输入 Return(x) ?
  • @user17233361 set.seed 旨在始终从同一点开始随机数生成器序列,以使结果可重现。至于return(x),不需要显式调用函数return(),R函数的最后一条指令就是它的返回值。
  • 顺便说一句,有没有其他替代方法我可以编写“for(i in seq_len(n - 1))”。其次,你能告诉我 seq_len 在这种情况下做了什么吗?非常感谢
  • @user17233361 seq_len(n - 1) 创建一个从 1 开始长度为 n-1 的整数序列。它比1:(n-1) 更安全,因为如果n&lt;-0,那么1:(n-1) == 1:-1 == 1, 0, -1。如果n&lt;-1,那么1:(n-1) == 1:0 == 1, 0。我建议你应该把它编码为seq_len,不要寻找替代品。
  • 首先,感谢您的帮助,但您能否告诉我如何检查用于查找 mean(x) 和 hist(x) 的 alpha 和 beta 的值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-02
  • 2019-09-05
  • 2017-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多