[R-es] contorno noparametrico
Pablo Emilio Verde
PabloEmilio.Verde en uni-duesseldorf.de
Vie Jul 31 15:31:19 CEST 2009
Hola Carlos,
Muchas gracias por tu email y sugerencias. Encontre algunas soluciones mas o
menos
automaticas que resultan bastante buenas.
El paquete "hdrcde" implementa el metodo descripto en el paper que adjunto,
internamente llama al paquete "ash" y construye una "HDR" bivariada.
(El paper tiene tambien un script en S-Plus que utiliza la funcion
"density2d()"
la version en R usa "ash".)
En mi ejemplo las cosas resultan de la siguiente forma:
# comienzo del ejemplo ...
# parametros de la normal
muD <- 1
muS <- 2
sdD <- 2
sdS <- 4
rho <- 0.7
# contorno del 95%
cc95 <- sqrt(qchisq(0.95,2))
muSp <- muS + sdS * cc95 * cos(seq(0, 2*pi, 0.01))
muDp <- muD + sdD * cc95 * cos(seq(0, 2*pi, 0.01) + acos(rho))
par(mfrow=c(1,3))
plot(muDp, muSp, type="l", xlim=c(-10, 10), ylim=c(-10,10))
# simulo 200 casos
library(MASS)
Sigma <- matrix(c(sdD^2, rho*sdD*sdS,
rho*sdD*sdS, sdS^2),2,2)
mu <- c(muD, muS)
y <- mvrnorm(n=200, mu, Sigma)
points(y)
# HDR
library(hdrcde)
hdr.boxplot.2d(y[,1], y[,2], prob=0.05, xlim=c(-10, 10), ylim=c(-10,10))
points(y)
par(c(1,1))
# fin del ejemplo
Para la gente que necesite buscar graficos interesantes en R, la pagina:
http://addictedtor.free.fr/graphiques/
contiene mucha informacion. Aqui encontre el HDR que me soluciona el
problema.
Saludos y buen fin de semana,
Pablo
----- Original Message -----
From: "Carlos J. Gil Bellosta " <gilbellosta en gmail.com>
To: "Pablo Emilio Verde" <PabloEmilio.Verde en uni-duesseldorf.de>
Sent: Thursday, July 30, 2009 7:35 PM
Subject: Re: [R-es] contorno noparametrico
Hola, ¿qué tal?
El problema, es, entiendo, asociar a "niveles" o "curvas de nivel" de
una distribución bidimensional no necesariamente normal la
probabilidad asociada a la región donde la función de densidad está
por debajo (del nivel).
Matemáticamente, dada una función de densidad f sobre RxR, saber
asociar a cada valor x en [0, Inf) la probabilidad
integral_A f(y) dy donde A es la región del plano donde f es menor que x.
Podrías muestrear X ~ f y anotar tanto los valores x como f(x).
Ordenas los f(x) y te quedas con el valor que deje a la derecha sólo
un porcentaje dado de las x obtenidas. Vamos, que te quedas con el
cuantil deseado de f(x).
Después, con contour o similares puedes recrear aproximadamente el
contorno de f al nivel que quieres.
Creo que eso valdría (dejando aparte cuestiones sobre velocidad de
convergencia y demás).
Un saludo,
Carlos J. Gil Bellosta
http://www.datanalytics.com
2009/7/30 Pablo Emilio Verde <PabloEmilio.Verde en uni-duesseldorf.de>:
>
> Hola a todos,
>
> En el ejemplo que sigue construyo una elipse de confianza del 95% basada
en
> una distribucion normal bivariada.
>
> # comienzo del ejemplo
> # parametros de la normal
> muD <- 1
> muS <- 2
>
> sdD <- 2
> sdS <- 4
> rho <- 0.7
>
> # contorno del 95%
> cc95 <- sqrt(qchisq(0.95,2))
> muSp <- muS + sdS * cc95 * cos(seq(0, 2*pi, 0.01))
> muDp <- muD + sdD * cc95 * cos(seq(0, 2*pi, 0.01) + acos(rho))
>
> plot(muDp, muSp, type="l")
>
> # simulo 200 casos
> library(MASS)
> Sigma <- matrix(c(sdD^2, rho*sdD*sdS,
> rho*sdD*sdS, sdS^2),2,2)
>
> mu <- c(muD, muS)
>
> y <- mvrnorm(n=200, mu, Sigma)
>
> points(y)
>
> # fin del ejemplo
>
>
> Conoce alguien como construir la misma elipse pero con alguna de las
> funciones de densidad no parametrica?
>
> Pablo
>
> _______________________________________________
> R-help-es mailing list
> R-help-es en r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: hdr01.pdf
Type: application/pdf
Size: 313626 bytes
Desc: no disponible
URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20090731/d60e56a5/attachment-0001.pdf>
Más información sobre la lista de distribución R-help-es