[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