Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
求解qcauchy()中的x和y,给定其在R中的分位数_R_Function_Optimization_Distribution_Nlm - Fatal编程技术网

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

求解qcauchy()中的x和y,给定其在R中的分位数,r,function,optimization,distribution,nlm,R,Function,Optimization,Distribution,Nlm,背景: qcauchy(p,位置,刻度)是一个内置的base R函数。在该函数中,“位置”表示中心,“比例”表示对称钟形曲线的特异性(就像正态分布一样)“位置”可以是任何数字(负数、正数、非整数等)。和“刻度”可以是大于“0”的任何数字。另外,“p”是概率,因此0我使用了一个包来解非线性方程组nleqslv。 我尝试了以下方法 library(nleqslv) f <- function(x) { y <- c(-12.7062, 12.7062) - qcauchy(c(

背景:


qcauchy(p,位置,刻度)
是一个内置的base R函数。在该函数中,“位置”表示中心,“比例”表示对称钟形曲线的特异性(就像正态分布一样)“位置”可以是任何数字(负数、正数、非整数等)。和“刻度”可以是大于“0”的任何数字。另外,“p”是概率,因此0我使用了一个包来解非线性方程组
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)

除了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))

find_scale_模板这个问题可能应该在上面,而不是在这里。我认为比例参数不允许像你问题中所说的那样为负。由于柯西分布是对称的,如果有两个值,如示例中的
qcauchy(c(p,1-p),x,y)=c(-a,a)
则x=0。更一般地说,如果选择方程中的
a
,那么x=(a+b)/2和G5W,如果
a
,那么
y=1
那么
qcauchy(p,1-p),x,y)=s*c(-a,a)
的解是
x=0,y=s
。在我看来没问题。你也可以像这样使用
optim
optim(c(1,1),函数(x)和(f(x)^2))
@G.Grothendieck,你能再解释一下你是如何使用
optim
的吗,因为我的目标是用它来做一个函数,这样它对任何输入都有效?所示的平方和函数的最小值为零,在这一点上满足方程。答案中的解决方案较短,但如果希望仅使用基数R,则此变化可能有用。无论如何,它使用Bhas的
f
,因此仅添加此作为注释。@G.Grothendieck,收到了,非常感谢!我希望有一种方法可以接受或否决你的答案。顺便说一句,我可以在这里使用
nlm()
?这看起来是什么样子?对于nlm或任何最小化函数,您可以在我前面的评论中使用平方和函数。
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))