给定分位数信息确定正态分布
Determine a normal distribution given its quantile information
我想知道如何让 R 告诉我 SD(作为 R 内置的 qnorm() 中的参数)对于已知 95% 极限值的正态分布?
举个例子,我知道正常值的两个 95% 极限值分别是 158 和 168。所以,在下面的R代码 SD中显示为"x"。 If "y"(这个简单的qnorm()函数的答案)需要是(158, 168), 然后 R 能告诉我 x 应该是什么吗?
y <- qnorm(c(.025,.975), 163, x)
正态分布的一般程序
假设我们有一个正态分布 X ~ N(mu, sigma)
,均值未知 mu
,标准差未知 sigma
。我们的目标是求解 mu
和 sigma
,给定两个分位数方程:
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
来求解mu
和sigma
.
想一想奇点的情况意味着什么。 qnorm
对于正态分布是严格单调的。所以 beta1 = beta2
与 alpha1 = 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
我想知道如何让 R 告诉我 SD(作为 R 内置的 qnorm() 中的参数)对于已知 95% 极限值的正态分布?
举个例子,我知道正常值的两个 95% 极限值分别是 158 和 168。所以,在下面的R代码 SD中显示为"x"。 If "y"(这个简单的qnorm()函数的答案)需要是(158, 168), 然后 R 能告诉我 x 应该是什么吗?
y <- qnorm(c(.025,.975), 163, x)
正态分布的一般程序
假设我们有一个正态分布 X ~ N(mu, sigma)
,均值未知 mu
,标准差未知 sigma
。我们的目标是求解 mu
和 sigma
,给定两个分位数方程:
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
来求解mu
和sigma
.
想一想奇点的情况意味着什么。 qnorm
对于正态分布是严格单调的。所以 beta1 = beta2
与 alpha1 = 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