[R-es] DUDA LLENAR MATRIZ CREADA
rubenfcasal
rubenfcasal en gmail.com
Jue Feb 26 13:38:17 CET 2015
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)
Más información sobre la lista de distribución R-help-es