模拟R中分布曲线后面的值

时间:2017-06-07 17:35:40

标签: r random distribution simulate

enter image description here

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

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

1 个答案:

答案 0 :(得分:1)

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

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中的实现。

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

## 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