正态分布 `N(mu, 1)>1.96`

3
我尝试编写R代码来找到一个值为mu的正态分布,使得概率P(N(mu,1)>1.96)=0.95(即P(Z>1.96)=0.95,其中Z∼N(mu,1)mu是我想要获得的)。有没有用于解决分布参数的代码?看起来这将是一个关于mu的积分方程,如下所示: int_{1.96}^{\infty} 1/\sqrt{2\pi} \exp(-(x-mu)^2/2)dx=0.95 我们可以从dnorm(x,mean,sd)rnorm(n,mean,sd)中对正态分布进行采样。但我们需要先获取meansd的值。

@JohnColeman 这将是一个关于 mu 的方程。 - Hermi
@JohnColeman:mu 是统计分布的均值。 - smci
@JohnColeman 我想找到 mu 的值,使得概率 N(\mu, 1)>1.96 为0.95。 - Hermi
@Hermi,你的意思现在很清楚了,在编辑之前不是这样。 - John Coleman
我敢打赌,只要正确调用qnorm()(请参见下面的评论),就可以直接完成这个任务。 - Ben Bolker
1
qnorm(0.95, 0, 1) + 1.96 - user20650
2个回答

5
使用uniroot函数找出概率等于0.95的点。函数f是表示此操作的一种方法。区间的端点是任意选择的,因为我不期望解决方案与原点相距太远。
请注意将参数lower.tail设置为FALSE。
f <- function(x) {
  pnorm(1.96, mean = x, sd = 1, lower.tail = FALSE) - 0.95
}
uniroot(f, c(-5, 5))
#> $root
#> [1] 3.604879
#> 
#> $f.root
#> [1] 2.594975e-06
#> 
#> $iter
#> [1] 12
#> 
#> $init.it
#> [1] NA
#> 
#> $estim.prec
#> [1] 6.103516e-05

mu <- uniroot(f, c(-5, 5))$root
mu
#> [1] 3.604879

pnorm(1.96, mu, 1)
#> [1] 0.04999741
curve(pnorm(x, mu, 1),  from = -5, to = 8)
abline(h = 0.95, lty = "dashed")
abline(v = 1.96, lty = "dashed")

reprex 包 (v2.0.1) 于 2022-02-28 创建


2
干得好!或者我们可以使用 uniroot(function(m) qnorm(0.05, m) - 1.96, c(-3, 3)) - ThomasIsCoding

2

以下是其他一些选项

> uniroot(function(m) qnorm(0.05, m) - 1.96, c(-1e3, 1e3))$root
[1] 3.604854
  • 使用pracma包中的erfinv
library(pracma)
> 1.96 + sqrt(2) * pracma::erfinv(2 * 0.95-1)
[1] 3.604854

1
请注意,erfinv 实际上非常简单:sqrt(qchisq(abs(y), 1)/2) * sign(y) - Ben Bolker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接