La siguiente funcion toma un objeto calculado con la función density() y
devuelve el cuantil correspondiente a un
p-valor dado. Quizas esto les sirva. No se si alguno en el grupo de
discusión conoce alguna alternativa mas
precisa que esta funcón.
*#*
*# return the variate(s) for specified cumulative*
*# probability(ies) for a density(...) object*
*#*
*# Rajiv Prasad (rajiv.prasad at pnl.gov) 05/14/2001*
*#*
RPDensityLookup <- *function*(density.obj, p=0.5, interp="l")
{
*if*(*missing*(density.obj))
{
*cat*("\nUsage: RPDensityLookup(density.obj, p=0.5,
interp=\"l\")")
*cat*("\n density.obj: an object returned from the density(...)
function")
*cat*("\n p: cumulative probability value(s) for which
variate")
*cat*("\n values are needed")
*cat*("\n interp: \"l\" for linear interpolation
between data
points")
*cat*("\n \"s\" for spline fit using data
points\n\n")
}
n <- *length*(density.obj$x)
dx <- density.obj$x[2:n] - density.obj$x[1:(n-1)]
x <- *rep*(*NA*, *length*(p))
*# midpoints*
cumx <- (density.obj$x[2:n] + density.obj$x[1:(n-1)]) / 2
*# numerical integration*
cumy <- *cumsum*((density.obj$y[2:n] + density.obj$y[1:(n-1)]) / 2 * dx)
*if*(interp == "l")
{
Fx <- *approxfun*(cumy, cumx) *# linear interpolation function*
x <- Fx(p) *# the variates corresponding to
p''s*
}
*else* *if*(interp == "s")
{
Fx <- *splinefun*(cumy, cumx) *# spline fit*
x <- Fx(p) *# the variates corresponding to
p''s*
}
*else*
{
*cat*(*paste*("\nError: unrecognized interp method (\"",
interp,
"\").\n\n",
*sep*=""))
}
x
}
*#EJEMPLO*
x=*rnorm*(100,0,1)
midensidad=*density*(x)
RPDensityLookup(midensidad,0.25,"s")
Prof. Julio Di Rienzo
Estadística y Biometría
FCA- U.N. Córdoba
IBS-RARG President
http://sites.google.com/site/juliodirienzo
"Biometry, the active pursuit of biological
knowledge by quantitative methods."
(R.A. Fisher, 1948)
2011/10/22 J. Miguel Marin <jmmarin@est-econ.uc3m.es>
> Hola,
> otra opción es usar "Ryacas" que permite calcular integrales
analíticas vía
> yacas dentro de R:
>
http://cran.es.r-project.org/**web/packages/Ryacas/index.html<http://cran.es.r-project.org/web/packages/Ryacas/index.html>
>
> Un saludo
>
>
> Hola,
>>
>> Tienes la función integrate() dentro del paquete stats.
>>
>> Y si tienes la expresión analítica y buscas su integral igualmente
>> analítica, hay recursos en la red para su cálculo. Especialmente en
todo
>> el
>> mundo de Wolfram Research (Mathematica, Wolfram Alpha):
>> http://www.wolframalpha.com/
>>
>>
>> Saludos,
>> Carlos Ortega
>> www.qualityexcellence.es
>>
>> El 22 de octubre de 2011 14:40, Silvia Pierotti <
>> silviapierotti504@gmail.com
>>
>>> escribió:
>>>
>>
>> Hola,
>>>
>>> Estime una función de densidad de probabilidad (usando la función
>>> densiti)
>>> y
>>> quiero integrarla para encontrar percentiles 5 y 95....
>>>
>>> Alguien sabe como hacer esta integral en R????....
>>>
>>> Gracias!!!..
>>>
>>> [[alternative HTML version deleted]]
>>>
>>>
>>> ______________________________**_________________
>>> R-help-es mailing list
>>> R-help-es@r-project.org
>>>
https://stat.ethz.ch/mailman/**listinfo/r-help-es<https://stat.ethz.ch/mailman/listinfo/r-help-es>
>>>
>>>
>>>
>> [[alternative HTML version deleted]]
>>
>>
>>
>
>
>
> jm~
>
> ______________________________**_
>
> J. Miguel Marin
>
> http://www.est.uc3m.es/jmmarin
>
> Dep. of Statistics
> University Carlos III of Madrid
> Spain (E.U.)
>
>
> ______________________________**_________________
> R-help-es mailing list
> R-help-es@r-project.org
>
https://stat.ethz.ch/mailman/**listinfo/r-help-es<https://stat.ethz.ch/mailman/listinfo/r-help-es>
>
[[alternative HTML version deleted]]