R语言
numericDeriv
位于 stats
包(package)。 说明
numericDeriv
对表达式的梯度进行数值计算。
用法
numericDeriv(expr, theta, rho = parent.frame(), dir = 1,
eps = .Machine$double.eps ^ (1/if(central) 3 else 2), central = FALSE)
参数
expr |
|
theta |
|
rho |
|
dir |
方向的数值向量,通常使用 |
eps |
正数,用作近似数值导数 |
central |
逻辑指示是否应计算中心划分差异,即 。这些通常更准确,但需要对 进行更多评估。 |
细节
这是 C 函数 numeric_deriv
的前端,在编写 R 扩展中对此进行了说明。
数值变量的类型必须是 double
而不是 integer
。
值
eval(expr, envir = rho)
的值加上矩阵属性 "gradient"
。该矩阵的列是值相对于 theta
中列出的变量的导数。
例子
myenv <- new.env()
myenv$mean <- 0.
myenv$sd <- 1.
myenv$x <- seq(-3., 3., length.out = 31)
nD <- numericDeriv(quote(pnorm(x, mean, sd)), c("mean", "sd"), myenv)
str(nD)
## Visualize :
require(graphics)
matplot(myenv$x, cbind(c(nD), attr(nD, "gradient")), type="l")
abline(h=0, lty=3)
## "gradient" is close to the true derivatives, you don't see any diff.:
curve( - dnorm(x), col=2, lty=3, lwd=2, add=TRUE)
curve(-x*dnorm(x), col=3, lty=3, lwd=2, add=TRUE)
##
## IGNORE_RDIFF_BEGIN
# shows 1.609e-8 on most platforms
all.equal(attr(nD,"gradient"),
with(myenv, cbind(-dnorm(x), -x*dnorm(x))))
## IGNORE_RDIFF_END
作者
Saikat DebRoy saikat@stat.wisc.edu;
tweaks and eps
, central
options by R Core Team.
相关用法
- R naprint 调整缺失值
- R nls.control 控制 nls 中的迭代
- R na.fail 处理对象中的缺失值
- R na.contiguous 查找非 NA 的最长连续延伸
- R nobs 从拟合中提取观测值数量
- R nlminb 使用 PORT 例程进行优化
- R nlm 非线性最小化
- R nextn 查找高度复合的数字
- R nls 非线性最小二乘法
- R na.action 不适用行动
- R naresid 调整缺失值
- R stlmethods STL 对象的方法
- R medpolish 矩阵的中值波兰(稳健双向分解)
- R summary.nls 总结非线性最小二乘模型拟合
- R summary.manova 多元方差分析的汇总方法
- R formula 模型公式
- R aggregate 计算数据子集的汇总统计
- R deriv 简单表达式的符号和算法导数
- R kruskal.test Kruskal-Wallis 秩和检验
- R quade.test 四方测试
- R decompose 移动平均线的经典季节性分解
- R plot.stepfun 绘制阶跃函数
- R alias 查找模型中的别名(依赖项)
- R qqnorm 分位数-分位数图
- R eff.aovlist 多层方差分析的计算效率
注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Evaluate Derivatives Numerically。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。