2010-12-02 8 views
10

Utilicé el accesorio modelo para ajustar la distribución binomial negativa a mis datos discretos. Como paso final, parece que necesito realizar una prueba de Kolmogrov-Smirnov para determinar si el modelo se ajusta bien a los datos. Todas las referencias que pudieran encontrar charla sobre el uso de la prueba de normalmente distribuidoscontinuas datos. ¿Puede alguien decirme si esto se puede hacer en R para datos que no se distribuyen normalmente y son discretos? (Incluso una prueba de chi-cuadrado debería hacer yo supongo, pero por favor, corríjanme si me equivoco).Kolmogorov-Smirnov o una prueba de Chi-Cuadrado para una distribución?

ACTUALIZACIÓN:

Entonces me encontré con que el paquete contiene una función vcdgoodfit que puede ser utilizado para este propósito de la siguiente manera:

library(vcd) 

# Define the data 
data <- c(67, 81, 93, 65, 18, 44, 31, 103, 64, 19, 27, 57, 63, 25, 22, 150, 
      31, 58, 93, 6, 86, 43, 17, 9, 78, 23, 75, 28, 37, 23, 108, 14, 137, 
      69, 58, 81, 62, 25, 54, 57, 65, 72, 17, 22, 170, 95, 38, 33, 34, 68, 
      38, 117, 28, 17, 19, 25, 24, 15, 103, 31, 33, 77, 38, 8, 48, 32, 48, 
      26, 63, 16, 70, 87, 31, 36, 31, 38, 91, 117, 16, 40, 7, 26, 15, 89, 
      67, 7, 39, 33, 58) 

gf <- goodfit(data, type = "nbinomial", method = "MinChisq") 
plot(gf) 

Pero después del paso de gf <- ..., R a reclamación diciendo:

Warning messages: 
1: In pnbinom(q, size, prob, lower.tail, log.p) : NaNs produced 
2: In pnbinom(q, size, prob, lower.tail, log.p) : NaNs produced 
3: In pnbinom(q, size, prob, lower.tail, log.p) : NaNs produced 

y cuando digo plot se queja:

Error in xy.coords(x, y, xlabel, ylabel, log) : 
    'x' is a list, but does not have components 'x' and 'y' 

No estoy seguro de lo que está pasando porque si fijo data a ser las siguientes:

data <- <- rnbinom(200, size = 1.5, prob = 0.8) 

todo funciona bien. ¿Alguna sugerencia?

+6

Pertenece a http://stats.stackexchange.com/ – MSalters

+0

plot (gf) funciona aquí (R 2.12.0, versión 1.2-9 de vcd). Use las opciones (warn = 2, error = recover) para convertir las advertencias en errores y luego inicie un navegador en warn/error. En algún punto del proceso de adaptación, R intenta hacer que el parámetro 'prob' de NB sea negativo ... f <- MASS :: fitdistr (datos, "binomio negativo"); diagrama (tabla (datos)/longitud (datos)); curva (dnbinom (x, tamaño = 2.354, mu = 50.8), de = 1, a = 170, n = 170, suma = VERDADERO, col = 2) indica que los datos son demasiado 'irregulares' para ajustarse bien a un NB. Comparando $ par en estos dos casos muestra que llega a respuestas razonablemente similares; las advertencias son probablemente ignorables –

Respuesta

6

Una KS-Test es solo para variables continuas, además de que debe especificar completamente la distribución que está probando. Si todavía quería hacerlo, se vería así:

ks.test(data, pnbinom, size=100, prob=0.8) 

En él se compara la función de distribución acumulativa empírica de data contra la especificada (si es que tiene sentido, probablemente depende de sus datos). Debería elegir parámetros para size y prob en base a consideraciones teóricas, la prueba no es válida si estima esos parámetros basándose en los datos.

Su problema con goodfit() podría tener que ver con sus datos, ¿está seguro de que estos son los recuentos? barplot(table(data)) parece que no está siguiendo una distribución binomial negativa, comparar, por ejemplo, con barplot(table(rnbinom(200, size = 1.5, prob = 0.8)))

Finalmente, no estoy seguro de si el enfoque de hacer una prueba de hipótesis nula después del ajuste es apropiado. Es posible que desee considerar medidas de ajuste cuantitativas que estén más allá de/basado en $ \ chi^2 $, de las cuales hay muchas (RMSEA, SRMR, ...).

Cuestiones relacionadas