Определите нормальное распределение с учетом его квантильной информации

Мне было интересно, как я мог бы заставить R сообщить мне SD (в качестве аргумента в qnorm (), встроенном в R) для нормального распределения, для которого предельные значения 95% уже равны известен?

Например, я знаю, что два предельных значения 95% для моего нормального значения - 158 и 168 соответственно. Итак, в приведенном ниже R-коде SD отображается как "x". Если «y» (ответ этой простой функции qnorm ()) должен быть (158, 168), тогда может R сказать мне что должно быть x?

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

person rnorouzian    schedule 14.12.2016    source источник
comment
Ваш вопрос непонятен. Чтобы мы могли ответить на ваш вопрос, включите образец своих данных, набрав dput(variableName), скопировав и вставив вывод консоли в свой вопрос. Кроме того, покажите, как должен выглядеть ваш желаемый результат. Для получения дополнительной информации о том, как создать воспроизводимый пример в R (и повысить вероятность ответа на ваш вопрос), пожалуйста, просмотрите этот пост.   -  person Barker    schedule 14.12.2016


Ответы (1)


Общая процедура для нормального распределения

Предположим, у нас есть Нормальное распределение 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). Теперь это упрощается до системы двух линейных уравнений:

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
person Zheyuan Li    schedule 14.12.2016