Víctor Nalda Castellet
2014-Oct-15 07:59 UTC
[R-es] Test K-S con distribuciones LogNormales
Hola a todos, ¿que tal? Os escribo porque llevo varios días con la siguiente duda: quiero realizar el test de K-S para dos distribuciones lognormales, una de ellas con datos agrupados (bucketizados). library(stats) # Definimos las variables n <- 1000000 # tamaño de la muestra mean <- 0 # media de la dist. normal sd <- 1 # desviación típica de la dist. normal nbucket <- 10 # numero de buckets # Generamos la muestra de tamaño n sample <- sort(rlnorm(n, meanlog = mean, sdlog = sd)) # Función de distribución df <- plnorm(sample, meanlog = mean, sdlog = sd) lognorm1 <- data.frame(sample=sample, distfun=df) # Gráfica de la función de distribución sin bucketizar plot(lognorm1, type = "l", col = "red") # Bucketización - Muestra bucketizada library(plyr) dt <- data.frame(sample=sample, bucket=rep(1:nbucket, each = n/nbucket)) sample_bucket <- ddply(dt,~bucket,summarise,mean=mean(sample)) # Función de distribución bucketizada dfb <- plnorm(sample_bucket$mean, meanlog = mean, sdlog = sd) lognorm2 <- data.frame(sample=sample_bucket$mean, distfun=dfb) par(new=TRUE) points(lognorm2, col = "blue") ks.test(lognorm1$sample, lognorm2$sample) # Obtengo p-valor=1 El problema es que obtengo un p-valor de 1, y creo que debería obtener un p-valor bastante menor. ¿Sabéis lo que está ocurriendo? Creo que si una de las distribuciones tiene 1.000.000 de datos y la otra tiene 10 datos (es la aproximación de la otra), como no se parecen en nada debería obtener un p-valor muy malo y no es así: Two-sample Kolmogorov-Smirnov test data: lognorm1$sample and lognorm2$sample D = 0.0683, p-value = 1 alternative hypothesis: two-sided Respecto al tema de bucketizar, lo tengo que realizar de esa forma. Un saludo, y muchas gracias. -- Víctor Nalda Castellet [[alternative HTML version deleted]]