當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R notExp 優於對數正參數化的函數


R語言 notExp 位於 mgcv 包(package)。

說明

當參數應該為正時,統計優化中的常見做法是使用log-parameterizations。即,如果優化參數 a 應為非負,那麽我們使用 a=exp(b) 並針對無約束參數 b 進行優化。這通常效果很好,但它確實意味著 b 的工作範圍相當有限:例如,使用 8 字節雙精度數,如果 b 的大小遠高於 700,則 a 上溢或下溢。這可能會給數值優化方法帶來問題。

notExp 是一個單調函數,用於將實數線映射到正實數線,其極端下溢和溢出行為比 exp 少得多。它是一個 piece-wise 函數,但連續到二階導數:請參閱源代碼以了解確切的定義,並通過下麵的示例了解它的外觀。

notLognotExp 的反函數。

這些函數的主要用途最初是為 lme 提供更健壯的 pdMat 類,以供 gamm 使用。由於 nlme 優化例程的更改,目前使用 notExp2notLog2 函數代替它們。

用法

notExp(x)

notLog(x)

參數

x

實數 (notExp) 或正實數 (notLog) 的參數數組。

根據提供的參數值計算的函數值數組。

例子

## Illustrate the notExp function: 
## less steep than exp, but still monotonic.
require(mgcv)
x <- -100:100/10
op <- par(mfrow=c(2,2))
plot(x,notExp(x),type="l")
lines(x,exp(x),col=2)
plot(x,log(notExp(x)),type="l")
lines(x,log(exp(x)),col=2) # redundancy intended
x <- x/4
plot(x,notExp(x),type="l")
lines(x,exp(x),col=2)
plot(x,log(notExp(x)),type="l")
lines(x,log(exp(x)),col=2) # redundancy intended
par(op)
range(notLog(notExp(x))-x) # show that inverse works!

作者

Simon N. Wood simon.wood@r-project.org

參考

https://www.maths.ed.ac.uk/~swood34/

也可以看看

pdTenspdIdnotgamm

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Functions for better-than-log positive parameterization。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。