J'ai une distribution empirique . Je le calcule comme suit
x <- seq(0, 1000, 0.1)
g <- ecdf(var1)
G <- g(x)
Je note , c'est-à-dire que h est le pdf tandis que G est le cdf.
Je veux maintenant résoudre une équation pour la limite supérieure d'intégration (disons, ), telle que la valeur attendue de x est de k .
Autrement dit, en intégrant de à b , je devrais avoir ∫ x h ( x ) d x = k . Je veux résoudre pour b .
L'intégration par parties, je peux réécrire l'équation comme
, où l'intégrale est de 0 à b ------- (1)
Je pense que je peux calculer l'intégrale comme suit
intgrl <- function(b) {
z <- seq(0, b, 0.01)
G <- g(z)
return(mean(G))
}
Mais quand j'essaie d'utiliser cette fonction avec
library(rootSolve)
root <- uniroot.All(fun, c(0, 1000))
où le plaisir est eq (1), j'obtiens l'erreur suivante
Error in seq.default(0, b, by = 0.01) : 'to' must be of length 1
Je pense que le problème est que ma fonction intgrl
est évaluée à une valeur numérique, tout en uniroot.All
passant l'intervallec(0,1000)
Comment dois-je résoudre pour dans cette situation dans R?