[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