25 votos

La bondad de ajuste de histogramas 2D

Tengo dos conjuntos de datos que representan las estrellas de parámetros: se observa una uno y modelado. Con estos conjuntos puedo crear lo que se llama una de dos colores en el diagrama (TCD). Un ejemplo puede ser visto aquí:

histogramas

Un ser a los datos observados y B de los datos extraídos de la modelo (no importa las líneas negras, los puntos representan los datos) sólo tengo un Un diagrama, pero puede producir tantas diferentes B diagramas de como quiero, y lo que necesito es mantener el que mejor se adapta a Una.

Así que lo que necesito es una manera confiable para comprobar la bondad de ajuste del diagrama B (modelo) para el diagrama de Un (observado).

Ahora, lo que yo hago es crear un histograma 2D o cuadrícula (que es lo que yo llamo, tal vez tiene un nombre propio) para cada diagrama de agrupamiento ambos ejes (100 contenedores para cada uno) Luego ir a través de cada celda de la cuadrícula y me parece que la diferencia absoluta en cuenta entre Un y B para que la célula particular. Después de haber pasado por todas las células, me suma los valores de cada celda y así termino con un único positivo parámetro que representa la bondad de ajuste ($gf$) entre Un y B. El más cercano a cero, mejor es el ajuste. Básicamente, esto es lo que el parámetro se ve así:

$gf = \sum_{ij} |a_{ij}-b_{ij}|$ ; en caso de $a_{ij}$ es el número de estrellas en el diagrama de Un particular de la célula (determinado por $ij$) y $b_{ij}$ es el número de B.

Esto es lo que los $(a_{ij}-b{ij})$ diferencias en el recuento en cada celda de la cuadrícula puedo crear (tenga en cuenta que no lo estoy usando valores absolutos de $(a_{ij}-b{ij})$ en esta imagen, pero yo hacer uso de ellos a la hora de calcular el $gf$ parámetro):

hess

El problema es que he sido advertido de que esto podría no ser un buen estimador, principalmente porque, aparte de decir que este ajuste es mejor que este otro, ya que el parámetro es menor, yo realmente no puedo decir nada más.


Importante:

(gracias @PeterEllis por traer este)

1 - los Puntos en B no están relacionados con el uno-a-uno con los puntos en Una. Eso es una cosa importante para tener en mente cuando se busca el mejor ajuste: el número de puntos en Un y B es no necesariamente el mismo y la bondad de ajuste prueba también debe dar cuenta de esta discrepancia y tratar de minimizarlo.

2 - El número de puntos en cada B conjunto de datos (modelo de salida) yo trate de ajustarse a Un es no fijo.


He visto el Chi-Cuadrado de la prueba que se utiliza en algunos casos:

$\sum_i (O_i-E_i)^2/E_i$; en caso de $O_i$ es la frecuencia observada (modelo) y $E_i$ es la frecuencia esperada (la observación).

pero el problema es: ¿qué debo hacer si $E_i$ es cero? Como se puede ver en la imagen de arriba, si puedo crear una cuadrícula de los diagramas en ese rango habrá un montón de células de donde se $E_i$ es cero.

También, he leído algunas personas recomiendan un registro de probabilidad de Poisson de la prueba que se aplicará en casos como este, donde los histogramas están involucrados. Si esto es correcto me gustaría realmente agradecería si alguien me pudiera instruir sobre cómo usar la prueba para este caso en particular (recuerde, mi conocimiento de la estadística es bastante pobre, así que por favor mantenga es tan simple como usted puede :)

16voto

Ted Puntos 854

OK, he revisado exhaustivamente esta respuesta. Creo, más bien, que el agrupamiento de sus datos y la comparación de los recuentos en cada bandeja, la sugerencia que le había enterrado en mi respuesta original de la instalación de un 2d núcleo de la estimación de la densidad y la comparación de ellos es una idea mucho mejor. Mejor aún, hay una función de kde.de prueba() en Tarn Duong del ks paquete de R que hace esto fácil como pastel.

Consulte la documentación de kde.examen para obtener más detalles y los argumentos que usted puede ajustar. Pero básicamente se hace casi exactamente lo que usted desea. El p valor que devuelve es la probabilidad de la generación de los dos conjuntos de datos que se comparan bajo la hipótesis nula de que éstas se generan de la misma distribución . De modo que el mayor es el p-valor, mejor es el ajuste entre a y B. Véase el ejemplo de abajo donde esta coge fácilmente que B1 y Una son diferentes, pero que B2 y son plausiblemente la misma (que es la forma en que se genera).

# generate some data that at least looks a bit similar
generate <- function(n, displ=1, perturb=1){
    BV <- rnorm(n, 1*displ, 0.4*perturb)
    UB <- -2*displ + BV + exp(rnorm(n,0,.3*perturb))
    data.frame(BV, UB)
}
set.seed(100)
A <- generate(300)
B1 <- generate(500, 0.9, 1.2)
B2 <- generate(100, 1, 1)
AandB <- rbind(A,B1, B2)
AandB$type <- rep(c("A", "B1", "B2"), c(300,500,100))

# plot
p <- ggplot(AandB, aes(x=BV, y=UB)) + facet_grid(~type) + 
    geom_smooth() +     scale_y_reverse() + theme_grey(9)
win.graph(7,3)
p +geom_point(size=.7)

enter image description here

> library(ks)
> kde.test(x1=as.matrix(A), x2=as.matrix(B1))$pvalue
[1] 2.213532e-05
> kde.test(x1=as.matrix(A), x2=as.matrix(B2))$pvalue
[1] 0.5769637

