[R-es] Remuestreo de Clusters

Olivier Nuñez onunez en iberstat.es
Mie Jun 24 18:55:36 CEST 2009


Jorge,

podrías dar un ejemplo concreto en Filogenia.
No estoy seguro de entender la finalidad del bootstap que aparece en  
tu código.
Intuyo que un análisis cluster jerárquico podría ser adecuado en este  
tipo de problema.
Si es así el package pvclust debería serte de ayuda.
Un saludo. Olivier

-- ____________________________________

Olivier G. Nuñez
Email: onunez en iberstat.es
Tel : +34 663 03 69 09
Web: http://www.iberstat.es

____________________________________




El 24/06/2009, a las 17:50, Jorge Ivan Velez escribió:

> Buenos dias para todos,
> Estoy trabajando en una aplicación que involucra análisis de clusters.
> Básicamente el objetivo es determinar a qué cluster pertenece cada
> observación de una matriz de datos "mydata" y luego generar muestras
> aleatorias de los mismos datos para determinar la proporción de  
> veces que
> cada observación es clasificada en el cluster k.
>
> Este tipo de análisis es muy común en aplicaciones de Phylogeny <
> http://en.wikipedia.org/wiki/Phylogeny>
>
> Suponiendo que el método de cluster a utilizar es fijo y que de alguna
> manera se determinó que el número de clusters óptimo, conocen alguna
> libreria en R que permita hacer lo que describo?
>
> Este es un ejemplo en R en el que utilizo ksmeans y 7 clusters
>
> # Data set
> set.seed(123)
> mydata <- matrix(rnorm(100*10), ncol=10)
> colnames(mydata) <- paste('X', 1:10, sep="")
> rownames(mydata) <- paste('s', 1:100, sep="")
>
> # Función para determinar el cluster al que
> # pertenece cada muestra s_i
> foo <- function(X, k = 7){
>       x <- X[sample(nrow(X)),]
>       rx <- rownames(x)
>       cluster <- kmeans(x, k)$cluster
>       names(cluster) <- rx
>       cluster[rownames(X)]
>          }
>
> # Repitiendo foo 1000 veces
> N <- 1000
> res <- replicate(N, foo(mydata))
>
> # Dandole un nuevo formato a la salida de res
> grupos <- t(apply(res, 1, function(x){
>               x <- factor(x, levels = 1:7)
>               table(x)
>                }
>       )
>  ) /1000
> head(grupos)
>
> Al trabajar con datos completamente aleatorios, se espera que las
> proporciones de los grupos sea similares. En este caso el valor  
> cluster
> donde la proporción es mayor puede ser obtenido como:
>
> apply(grupos, 1, which.max)
>
>
> Muchas gracias,
>
> Jorge Ivan Velez
>
> 	[[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