给定其分位数信息确定正态分布

时间:2016-12-14 00:21:41

标签: r statistics normal-distribution quantile

我想知道如何让R告诉我 SD (作为R中构建的 qnorm()中的参数)对于95%限制的正态分布价值已经知道了?

作为一个例子,我知道我的法线的两个95%极限值分别是158和168。因此,在下面的R代码 SD 显示为“x”。 如果“y”(这个简单的 qnorm()函数的答案)需要(158,168),那么可以告诉我什么应该 x

y <- qnorm(c(.025,.975), 163, x)

1 个答案:

答案 0 :(得分:6)

正态分布的一般过程

假设我们有正态分布X ~ N(mu, sigma),未知均值mu和未知标准偏差sigma。我们的目标是在给定两个分位数方程式的情况下求解musigma

Pr(X < q1) = alpha1
Pr(X < q2) = alpha2

我们考虑标准化:Z = (X - mu) / sigma,以便

Pr(Z < (q1 - mu) / sigma) = alpha1
Pr(Z < (q2 - mu) / sigma) = alpha2

换句话说,

(q1 - mu) / sigma = qnorm(alpha1)
(q2 - mu) / sigma = qnorm(alpha2)

明确知道RHS,我们定义beta1 = qnorm(alpha1)beta2 = qnorm(alpha2)。现在,上面简化为2个线性方程组:

mu + beta1 * sigma = q1
mu + beta2 * sigma = q2

该系统具有系数矩阵:

1  beta1
1  beta2

带有决定因素beta2 - beta1。奇点的唯一情况是beta2 = beta1。只要系统不是单数,我们就可以使用solve来解析musigma

想想奇点情况意味着什么。 qnorm对于正态分布是严格单调的。因此beta1 = beta2alpha1 = alpha2相同。但是这很容易避免,因为它符合你的规范,所以在下面我不会检查奇点。

将以上内容纳入估算函数:

est <- function(q, alpha) {
  beta <- qnorm(alpha)
  setNames(solve(cbind(1, beta), q), c("mu", "sigma"))
  }

我们来测试一下:

x <- est(c(158, 168), c(0.025, 0.975))
#        mu      sigma 
#163.000000   2.551067 

## verification
qnorm(c(0.025, 0.975), x[1], x[2])
# [1] 158 168

我们也可以做任意的事情:

x <- est(c(1, 5), c(0.1, 0.4))
#      mu    sigma 
#5.985590 3.890277 

## verification
qnorm(c(0.1, 0.4), x[1], x[2])
# [1] 1 5