给定 R 中的分位数,求解 qcauchy() 中的 x 和 y

Solving for x and y in qcauchy() given its quantiles in R

背景:

qcauchy(p, location, scale) 是内置的基本 R 函数。在这个函数中,“location”表示center,“scale”表示 ]speadoutness symmetric 钟形曲线(就像正态分布)。 "location" 可以是任何数字(负数、正数、非整数等)。而 "scale" 可以是任何大于 "0" 的数字。此外,"p" 是概率,因此 0 <= p <= 1.

编码问题:

仅作为 1 个示例,假设我知道 qcauchy(p = c(.025, .975), location = x, scale = y ) = c(-12.7062, 12.7062 ),那么,有没有办法让我 找到 找出 xy 可能是合理的(即,在一定的误差范围内)?

P.S.: 作为一个可能的小开始,nlm()(即非线性最小化)可以帮助这里吗?或者最右边的事实 [即 c(-12.7062, 12.7062 ) ],是相同的数字,但符号相反。

我使用了一个包来求解非线性方程组 nleqslv。 我尝试了以下

library(nleqslv)

f <- function(x) {
    y <- c(-12.7062, 12.7062) - qcauchy(c(.025,.975), location=x[1],  scale=x[2]) 
    y
}

nleqslv(c(1,1), f)

得到了这个答案

$x
[1] 5.773160e-15 9.999996e-01

$fvec
[1]  1.421085e-14 -1.421085e-14

$termcd
[1] 1

$message
[1] "Function criterion near zero"

$scalex
[1] 1 1

$nfcnt
[1] 1

$njcnt
[1] 1

$iter
[1] 1

除了 Bhas 的回答之外,您可以首先使用您的直觉并认识到位置必须为零,因为分布是对称的,并且 - 正如您所指出的那样 - 这两个值在符号之前是相同的。所以在这种情况下,分布围绕零对称。

要找到比例,请使用 Bhas 答案或

find_scale_template <- function(q)
  function(y) {
    (qcauchy(p = .975, location = 0, scale = y) - q)^2
  }
}
find_scale <- find_scale_template(12.7062)
optimize(find_scale, interval = c(0, 10))