Eu tenho uma distribuição empírica . Eu calculo da seguinte forma
x <- seq(0, 1000, 0.1)
g <- ecdf(var1)
G <- g(x)
Denomino , ou seja, h é o pdf enquanto G é o cdf.
Agora, quero resolver uma equação para o limite superior de integração (digamos ), de modo que o valor esperado de x seja algum k .
Ou seja, a integração de para b , I deve ter ∫ x h ( x ) d x = k . Eu quero resolver para b .
Integrando por partes, posso reescrever a equação como
, onde a integral é de 0 a b ------- (1)
Eu acho que posso calcular a integral da seguinte forma
intgrl <- function(b) {
z <- seq(0, b, 0.01)
G <- g(z)
return(mean(G))
}
Mas quando tento usar esta função com
library(rootSolve)
root <- uniroot.All(fun, c(0, 1000))
onde diversão é a eq (1), recebo o seguinte erro
Error in seq.default(0, b, by = 0.01) : 'to' must be of length 1
Acho que o problema é que minha função intgrl
é avaliada em um valor numérico, enquanto uniroot.All
passa o intervaloc(0,1000)
Como devo resolver para nesta situação em R?