R::dexp 的参数化
Parameterisation of R::dexp
我刚刚花了一段时间试图在我的代码中找到一个错误,该错误被证明是 R::dexp
函数的一个不寻常的(至少对我而言)参数化。例如:
cppFunction("
double my_dexp(double x, double lambda, double is_log) {
return R::dexp(x, lambda, is_log);
}
")
> my_dexp(4.5, 2.5, FALSE)
[1] 0.06611956
> dexp(4.5, 2.5, FALSE)
[1] 3.251824e-05
正在寻找here我可以看到他们使用了定义:
double R::dexp(double x, double sl, int lg)
但我没能弄清楚 sl
代表什么。我不确定这是否在任何地方都有记录——所以希望这个 post 可以作为对像我这样使用过该功能的其他人的警告,以及是否有人可以帮助了解使用了哪些参数化以及为什么。
如果您查看 dexp
、
的函数定义
R> dexp
function (x, rate = 1, log = FALSE)
.Call(C_dexp, x, 1/rate, log)
您会看到 dexp
使用参数 1/rate
调用 C 函数 C_dexp
。这就是 R::dexp
的镜像。在 Rcp 中,他们总是使用与 R 本身在 C 级别上使用的相同的参数化,这可能与 R 级别不同。
也就是说
R> my_dexp(4.5, 1/2.5, FALSE) - dexp(4.5, 2.5, FALSE)
[1] 0
如果您查看 exponential function 上的维基百科页面,您会看到基于速率参数 lambda 的倒数的替代参数化。在此参数化中,参数 beta=1/lambda
充当生存参数的角色。所以系统的预期生存时间是beta
个时间单位。
我刚刚花了一段时间试图在我的代码中找到一个错误,该错误被证明是 R::dexp
函数的一个不寻常的(至少对我而言)参数化。例如:
cppFunction("
double my_dexp(double x, double lambda, double is_log) {
return R::dexp(x, lambda, is_log);
}
")
> my_dexp(4.5, 2.5, FALSE)
[1] 0.06611956
> dexp(4.5, 2.5, FALSE)
[1] 3.251824e-05
正在寻找here我可以看到他们使用了定义:
double R::dexp(double x, double sl, int lg)
但我没能弄清楚 sl
代表什么。我不确定这是否在任何地方都有记录——所以希望这个 post 可以作为对像我这样使用过该功能的其他人的警告,以及是否有人可以帮助了解使用了哪些参数化以及为什么。
如果您查看 dexp
、
R> dexp
function (x, rate = 1, log = FALSE)
.Call(C_dexp, x, 1/rate, log)
您会看到 dexp
使用参数 1/rate
调用 C 函数 C_dexp
。这就是 R::dexp
的镜像。在 Rcp 中,他们总是使用与 R 本身在 C 级别上使用的相同的参数化,这可能与 R 级别不同。
也就是说
R> my_dexp(4.5, 1/2.5, FALSE) - dexp(4.5, 2.5, FALSE)
[1] 0
如果您查看 exponential function 上的维基百科页面,您会看到基于速率参数 lambda 的倒数的替代参数化。在此参数化中,参数 beta=1/lambda
充当生存参数的角色。所以系统的预期生存时间是beta
个时间单位。