R - How to get a difference/sum of 2 step functions?

时间:2018-06-04 16:39:07

标签: r

I have 2 step function objects (ecdf objects to be exact). How to calculate a step function that is a difference or sum of these two?

1 个答案:

答案 0 :(得分:-1)

取决于你需要它。类stepfun的对象在某种意义上是一个函数;如果a <- ecdf(rnorm(100)),那么a(0)将评估为接近.5的内容。因此,您只需添加函数ecdf.sum <- function(x) { ecdf1(x) + ecdf2(x) }即可添加它们。这将产生有效的阶梯函数,但不会产生类stepfunecdf

无论如何,你得到的东西都不是ecdf对象,因为这些值的范围不正确。但至少要将其恢复为阶梯函数,您可以将其分解为结:

knots.new <- sort(knots(ec1), knots(ec2))
ec.new <- stepfun(knots.new, c(0,ec1(knots.new) + ec2(knots.new)))

c(0, ...是因为您需要比结点多一个值(对于步进函数的左侧值),对于类型为ecdf的对象,0是安全值。