0

背景:

qcauchy(p, location, scale)是一个内置的基本 R 函数。在此函数中,“位置”表示中心,“刻度”表示对称形曲线的分布(就像正态分布一样)“位置”可以是任何数字(负数、正数、非整数等)。并且"scale"可以是任何大于"0"的数字。还有,“p”是概率,因此 0 <= p <= 1。

编码问题:

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

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

4

2 回答 2

1

我使用了一个软件包来求解非线性方程组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
于 2017-04-24T17:26:25.630 回答
0

除了 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))
于 2017-04-24T17:36:33.607 回答