MI RESPUESTA ORIGINAL A CONTINUACIÓN, SE CONSERVAN SÓLO PORQUE EN LA ACTUALIDAD HAY ENLACES DESDE OTROS LUGARES QUE NO TIENEN SENTIDO

Primero, puede haber otras maneras de ir sobre esto.

Justel et al han puesto en marcha un multivariante de la extensión de la prueba de Kolmogorov-Smirnov de bondad de ajuste, que creo que podría ser usado en su caso, para probar qué tan bien cada conjunto de datos del modelo de ajuste a la original. No podía encontrar una implementación de este (por ejemplo, en R), pero tal vez no me parece lo suficientemente duro.

Alternativamente, puede haber una forma de hacer esto mediante la colocación de una cópula para los datos originales y para cada conjunto de datos del modelo y, a continuación, la comparación de los modelos. Existen implementaciones de este enfoque en R y en otros lugares, pero no estoy muy familiarizada con ellos así que no lo he probado.

Pero para hacer frente a su pregunta directamente, el enfoque que ha tomado es razonable. Varios de los puntos sugeridos:

  • A menos que el conjunto de datos es más grande de lo que parece, yo creo que un 100 x 100 rejilla es demasiado muchos contenedores. Intuitivamente, puedo imaginar que la conclusión de los diversos conjuntos de datos son más diferentes de lo que son simplemente debido a la precisión de las bandejas significa que usted tiene un montón de contenedores con un bajo número de puntos en ellos, incluso cuando la densidad de datos es alta. Sin embargo, esto al final es una cuestión de criterio. Me volvería a comprobar los resultados con diferentes enfoques para el agrupamiento.

  • Una vez que usted ha hecho su agrupamiento y de convertir los datos en (en efecto) de una tabla de contingencia de la cuenta con dos columnas y número de filas igual al número de contenedores (10.000 en su caso), tienes un problema de comparar las dos columnas de la cuenta. Una prueba de la Chi cuadrado o la instalación de algún tipo de Poisson de que el modelo funcione, pero como usted dice hay incomodidad debido a la gran cantidad de cero cuenta. Cualquiera de estos modelos son normalmente ajuste por la minimización de la suma de los cuadrados de la diferencia, ponderado por el inverso del número esperado de cargos; cuando este se aproxima a cero puede causar problemas.

Edit: el resto de esta respuesta yo ahora ya no creen para ser un enfoque apropiado.

Creo que la prueba exacta de Fisher puede no ser útil o apropiado en esta situación, donde los marginales totales de las filas en las cruzadas no son fijos. Se le dará una respuesta plausible, pero me resulta difícil compatibilizar su uso con su original derivación de diseño experimental. Me estoy dejando el original de la respuesta aquí, así que los comentarios y el seguimiento de la pregunta tiene sentido. Además, aún puede ser una manera de responder a la OP del enfoque deseado de agrupamiento de los datos y la comparación de los contenedores por parte de algunos test basado en la absoluta media o diferencias cuadráticas. Un enfoque de este tipo todavía el uso de la $n_g\times 2$ cross-tab se hace referencia a continuación y prueba de independencia es decir buscando un resultado donde la columna tuvo la misma proporción que la columna B.

Sospecho que una solución para el problema anterior sería el uso de la prueba exacta de Fisher, aplicándola a su $n_g \times 2$ tabulación cruzada, donde $n_g$ es el número total de contenedores. Aunque el cálculo no es práctico debido a que el número de filas en la tabla, usted puede obtener una buena estimación de la p-valor utilizando la simulación de Monte Carlo (la R de la implementación de Fisher prueba da esto como una opción para las tablas que son más grandes que 2 x 2 y sospecho que lo hacen otros paquetes). Estos valores de p son la probabilidad de que el segundo conjunto de datos (a partir de uno de sus modelos) tienen la misma distribución a través de las bandejas como la original. Por lo tanto el más alto es el p-valor, mejor es el ajuste.

He simulado algunos datos a tener un aspecto un poco como el suyo y se encontró que este enfoque era muy eficaz en la identificación de cuáles de mis "B" conjuntos de datos fueron generados a partir del mismo proceso como "Un", y que eran ligeramente diferentes. Sin duda más eficaz que el ojo desnudo.

  • Con este enfoque de la prueba de la independencia de las variables en un $n_g \times 2$ tabla de contingencia, no importa que el número de puntos en Una es diferente de la de B (aunque tenga en cuenta que esto es un problema si se utiliza sólo la suma de las diferencias absolutas o el cuadrado de las diferencias, como originalmente proponer). Sin embargo, es importante que cada una de sus versiones de B tiene un número diferente de puntos. Básicamente, mayor B conjuntos de datos tienen una tendencia a volver menor p-valores. No puedo pensar en varias soluciones posibles a este problema. 1. Usted podría reducir su B conjuntos de datos del mismo tamaño (el tamaño de la más pequeña de tus B conjuntos), tomando una muestra aleatoria de tamaño de todos los B establece que son más grandes que el tamaño. 2. Usted podría primer ajuste de dos dimensiones núcleo de la estimación de la densidad para cada uno de sus B conjuntos, y luego simular datos de los que estiman que es igual tamaño. 3. usted podría utilizar algún tipo de simulación a trabajar fuera de la relación de los valores de p para el tamaño y el uso que de "corregir" los valores de p que se obtiene de la anterior procedimiento, a fin de que sean comparables. Probablemente hay otras alternativas. Que uno lo hacen dependerá de cómo el B los datos se han generado, cómo los diferentes tamaños, etc.

Espero que ayude.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X