【问题标题】:Simulate Values that follow a Distribution Curve in R在 R 中模拟遵循分布曲线的值
【发布时间】:2017-11-09 04:49:15
【问题描述】:

我想模拟遵循不同分布的需求值(例如:线性开始>指数>invlog>等)我对概率分布的概念有点困惑,但我认为我可以使用 rnorm、rexp、rlogis、等等。有什么办法可以做到吗?

我认为可能是这样,但在 R 中:Generating smoothed randoms that follow a distribution

【问题讨论】:

  • 您将如何获得分配?从样本数据?一个函数?
  • 看起来您需要深入研究混合分布。见:stackoverflow.com/questions/23480529/…
  • 我正在创建一个基于玩家表现进行分配的游戏。因此,如果它们表现良好,将触发需求遵循指数曲线,如果它们表现不佳,将触发需求遵循反对数曲线,等等
  • 能否请您举例说明您可能使用的分布曲线类型?
  • 场景:我给玩家的需求信号以线性模式稳步增长。在匹配我的需求信号 5 次后,我给玩家的需求呈指数增长。在匹配我的需求 5 次之后,我给玩家的需求随着负对数逐渐减小。根据其他变量,我将相应地调整均值和标准差。我不会混合分布,因为它们是在不同的时刻触发的。谢谢!

标签: r random distribution simulate


【解决方案1】:

如果您知道要使用的分布及其参数,则使用rnorm()rexp() 等从 R 中常用的概率分布中模拟随机值是相当简单的。例如,rnorm(10, mean=5, sd=2) 从均值为 5 和 sd 2 的正态分布中返回 10 次。

rnorm(10, mean = 5, sd = 2)
##  [1] 5.373151 7.970897 6.933788 5.455081 6.346129 5.767204 3.847219 7.477896 5.860069 6.154341

## or here's a histogram of 10000 draws...
hist(rnorm(10000, 5, 2))

您可能对指数分布感兴趣 - 请查看 hist(rexp(10000, rate=1)) 了解相关信息。

最简单的解决方案是调查您感兴趣的概率分布及其在 R 中的实现。

仍然可以从一些自定义函数返回随机抽取,并且有一些技术可以做到这一点 - 但它可能会变得混乱。这是从 x^3 - 3x^2 + 4 介于 0 和 3 之间的区域定义的概率中随机绘制的一个非常粗略的实现。

## first a vector of random uniform draws from the region
unifdraws <- runif(10000, 0, 3)

## assign a probability of "keeping" draws based on scaled probability
pkeep <- (unifdraws^3 - 3*unifdraws^2 + 4)/4

## randomly keep observations based on this probability
keep <- rbinom(10000, size=1, p=pkeep)
draws <- unifdraws[keep==1]

## and there it is!
hist(draws)

## of course, it's less than 10000 now, because we rejected some
length(draws)
## [1] 4364

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-30
    • 2019-06-04
    • 1970-01-01
    • 2019-03-31
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多