[R-es] Problema para integrar una funcion ajustada a un conjunto de datos con la instruccion sm.density(x)

Carlos J. Gil Bellosta cgb en datanalytics.com
Mie Ene 18 00:15:46 CET 2012


Hola, ¿qué tal?

La función integrate necesita como argumento una función.

La salida de la función density no es una función: es un objeto que,
entre otras cosas, contiene

x <- rnorm( 1000 )
densidad <- density( x )
str( densidad )
List of 7
 $ x        : num [1:512] -3.65 -3.63 -3.62 -3.6 -3.59 ...
 $ y        : num [1:512] 3.50e-05 4.30e-05 5.25e-05 6.37e-05 7.70e-05 ...
 $ bw       : num 0.221
 $ n        : int 1000
 $ call     : language density.default(x = x)
 $ data.name: chr "x"
 $ has.na   : logi FALSE
 - attr(*, "class")= chr "density"

los objetos x e y que son, por decirlo de alguna manera, "puntos por
los que pasa la función de densidad".

Tienes la opción de convertir esos puntos en una función que luego
puedes integrar con integrate usando, si no quieres complicarte la
vida, rectángulos o trapecios.

Un saludo,

Carlos J. Gil Bellosta
http://www.datanalytics.com


El día 17 de enero de 2012 22:12, Eric <ericconchamunoz en gmail.com> escribió:
> Estimada comunidad, nuevamente con algo que no se como hacer en R, pero
> aprendiendo ....
>
> El problema es el siguiente:
> 1. tengo un conjunto de 10 mil datos (n) cuyo valor va entre 0 y 10.000 a
> los que aplico una funcion sm.density() para obtener una especie de
> histograma pero con una curva que parece continua.
> 2. Una vez que obtengo esa curva necesito calcular el area bajo la curva en
> ciertos intervalos, esto equivale a aplicar una integral en esos
> intervalos. He intentado hacerlo de la siguiente forma:
> integrand <- function(x){sm.density(x)}
> lim02ene.via <- integrand(compara.tiempos2[,1])
> int.lim02ene.via <- integrate(lim02ene.via, -Inf, Inf)
>
> pero obtengo el siguiente error:
>
> Error in get(as.character(FUN), mode = "function", envir = envir) :
>  object 'lim02ene.via' of mode 'function' was not found
>
> buscando encontre que la funcion a integrar debe ser "vectorizable" y que
> para eso se puede aplicar la funcion "vectorize", pero sigo obteniendo el
> mismo error, el problema parece ser que el resultado de aplicar la funcion
> sm.density no es una funcion si no un conjunto de muchos puntos (x.y) ...
> entonces.
>
> como puedo hacer para calcular un area bajo la curva obtenida con
> sm.density() ???
>
> Muchas gracias por su tiempo y ayuda ...
>
> Eric Concha M.
>
>
>
>
>
> --
> Nota: las tildes se han omitido para evitar conflictos con algunos lectores
> de correo.
>
> * Un economista es un experto que sabrá mañana por qué las cosas que predijo
> ayer no han sucedido hoy (Laurence Peter).
>
> * SATYÂT NÂSTI PARO DHARMAH
>
>        [[alternative HTML version deleted]]
>
>
> _______________________________________________
> R-help-es mailing list
> R-help-es en r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>



Más información sobre la lista de distribución R-help-es