Hola. Llevo poco tiempo con R y estoy atascado en un problemilla, a ver si podéis ayudarme. Estoy trabajando con una base de datos sobre personalidad en diferentes especies de aves. Esta base tiene datos de más de 7000 individuos y me gustaría crear un bucle mediante el cual realizar un test de Kruskal Wallis por cada especie (quiero ver si los comportamientos son consistentes dentro de cada especie). La base de datos que estoy (llamada birddata) utilizando sigue este modelo: Especie (factor) Audacia (numérico) Numero (factor) Cotorra 1.2 1 Cotorra 0.8 2 Cotorra 1.5 3 Buitre 2.0 4 Buitre 1.8 5 Buitre 2.5 6 Gorrión 1.5 7 Gorrión 1.7 8 Gorrión 1.3 9 Gorrión 1.9 10 Para ello he utilizado el siguiente código (el test utilizo la columna de “Numero” para que cada dato se tome como un grupo independiente y poder compararlos). “rep.var=matrix(nrow = length(names(table(birddata$especie))), ncol = 1) for (i in 1:length(names(table(birddata$especie)))) { rep.var[i,1]=na.omit(kruskal.test(Audacia~Numero, data = birddata)) }” Y me da el siguiente error “Error en rep.var[i, 1] = na.omit(kruskal.test(strangeraggr ~ num, data fdata)) : número de items para para sustituir no es un múltiplo de la longitud del reemplazo” He intentando buscar cómo solucionarlo, pero no he encontrado ninguna manera satisfactoria que no me de otro errordiferente. A ver si me podéis ayudar. Muchas gracias por adelantado Un saludo [[alternative HTML version deleted]]
Carlos J. Gil Bellosta
2014-Jan-20 23:49 UTC
[R-es] Creación de un bucle con test Kruskal Wallis
Hola, ¿qué tal? No quieres un bucle. Lo que quieres es: 1) Poder aplicar tu prueba a un bloque en el que solo hay una especie. 2) Aplicar (1) a los bloques uno por uno de tu tabla. 3) Recomponer los datos resultantes (¿en una tabla?). Lo que tienes que hacer es construir una función que resuelva (1). Una vez que la tengas, usa alguna de las funciones del paquete plyr (casi seguro que quieres ddply). Mira en http://plyr.had.co.nz/ y el artículo que aparece en a la derecha en esa página. Los pasos (2) y (3) son una única línea de código. Un saludo, Carlos J. Gil Bellosta http://www.datanalytics.com El día 21 de enero de 2014, 0:15, Manuel Azcárate <mazcarategarcia en gmail.com> escribió:> Hola. > > > Llevo poco tiempo con R y estoy atascado en un problemilla, a ver si > podéis ayudarme. Estoy trabajando con una base de datos sobre personalidad > en diferentes especies de aves. Esta base tiene datos de más de 7000 > individuos y me gustaría crear un bucle mediante el cual realizar un test > de Kruskal Wallis por cada especie (quiero ver si los comportamientos son > consistentes dentro de cada especie). > > > La base de datos que estoy (llamada birddata) utilizando sigue este modelo: > > > Especie (factor) Audacia (numérico) Numero > (factor) > > Cotorra 1.2 > 1 > > Cotorra 0.8 > 2 > > Cotorra 1.5 > 3 > > Buitre 2.0 > 4 > > Buitre 1.8 > 5 > > Buitre 2.5 > 6 > > Gorrión 1.5 > 7 > > Gorrión 1.7 > 8 > > Gorrión 1.3 > 9 > > Gorrión 1.9 > 10 > > > > > Para ello he utilizado el siguiente código (el test utilizo la columna de > ?Numero? para que cada dato se tome como un grupo independiente y poder > compararlos). > > > ?rep.var=matrix(nrow = length(names(table(birddata$especie))), ncol = 1) > > for (i in 1:length(names(table(birddata$especie)))) { > > rep.var[i,1]=na.omit(kruskal.test(Audacia~Numero, data = birddata)) > > }? > > > Y me da el siguiente error > > > ?Error en rep.var[i, 1] = na.omit(kruskal.test(strangeraggr ~ num, data > fdata)) : > > número de items para para sustituir no es un múltiplo de la longitud del > reemplazo? > > > He intentando buscar cómo solucionarlo, pero no he encontrado ninguna > manera satisfactoria que no me de otro errordiferente. A ver si me podéis > ayudar. > > > Muchas gracias por adelantado > > Un saludo > > [[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 >
José Trujillo Carmona
2014-Jan-21 10:34 UTC
[R-es] Creación de un bucle con test Kruskal Wallis
Yo utilizaría el paquete agricolae. Tiene un comando kruskal que además del test de kruskal-wallis te incluye las comparaciones múltiples. Para cada especie solo tendrías que ejecutar el comando kruskal. De todos modos. No consigo saber de tu planteamiento además de la especie cuál es el factor que quieres relacionar con la variable numérica (¿siempre audacia?). En el ejemplo que pones el factor número no aparece repetido nunca y por tanto no puede ser un factor que agrupe de algún modo a los individuos para calcula la mediana de cada nivel y después comparar las medianas de estos niveles. Saludos. El 21/01/14 00:15, Manuel Azcárate escribió:> Hola. > > > Llevo poco tiempo con R y estoy atascado en un problemilla, a ver si > podéis ayudarme. Estoy trabajando con una base de datos sobre personalidad > en diferentes especies de aves. Esta base tiene datos de más de 7000 > individuos y me gustaría crear un bucle mediante el cual realizar un test > de Kruskal Wallis por cada especie (quiero ver si los comportamientos son > consistentes dentro de cada especie). > > > La base de datos que estoy (llamada birddata) utilizando sigue este modelo: > > > Especie (factor) Audacia (numérico) Numero > (factor) > > Cotorra 1.2 > 1 > > Cotorra 0.8 > 2 > > Cotorra 1.5 > 3 > > Buitre 2.0 > 4 > > Buitre 1.8 > 5 > > Buitre 2.5 > 6 > > Gorrión 1.5 > 7 > > Gorrión 1.7 > 8 > > Gorrión 1.3 > 9 > > Gorrión 1.9 > 10 > > > > > Para ello he utilizado el siguiente código (el test utilizo la columna de > "Numero" para que cada dato se tome como un grupo independiente y poder > compararlos). > > > "rep.var=matrix(nrow = length(names(table(birddata$especie))), ncol = 1) > > for (i in 1:length(names(table(birddata$especie)))) { > > rep.var[i,1]=na.omit(kruskal.test(Audacia~Numero, data = birddata)) > > }" > > > Y me da el siguiente error > > > "Error en rep.var[i, 1] = na.omit(kruskal.test(strangeraggr ~ num, data > fdata)) : > > número de items para para sustituir no es un múltiplo de la longitud del > reemplazo" > > > He intentando buscar cómo solucionarlo, pero no he encontrado ninguna > manera satisfactoria que no me de otro errordiferente. A ver si me podéis > ayudar. > > > Muchas gracias por adelantado > > Un saludo > > [[alternative HTML version deleted]] > > > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es[[alternative HTML version deleted]]
Hola, tenemos como equivalencia no paramétrica al Anova de 1 vía el test Kruskal Wallis, pero ¿existe un test no paramétrico equivalente al Anova de 2 vías? Gracias. Saludos. -- Sec. Apoyo Estadístico. Servicio de Apoyo a la Investigación (SAI) Vicerrectorado de Investigación e Internacionalización. Universidad de Murcia Edif. SACE. Campus de Espinardo. 30100 Murcia @. mariaelvira.ferre en um.es T. 868 88 7315 F. 868 88 7302 www.um.es/sai www.um.es/ae ---
Reasonably Related Threads
- Contrastes de Rangos Alineados
- Creación de un bucle con test Kruskal Wallis
- Duda sobre cómo analizar un experimento factorial con algoritmos de extracción de características, clustering y clasificación como factores
- Duda sobre cómo analizar un experimento factorial con algoritmos de extracción de características, clustering y clasificación como factores
- Interpretación de coeficientes en un cox proportional hazards con variable strata