给定 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 )
,那么,有没有办法让我 找到 找出 x 和 y 可能是合理的(即,在一定的误差范围内)?
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))
背景:
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 )
,那么,有没有办法让我 找到 找出 x 和 y 可能是合理的(即,在一定的误差范围内)?
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))