在 R 中的某个点求解(确定)一个函数
Solving (determining) a function at a point in R
在我的 下面的 R 代码中, 我想知道当 y = = 0.5?
注意 y 使用 atanh(rh1)
,可以使用 tanh()
转换回 rh1。
rh1 <- seq(-1, 0.1, by = 0.001)
y <- pnorm(-0.13, atanh(rh1), 0.2)
plot(rh1, y, type = "l")
你的函数是单调的,所以你可以只创建反函数。
rh1 <- seq(-1,.1,by=.001)
y <- pnorm(-.13,atanh(rh1),.2)
InverseFun = approxfun(y, rh1)
InverseFun(0.5)
[1] -0.1292726
解析解
正态分布X ~ N(mu, 0.2)
。我们想要找到 mu
,使得 Pr (X < -0.13) = y
.
回想一下你之前的问题和我在那边的回答:。这里我们有更简单的东西,因为只有一个未知参数和一个分位数信息。
同样,我们从标准化开始:
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 中实现。我建议您阅读 以了解我们应该如何使用它。
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
在我的 下面的 R 代码中, 我想知道当 y = = 0.5?
注意 y 使用 atanh(rh1)
,可以使用 tanh()
转换回 rh1。
rh1 <- seq(-1, 0.1, by = 0.001)
y <- pnorm(-0.13, atanh(rh1), 0.2)
plot(rh1, y, type = "l")
你的函数是单调的,所以你可以只创建反函数。
rh1 <- seq(-1,.1,by=.001)
y <- pnorm(-.13,atanh(rh1),.2)
InverseFun = approxfun(y, rh1)
InverseFun(0.5)
[1] -0.1292726
解析解
正态分布X ~ N(mu, 0.2)
。我们想要找到 mu
,使得 Pr (X < -0.13) = y
.
回想一下你之前的问题和我在那边的回答:
同样,我们从标准化开始:
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 中实现。我建议您阅读
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