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?
答案 0 :(得分:-1)
取决于你需要它。类stepfun
的对象在某种意义上是一个函数;如果a <- ecdf(rnorm(100))
,那么a(0)
将评估为接近.5
的内容。因此,您只需添加函数ecdf.sum <- function(x) { ecdf1(x) + ecdf2(x) }
即可添加它们。这将产生有效的阶梯函数,但不会产生类stepfun
或ecdf
。
无论如何,你得到的东西都不是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是安全值。