微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

概率,样本函数 - 区间

如何解决概率,样本函数 - 区间

我的示例函数有问题。我有一个错误,概率数不正确。我可以用另一种方式使用概率吗?我不知道这个函数在间隔上起作用。

OL_x = c(15.0:47.0,0.0:15.0,47:80,80:105)
x = sample(OL_x,1000,replace = TRUE,prob = c(0.60,0.22,0.13,0.05) )+ runif(1000,1)

解决方法

你需要有一个与每个值相关联的概率,我不知道一种将概率分配给一个区间的方法,所以“手动”这样做可能是这样的:

probs = c(rep(0.60,48-15),rep(0.22,16-0),rep(0.13,81-47),rep(0.05,106-80))

x = sample(OL_x,1000,replace = TRUE,prob = probs) + runif(1000,1)

这不是很有效,因为您需要手动计算每个间隔的大小,可能有更好的方法来做到这一点。

,

prob 参数可以是长度 1 或 x 的每个元素的一个值。 OL_x 是一个包含 109 个元素的向量,因为 : 整数序列运算符扩展了您的值。不太确定您要创建什么,但如果您从描述的概率所呈现的值中提取 1000 个值,请尝试:

# keep groups separate as a list
OL_x = list(15.0:47.0,0.0:15.0,47:80,80:105)
# number of values in each group
vapply(X = OL_x,FUN = length,FUN.VALUE = 0L)
# [1] 33 16 34 26
# create 109 probabilities
rep(c(0.60,0.22,0.13,0.05),times = vapply(X = OL_x,FUN.VALUE = 0L))
#  [1] 0.60 0.60 0.60 0.60 0.60 0.60 0.60 0.60 0.60 0.60 0.60 0.60 0.60
# [14] 0.60 0.60 0.60 0.60 0.60 0.60 0.60 0.60 0.60 0.60 0.60 0.60 0.60
# [27] 0.60 0.60 0.60 0.60 0.60 0.60 0.60 0.22 0.22 0.22 0.22 0.22 0.22
# ...
# create 1000 samples 
x = sample(
    x = unlist(OL_x),size = 1000,prob = rep(c(0.60,FUN.VALUE = 0L))
) + runif(1000,1)
head(x)
# [1] 18.826530 36.948981 15.366685  5.142625 47.659682 14.946690

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。