19 votos

¿Qué es la entropía empírica?

En la definición de conjuntos típicos conjuntos (en "Elementos de la teoría de la información", cap. 7.6, p. 195), utilizamos

$$-\frac{1}{n} \log{p(x^n)}$$ como el entropía empírica de un $n$ -secuencia con $p(x^n) = \prod_{i=1}^{n}{p(x_i)}$ . Nunca me había encontrado con esta terminología. No está definida explícitamente en ninguna parte según el índice del libro.

Mi pregunta es básicamente: ¿Por qué la entropía empírica no es $-\sum_{x}{\hat p (x) \log(\hat p(x))}$ donde $\hat p(x)$ es la distribución empírica?

¿Cuáles son las diferencias y similitudes más interesantes entre estas dos fórmulas? (en términos de propiedades que comparten/no comparten).

7voto

Jonathan Arkell Puntos 4265

La entropía se define para las distribuciones de probabilidad. Cuando no se tiene una, sino sólo datos, y se introduce un estimador ingenuo de la distribución de probabilidad, se obtiene la entropía empírica. Esto es más fácil para las distribuciones discretas (multinomiales), como se muestra en otra respuesta, pero también se puede hacer para otras distribuciones por binning, etc.

Un problema de la entropía empírica es que está sesgada para las muestras pequeñas. La estimación ingenua de la distribución de la probabilidad muestra una variación extra debido al ruido del muestreo. Por supuesto, se puede utilizar un estimador mejor, por ejemplo, un previo adecuado para los parámetros multinomiales, pero conseguir que sea realmente insesgado no es fácil.

Lo anterior se aplica también a las distribuciones condicionales. Además, todo es relativo al binning (o kernelización), por lo que en realidad se tiene una especie de entropía diferencial.

2voto

Nathan Long Puntos 30303

Tienes razón - el problema era con fieldname.pop(0) - esto realmente toma el objeto en el índice 0 y lo elimina de la lista. Pero ya estás iterando a través de la lista con for field in flist . Su código debería ser en cambio:

for field in flist:
    arcpy.CalculateField_management(inTable, "cat", "!Sub_Batch!+\" \"+ !"+ field.name +"!", "PYTHON_9.3", "")
    outTable = outWKSpace + "\SUM_" + field.name
    table2 = arcpy.Frequency_analysis(inTable, outTable, "cat", "")

    intCount = arcpy.GetCount_management(outWKSpace + "\SUM_" + field.name)

    arcpy.AddMessage(field.name + ' records = ' + str(intCount))

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