2017-01-12 19 views
3

В моей ниже R кода, мне было интересно, как я мог бы узнать, что RH1 когда у == 0,5?Решение (определение) функции в точке R

Обратите внимание, что у использует atanh(rh1), которая может быть преобразована обратно в RH1 использованием tanh().

rh1 <- seq(-1, 0.1, by = 0.001) 
y <- pnorm(-0.13, atanh(rh1), 0.2) 
plot(rh1, y, type = "l") 

ответ

4

Аналитическое решение

Для нормального распределения X ~ N(mu, 0.2). Мы хотим найти mu, так что Pr (X < -0.13) = y.

Напомните свой предыдущий вопрос и мой ответ там: Determine a normal distribution given its quantile information. Здесь у нас есть что-то более простое, так как есть только один неизвестный параметр и одна часть квантильной информации.

Опять же, мы начинаем стандартизации:

Pr {X < -0.13} = y 
=> Pr { [(X - mu)/0.2] < [(-0.13 - mu)/0.2] } = y 
=> Pr { Z < [(-0.13 - mu)/0.2] } = y # Z ~ N(0,1) 
=> (-0.13 - mu)/0.2 = qnorm (y) 
=> mu = -0.13 - 0.2 * qnorm (y) 

Теперь atanh(rh1) = mu => rh1 = tanh(mu), так короче, аналитическое решение:

tanh(-0.13 - 0.2 * qnorm (y)) 

Численное решение

Это проблема поиска корней. Сначала мы построим следующую функцию f, и мы стремимся найти ее корень, т. Е. rh1, так что f(rh1) = 0.

f <- function (rh1, y) pnorm(-0.13, atanh(rh1), 0.2) - y 

Самый простой способ корень поиска является метод бисекция, реализуемый uniroot в R. Я рекомендую вам чтение Uniroot solution in R за то, как мы должны работать с ним в целом.

curve(f(x, 0.5), from = -1, to = 0.1); abline (h = 0, lty = 2) 

Мы видим, существует корень между (-0.2, 0), так:

uniroot(f, c(-0.2, 0), y = 0.5)$root 
# [1] -0.129243 
+0

'uniroot' фактически делает что-то немного любитель, чем бисекции (метод Брента:«Функция делает использование „золотого сечения“ процедура в сочетании с параболической интерполяцией ", http://www.netlib.org/c/brent.shar). Не то чтобы это было важно для этой проблемы. –

3

Ваша функция монотонна, поэтому вы можете просто создать обратную функцию.

rh1 <- seq(-1,.1,by=.001) 
y <- pnorm(-.13,atanh(rh1),.2) 

InverseFun = approxfun(y, rh1) 
InverseFun(0.5) 
[1] -0.1292726 

 Смежные вопросы

  • Нет связанных вопросов^_^