找到概率的近似值 ??????(????????????(????)>????????????(????)) 使用模拟

Posted

技术标签:

【中文标题】找到概率的近似值 ??????(????????????(????)>????????????(????)) 使用模拟【英文标题】:Find approximate value for the probability ????(????????????(????)>????????????(????)) using simulation 【发布时间】:2022-01-08 23:18:54 【问题描述】:

我对以下分布进行了模拟:

在统计程序 R 中,现在我必须找到概率 P(log(Y) > sin(X)) 的近似值。我怎么能在 R 中做到这一点?谁能帮帮我?

我隐藏了自己的模拟,而其他有相同问题的模拟则不应该 复制它。但是我从另一篇文章中得到了这个模拟,它也可以工作:

n <- 1e4
X <- data.frame(x = runif(n, -1, 1), y = runif(n, 0, 1), z = runif(n, 0, 3/2))
i <- with(X, 0 < y & x^2 + y^2 < 1 & z <= (3/2)*y) 
X <- X[i, ]

例如,我如何使用此模拟来找到 R 中的概率 P(log(Y ) > sin(X))?

【问题讨论】:

【参考方案1】:

我不知道如何发布解决方案,没有你的伙伴也会看到它...... ;-)

# part 1: prepare probability density distribution on rect -1,...1
n <- 1e4
X <- data.frame(x = runif(n, -1, 1), y = runif(n, -1, 1), h=1)
X$h <- 3/2*X$y  # set probability density h = 3/2*y
head(X)

# part 2: restrict to half disk and normalize probability h to equal 1
i <- with(X, 0 < y & x^2 + y^2 < 1) 
X <- X[i, ]
X$h <- X$h / sum(X$h)
plot(X[, 1:2], asp=1, pch='.')

# measure probability for points with log(y) > sin(x)
ii <- with(X, log(y) > sin(x))
points(X[ii, 1:2], pch='.', col="red")
p <- sum(X[ii, "h"])
p

【讨论】:

很好,谢谢,这是有道理的。我自己发现了一个更快的技巧,但很高兴检查它给我的结果与你的代码相同,我想我理解你的代码中发生了什么,谢谢! 现在我很好奇这个更快的技巧可能是什么......? 编辑:第 2 行有一个小错误。更正它:X &lt;- data.frame(x = runif(n, -1, 1), y = runif(n, -1, 1), h=1) 很好!!现在我非常接近我发现的价值。在我的模拟之后,我只使用了with(X, v= log(y)&gt;sin(x) mean(v) ) mean(v) 很好,平均功能也可以。这是一个很好的情节补充:points(X[ii, 1:2], pch='.', col="red") 将用红色标记感兴趣的区域。

以上是关于找到概率的近似值 ??????(????????????(????)>????????????(????)) 使用模拟的主要内容,如果未能解决你的问题,请参考以下文章

近似推断

《概率统计》基于马尔科夫链的近似采样

Redis 基础 -- HyperLogLog概率算法(计算集合的近似基数)和HyperLogLog的常用命令

人工智能数学基础--概率与统计2:排列组合的表示方法二项式系数及斯特林近似

人工智能数学基础--概率与统计2:排列组合的表示方法二项式系数及斯特林近似

你如何根据一个人的属性来近似状态转换?