【问题标题】:Determine a normal distribution given its quantile information在给定分位数信息的情况下确定正态分布
【发布时间】:2017-04-29 04:55:08
【问题描述】:

我想知道如何让 R 告诉我 SD(作为 R 中内置的 qnorm() 中的一个参数)对于 95% 限制的正态分布值是已知的?

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

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

【问题讨论】:

  • 你的问题不清楚。为了让我们能够回答您的问题,请通过键入 dput(variableName) 并将控制台输出复制并粘贴到您的问题中来包含您的数据样本。此外,显示您想要的输出应该是什么样子。有关如何在R 中制作可重现示例的更多信息(并使您的问题更有可能得到回答),请查看this post

标签: r statistics normal-distribution quantile


【解决方案1】:

正态分布的一般程序

假设我们有一个正态分布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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-06
    • 2015-03-05
    • 2017-05-23
    • 2014-09-03
    • 1970-01-01
    • 1970-01-01
    • 2011-06-08
    • 1970-01-01
    相关资源
    最近更新 更多