【问题标题】:In R: how to simulate the season of an NBA team?In R:如何模拟一支NBA球队的赛季?
【发布时间】:2015-08-07 10:59:08
【问题描述】:

我基本上想创建一个长度为 82 的向量。这应该包含“W”或“L”,但它们的出现应该是随机确定的。我试过这个season<-rep(c("W","L"), times = 1, length.out = 82, each = 1),但我只得到这个:[1] "W" "L" "W" "L" "W" "L"... 微不足道的问题,但我是 R 的新手。谢谢!

【问题讨论】:

  • 谢谢!但为什么正好是 1492 年?

标签: r random vector simulation rep


【解决方案1】:

你可以这样做:

set.seed(1)
sample(c("W", "L"), 82, replace = TRUE)
# [1] "W" "W" "L" "L" "W" "L" ...

使用set.seed,您可以设置随机生成器的种子,因此无论何时运行这两行代码都会得到相同的结果。如果您第二次运行sample,您将得到不同的结果。

【讨论】:

  • 为什么选择一种特定的种子而不是另一种?我知道set.seed() 使随机选择具有可重复性,但是是什么驱动了特定种子的选择?
  • 嗯,任何数字都可以。这只是为了获得可重复的结果。所以无论你是 set.seed(1) 还是 set.seed(2876632816) 都取决于你
  • 正如@thothal 所说,没什么,真的。只是研究人员的选择。阅读?set.seed,了解有关随机数生成功能的一些重要细节(它建议使用一些种子可能更改某些底层算法的RNG种子,但它不太可能)。
  • 谢谢大家。感谢您的努力。
【解决方案2】:

另一种方法是控制生成数据的底层函数(例如,由于对数据做出的假设)。这是一个示例,假设您必须生成由 Binomial 淹没的 WL 的随机序列(正如指出的那样,这是唯一对这种模拟有意义的序列@Gregor)。

只需使用或rbinom 表示二项式,然后将输出作为因子将labels 转换为WL

这是一个使用 rbinom 函数的示例,该函数生成 0 和 1 的序列,就像掷硬币一样(都具有 50% 或概率),然后添加所需的标签(在本例中为 W 和 @ 987654329@)。

set.seed(123)
x <- rbinom(82, 1, 0.5)
x <- factor(x, labels = c("W", "L"))
x
 [1] W L W L L W L L L W L W L L W L W W W L L L L L L L L L W W L L L L
[35] W W L W W W W W W W W W W W W L W W L W L W W L L W L W W W L W L L
[69] L W L L L W W W W L W W W L
Levels: W L

【讨论】:

  • @Gregor 是的,我正在考虑这个问题。我对统计有点生疏。我认为仅有的两个有用函数(在这种情况下有两个值)是rbinomrunif。无论如何我会修正我的答案,但我认为我的代码是有效的,不是吗?
  • 是的,代码块很好。 runif 可以是 round()ed 以模仿 rbinom 的结果——结果不会有所不同,只是到达那里的方式稍长。不圆的runif 是统一的,不正常的。正态分布和均匀分布都是连续分布,对于OP感兴趣的离散模拟没有意义。
  • 我认为你应该只提到二项分布。
  • 谢谢@Gregor...我的统计学教授可能会为自己感到羞耻
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-20
  • 1970-01-01
  • 1970-01-01
  • 2017-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多