rno*_*ian 4 statistics r normal-distribution quantile
我想知道如何让R告诉我SD(作为R中构建的qnorm()中的参数 )对于正常分布,其95%的极限值已知?
举个例子,我知道我的法线的两个95%极限值分别是158和168.因此,在 下面的R代码中, SD显示为"x".如果 "y"(这个简单的qnorm()函数的答案)需要(158,168),那么 R能告诉我x应该是什么吗?
y <- qnorm(c(.025,.975), 163, x)
Run Code Online (Sandbox Code Playgroud)
假设我们有一个正态分布X ~ N(mu, sigma),具有未知的均值mu和未知的标准差sigma.我们的目标是求解mu和sigma给出两个分位数方程式:
Pr(X < q1) = alpha1
Pr(X < q2) = alpha2
Run Code Online (Sandbox Code Playgroud)
我们考虑标准化:Z = (X - mu) / sigma那么
Pr(Z < (q1 - mu) / sigma) = alpha1
Pr(Z < (q2 - mu) / sigma) = alpha2
Run Code Online (Sandbox Code Playgroud)
换一种说法,
(q1 - mu) / sigma = qnorm(alpha1)
(q2 - mu) / sigma = qnorm(alpha2)
Run Code Online (Sandbox Code Playgroud)
RHS是明确知道的,我们定义beta1 = qnorm(alpha1),beta2 = qnorm(alpha2).现在,上面简化为2个线性方程组:
mu + beta1 * sigma = q1
mu + beta2 * sigma = q2
Run Code Online (Sandbox Code Playgroud)
该系统具有系数矩阵:
1 beta1
1 beta2
Run Code Online (Sandbox Code Playgroud)
有决定因素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"))
}
Run Code Online (Sandbox Code Playgroud)
我们来测试一下:
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
Run Code Online (Sandbox Code Playgroud)
我们也可以做任意的事情:
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
Run Code Online (Sandbox Code Playgroud)