Buena tarde, Estoy llevando a cabo un trabajo y no encuentro la forma de llenar una matriz con el p_value y un estadístico calculado. Un poco mas detallado, tengo muestras aleatorias, calculo por ejemplo la prueba t, wilcoxon, etc y requiero llevar por una parte los p_value de k muestras a una matriz creada anteriormente y por otro lado el valor del estadístico de las mismas k muestras a otra matriz creada anteriormente. Las k muetras estarían determinadas por un ciclo. Agradezco me puedan ayudar con el tema que es de mucha urgencia. Saludos, David C. [[alternative HTML version deleted]]
Estimado David Contreras Mi respuesta es genérica, primero no se si usted se refiere a matriz o un data.frame, no por confusión pero si por como se trabaja en R (donde prefiere almacenar los resultados de). La segunda parte es sobre los resultados que desea almacenar en lo que usted dice matriz, en forma genérica puede usar $ y el nombre correspondiente, coloco un pequeño ejemplo según yo pienso que podría serle útil. x <- c(1,2,3,4,5,6) y <- c(3,4,5,3,2,5) datos <- data.frame(x,y) modelo <-lm(datos) # para ver que puedo "pedir" str(modelo) # del modelo "pido" coefficients modelo$coefficients El 25 de febrero de 2015, 16:14, David Contreras <davidcontreras00 en gmail.com> escribió:> Buena tarde, > > Estoy llevando a cabo un trabajo y no encuentro la forma de llenar una > matriz con el p_value y un estadístico calculado. > Un poco mas detallado, tengo muestras aleatorias, calculo por ejemplo la > prueba t, wilcoxon, etc y requiero llevar por una parte los p_value de k > muestras a una matriz creada anteriormente y por otro lado el valor del > estadístico de las mismas k muestras a otra matriz creada anteriormente. > Las k muetras estarían determinadas por un ciclo. > > Agradezco me puedan ayudar con el tema que es de mucha urgencia. > > Saludos, > > David C. > > [[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 >[[alternative HTML version deleted]]
Hola, A falta de que puedas dar más detalles con un ejemplo con el que podríamos entender mejor el caso, si te he entendido bien el pseudo-código sería algo así como esto. #------------------------- # Entiendo que el ciclo que comentas es con un bucle "for". # Vamos a guardar en cada iteración un p-value y el valor de Wilcoxon-test matrizConestadisticos <- 0 for(i in ...) { # Guardo la iteración matrizConestadisticos[ i,1] <- i #... a) aquí estaría tu cálculo del que extraes el p-value que guardamos en "matrizConestadisticos" matrizConestadisticos[ i, 2] <- valor.p.value #... b) aquí estaría tu cálculo del wilcoxon-test... que también guardamos... matrizConestadisticos[ i, 3] <- varlos.wilcoxon } #fin del bucle for #--------------------------- Saludos, Carlos Ortega www.qualityexcellence.es El 25 de febrero de 2015, 20:14, David Contreras <davidcontreras00 en gmail.com> escribió:> Buena tarde, > > Estoy llevando a cabo un trabajo y no encuentro la forma de llenar una > matriz con el p_value y un estadístico calculado. > Un poco mas detallado, tengo muestras aleatorias, calculo por ejemplo la > prueba t, wilcoxon, etc y requiero llevar por una parte los p_value de k > muestras a una matriz creada anteriormente y por otro lado el valor del > estadístico de las mismas k muestras a otra matriz creada anteriormente. > Las k muetras estarían determinadas por un ciclo. > > Agradezco me puedan ayudar con el tema que es de mucha urgencia. > > Saludos, > > David C. > > [[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 >-- Saludos, Carlos Ortega www.qualityexcellence.es [[alternative HTML version deleted]]
David, No hay mucho detalle, pero aqui van algunas ideas: 1. Construye una funcion que tome como argumentos los parametros con los que generas tus muestras y construye una lista con los resultados. Cada componente de la lista contendra las *B *muestras sobre las cuales vas a realizar los analisis. 2. Utiliza lapply() para tomar cada entrada de la lista creada en 1. y aplica las pruebas que necesitas. Esta funcion debe tomar como argumentos (posiblemente) un data.frame() y realizar las pruebas. Por supuesto dentro de esa funcion solo extraerias los estadisticos de prueba y los valores p asociados a t.test(), wilcox.test, etc... 3. Usa do.call(rbind, L) para organizar los resultados. 4. Usa write.table() para exportarlos. Espero sea de ayuda. Saludos, Jorge.- 2015-02-26 6:14 GMT+11:00 David Contreras <davidcontreras00 en gmail.com>:> Buena tarde, > > Estoy llevando a cabo un trabajo y no encuentro la forma de llenar una > matriz con el p_value y un estadístico calculado. > Un poco mas detallado, tengo muestras aleatorias, calculo por ejemplo la > prueba t, wilcoxon, etc y requiero llevar por una parte los p_value de k > muestras a una matriz creada anteriormente y por otro lado el valor del > estadístico de las mismas k muestras a otra matriz creada anteriormente. > Las k muetras estarían determinadas por un ciclo. > > Agradezco me puedan ayudar con el tema que es de mucha urgencia. > > Saludos, > > David C. > > [[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 >[[alternative HTML version deleted]]
Hola David, Puedes hacer como ya comentaron en las otras respuestas. Pero por si sirve de utilidad, pego al final parte de un código que empleo para ilustrar la repetición de contrastes en simulación. Está con un bucle y guardando en vectores, si se quisiera modificar para obtener una matriz y emplear lapply (o sapply), tendrías que crear una función del tipo: fun.test <- function(muestra) unlist(test(muestra)[c('statistic','p.value')]) reemplazando test por el contraste que te interesa (y suponiendo que devuelve el objeto estándar de clase htest). sapply(muestras, fun.test) podría ser lo que buscas (suponiendo que muestras es una lista con los datos en cada componente). Para que conste, para ciertas cosas yo no soy reacio a emplear bucles en lugar de applies... Un saludo, Rubén. # ------------------------------------------------------------------ # Repetición de contrastes # ------------------------------------------------------------------ # ------------------------------------------------------------------ # Valores iniciales set.seed(1) # Fijar semilla para reproductibilidad n <- 500 nsim <- 1000 estadistico <- numeric(nsim) pvalor <- numeric(nsim) # ------------------------------------------------------------------ # Realizar contrastes for(isim in 1:nsim) { u <- runif(n) tmp <- ks.test(u, "punif", min=0, max=1) estadistico[isim] <- tmp$statistic pvalor[isim] <- tmp$p.value } #Probar a cambiar por u <- rnorm(n) y tmp <- ks.test(u, "pnorm", mean = mean(u), sd = sd(u)) # Mantengo algo del resto del código por si resulta de interés... # ------------------------------------------------------------------ # Proporción de rechazos cat("\nProporción de rechazos al 1% =", mean(pvalor < 0.01), "\n") cat("Proporción de rechazos al 5% =", mean(pvalor < 0.01), "\n") cat("Proporción de rechazos al 10% =", mean(pvalor < 0.01), "\n") # ------------------------------------------------------------------ # Análisis del estadístico contraste # Histograma hist(estadistico, freq=FALSE) #... # ------------------------------------------------------------------ # Análisis de los p-valores # (si todo 'correcto' con distribución uniforme) # Histograma hist(pvalor, freq=FALSE) curve(dunif(x,0,1), add=TRUE) #abline(h=1) # Test de Kolmogorov-Smirnov ks.test(pvalor, "punif", min=0, max=1)