【发布时间】:2013-11-28 12:40:21
【问题描述】:
我有一个看起来像这样的函数: g(x) = f(x) - a^b / f(x)^b
g(x) - 已知函数,提供数据向量。
f(x) - 隐藏进程。
a,b - 此函数的参数。
从上面我们得到关系:
f(x) = 逆(g(x))
我的目标是优化参数 a 和 b 以使 f(x) 尽可能接近
为正态分布。如果我们查看 f(x) Q-Q 正态图(附后),我的目的是通过优化参数 a 和 b。
我写了下面的代码:
g_fun <- function(x) {x - a^b/x^b}
inverse = function (f, lower = 0, upper = 2000) {
function (y) uniroot((function (x) f(x) - y), lower = lower, upper = upper)[1]
}
f_func = inverse(function(x) g_fun(x))
enter code here
# let's made up an example
# g(x) values are known
g <- c(-0.016339, 0.029646, -0.0255258, 0.003352, -0.053258, -0.018971, 0.005172,
0.067114, 0.026415, 0.051062)
# Calculate f(x) by using the inverse of g(x), when a=a0 and b=b0
for (i in 1:10) {
f[i] <- f_fun(g[i])
}
我有两个问题:
- 如何将参数 a 和 b 传递给函数?
- 如何执行此优化任务,即找到 a 和 b 以使 f(x) 接近正态分布。
【问题讨论】:
-
好吧,写出
G(x)(反函数)是什么。它不会是f(x),所以你的问题不是格式正确的。 -
Carl - 例如,g(x) 是纽约的每日测量温度。假设我们可以通过公式 g(x) = f(x) - a^b/f(x)^b 来解释这一点。 f(x) 是测量中的未知/隐藏过程。 f(x) = inverse(g(x)) 可以通过 f_inverse 函数对每个 g(x) 值进行数值计算,(a 和 b 已知)。
-
Idk 是否重要,但由于 a 和 f(x) 都被 b 平方,将公式写成 g(x) = f(x) 不是更好吗? (a/f(x))^b?这样会有一个除法调用,然后是一个指数调用,最后是一个减法调用,而不是 2 个指数、1 个除法和 1 个减法?只是把我的想法扔在那里。
标签: r function optimization inverse