Disminuci贸n del tama帽o de la muestra de datos experimentales sin p茅rdida de informaci贸n.



驴Cu谩l es el problema de los histogramas de datos experimentales?


La base de la gesti贸n de la calidad del producto de cualquier empresa industrial es la recopilaci贸n de datos experimentales con su posterior procesamiento.

El procesamiento inicial de los resultados experimentales implica comparar las hip贸tesis sobre la ley de la distribuci贸n de datos, que describe, con el error m谩s peque帽o, una variable aleatoria sobre la muestra observada.

Para esto, la muestra se presenta en forma de histograma que consiste en kcolumnas construidas a intervalos de longitud d.

La identificaci贸n de la forma de la distribuci贸n de los resultados de medici贸n tambi茅n requiere una serie de problemas cuya eficacia de soluci贸n difiere para diferentes distribuciones (por ejemplo, utilizando el m茅todo de m铆nimos cuadrados o calculando las estimaciones de entrop铆a).

Adem谩s, la identificaci贸n de la distribuci贸n tambi茅n es necesaria porque la dispersi贸n de todas las estimaciones (desviaci贸n est谩ndar, exceso, curtosis, etc.) tambi茅n depende de la forma de la ley de distribuci贸n.

El 茅xito de identificar la forma de distribuci贸n de los datos experimentales depende del tama帽o de la muestra y, si es peque帽o, las caracter铆sticas de distribuci贸n est谩n enmascaradas por la aleatoriedad de la muestra misma. En la pr谩ctica, no es posible proporcionar un tama帽o de muestra grande, por ejemplo, m谩s de 1000, por varias razones.

En tal situaci贸n, es importante distribuir los datos de la muestra de la mejor manera en los intervalos, cuando la serie de intervalos es necesaria para posteriores an谩lisis y c谩lculos.

Por lo tanto, para una identificaci贸n exitosa, es necesario resolver el problema de asignar el n煤mero de intervalos k

A. Hald en el libro [1] convence ampliamente de que hay un n煤mero 贸ptimo de intervalos de agrupaci贸n cuando la envolvente escalonada del histograma construido en estos intervalos est谩 m谩s cerca de la curva de distribuci贸n uniforme de la poblaci贸n general.

Uno de los signos pr谩cticos de acercarse al 贸ptimo es la desaparici贸n de las inmersiones en el histograma, y 鈥嬧媗uego la mayor k se considera cercana al 贸ptimo, en el que el histograma a煤n conserva un car谩cter uniforme.

Obviamente, el tipo de histograma depende de la construcci贸n de intervalos de pertenencia a una variable aleatoria, sin embargo, incluso en el caso de una partici贸n uniforme, todav铆a no se dispone de un m茅todo satisfactorio para esta construcci贸n.

La partici贸n, que podr铆a considerarse correcta, lleva al hecho de que el error de aproximaci贸n por la funci贸n constante por partes de la densidad de distribuci贸n supuestamente continua (histograma) ser谩 m铆nimo.

Las dificultades son causadas por el hecho de que la densidad estimada es desconocida; por lo tanto, el n煤mero de intervalos afecta fuertemente la forma de la distribuci贸n de frecuencia de la muestra final.

Para una longitud de muestra fija, la ampliaci贸n de los intervalos de partici贸n conduce no solo a un refinamiento de la probabilidad emp铆rica de entrar en ellos, sino tambi茅n a una p茅rdida inevitable de informaci贸n (tanto en el sentido general como en el sentido de la curva de distribuci贸n de densidad de probabilidad), por lo tanto, con una ampliaci贸n injustificada adicional, la distribuci贸n estudiada se suaviza demasiado. .

Una vez que ha surgido, la tarea de dividir 贸ptimamente el rango bajo el histograma no desaparece del campo de visi贸n de los especialistas, y hasta que aparezca la 煤nica opini贸n establecida sobre su soluci贸n, la tarea seguir谩 siendo relevante.

Elecci贸n de criterios para evaluar la calidad del histograma de datos experimentales.


El criterio de Pearson, como se sabe, requiere dividir la muestra en intervalos: en ellos se eval煤a la diferencia entre el modelo adoptado y la muestra comparada.

 chi2= sumj=1m frac(EjMj)2Mj

donde: Ej- frecuencias experimentales (nj); Mj- valores de frecuencia en la misma columna; n煤mero m de columnas de histograma.

Sin embargo, la aplicaci贸n de este criterio en el caso de intervalos de longitud constante, generalmente utilizados para construir histogramas, es ineficiente. Por lo tanto, en los trabajos sobre la efectividad del criterio de Pearson, los intervalos se consideran no con la misma longitud, sino con la misma probabilidad de acuerdo con el modelo aceptado.

En este caso, sin embargo, el n煤mero de intervalos de igual longitud y el n煤mero de intervalos de igual probabilidad difieren varias veces (con la excepci贸n de una distribuci贸n igualmente probable), lo que permite dudar de la fiabilidad de los resultados obtenidos en [2].

Como criterio de proximidad, es aconsejable utilizar el coeficiente de entrop铆a, que se calcula de la siguiente manera [3]:

ke= fracdn2 sigma10 beta

 beta= frac1n sumi=1mnilg(ni)

donde: ni- el n煤mero de observaciones en el intervalo i-茅simo i=0,...,m

Algoritmo para evaluar la calidad del histograma de datos experimentales utilizando el coeficiente de entrop铆a y el m贸dulo numpy.histogram


La sintaxis para usar el m贸dulo es la siguiente [4]:

numpy.histogram (a, bins = m, range = None, normed = None, pesos = Ninguno, densidad = Ninguno)

Consideraremos m茅todos para encontrar el n煤mero 贸ptimo m de intervalos de divisi贸n de histograma implementados en el m贸dulo numpy.histogram:

'auto' : clasificaciones m谩ximas de 'sturges' y 'fd' , proporciona un buen rendimiento;
'fd' (Freedman Diaconis Estimator) : un evaluador confiable (resistente a las emisiones) que tiene en cuenta la variabilidad y el tama帽o de los datos;
'doane' : una versi贸n mejorada de la estimaci贸n de sturges que funciona con mayor precisi贸n con conjuntos de datos con una distribuci贸n no normal;
'scott' es un evaluador menos confiable que tiene en cuenta la variabilidad y el tama帽o de los datos;
'piedra' : el evaluador se basa en una verificaci贸n cruzada de la estimaci贸n del cuadrado del error, puede considerarse como una generalizaci贸n de la regla de Scott;
'arroz' : el evaluador no tiene en cuenta la variabilidad, sino solo el tama帽o de los datos, a menudo sobreestima el n煤mero de intervalos requeridos;
'sturges' : el m茅todo (por defecto), teniendo en cuenta solo el tama帽o de los datos, es 贸ptimo solo para datos gaussianos y subestima el n煤mero de intervalos para grandes conjuntos de datos no gaussianos;
'sqrt' es el estimador de ra铆z cuadrada para el tama帽o de datos utilizado por Excel y otros programas para c谩lculos r谩pidos y f谩ciles de la cantidad de intervalos.

Para comenzar la descripci贸n del algoritmo, adaptamos el m贸dulo numpy.histogram () para calcular el coeficiente de entrop铆a y el error de entrop铆a:

from numpy import* def diagram(a,m,n): z=histogram(a, bins=m) if type(m) is str:#       m=len(z[0]) y=z[0] d=z[1][1]-z[1][0]#   h=0.5*d*n*10**(-sum([w*log10(w) for w in y if w!=0])/n)#  ke=h/std (a)#    (1). return ke,h 


Ahora considere las etapas principales del algoritmo:

1) Formamos una muestra de control (en adelante denominada "muestra grande") que cumple los requisitos para el error en el procesamiento de datos experimentales . A partir de una muestra grande, al eliminar todos los miembros impares, formamos una muestra m谩s peque帽a (en adelante denominada "muestra peque帽a");

2) Para todos los evaluadores 'auto', 'fd', 'doane', 'scott', 'stone', 'rice', 'sturges', 'sqrt' calculamos el coeficiente de entrop铆a ke1 y el error h1 para una muestra grande y el coeficiente de entrop铆a ke2 y el error h2 para una muestra peque帽a, as铆 como el valor absoluto de la diferencia - abs (ke1-ke2);

3) Controlando los valores num茅ricos de los evaluadores al nivel de al menos cuatro intervalos, seleccionamos el evaluador que proporciona el valor m铆nimo de la diferencia absoluta - abs (ke1-ke2).

4) Para la decisi贸n final sobre la elecci贸n de un evaluador, construimos en un histograma las distribuciones para las muestras grandes y peque帽as con el evaluador proporcionando el valor m铆nimo de abs (ke1-ke2), y en el segundo con el evaluador proporcionando el valor m谩ximo de abs (ke1-ke2). La aparici贸n de saltos adicionales en una peque帽a muestra en el segundo histograma confirma la elecci贸n correcta del evaluador en el primero.

Considere el trabajo del algoritmo propuesto en una muestra de datos de una publicaci贸n [2]. Los datos se obtuvieron seleccionando al azar 80 espacios en blanco de 500 con la medici贸n posterior de su masa. La pieza de trabajo debe tener una masa en los siguientes l铆mites: m=170.4+0.6kg Determinamos los par谩metros 贸ptimos del histograma utilizando la siguiente lista:

Listado
 import matplotlib.pyplot as plt from numpy import* def diagram(a,m,n): z=histogram(a, bins=m) if type(m) is str:#      m=len(z[0]) y=z[0] d=z[1][1]-z[1][0]#   h=0.5*d*n*10**(-sum([w*log10(w) for w in y if w!=0])/n)#   ke=h/std (a)#  return ke,h a =array([17.37, 17.06, 16.96, 16.83, 17.34, 17.45, 17.60, 17.30, 17.02, 16.73, 17.08, 17.28, 17.08, 17.21, 17.29,17.47, 16.84, 17.39, 16.95, 16.92, 17.59, 17.28, 17.31, 17.25, 17.43,17.30, 17.18, 17.26, 17.19, 17.09,16.61, 17.16, 17.17, 17.06, 17.09,16.83, 17.17, 17.06, 17.59, 17.37,17.09, 16.94, 16.76, 16.98, 16.70, 17.27, 17.48, 17.21, 16.74, 17.12,17.33, 17.15, 17.56, 17.45, 17.49,16.94, 17.28, 17.09, 17.39, 17.05, 16.97, 17.16, 17.38, 17.23, 16.87,16.84, 16.94, 16.90, 17.27, 16.93,17.25, 16.85, 17.41, 17.37, 17.50,17.13, 17.16, 17.05, 16.68, 17.56 ] ) c=['auto','fd','doane','scott','stone','rice','sturges','sqrt'] n=len(a) b=[a[i] for i in arange(0,len(a),1) if not i%2 == 0] n1=len(b) print("     (n=80) : %s"%round(std(a),3)) print("    (n=80):%s"%round(mean(a),3)) print("     (n=40): %s"%round(std(b),3)) print("   (n=40): %s"%round(mean(b),3)) u=[] for m in c: ke1,h1=diagram(a,m,n) ke2,h2=diagram(b,m,n1) u.append(abs(ke1-ke2)) print("ke1=%s,h1=%s,ke2=%s,h2=%s,dke=%s,m=%s"%(round(ke1,3),round(h1,3),round(ke2,3),round(h2,3),round(abs(ke1-ke2),3),m)) u1=min(u) c1=c[u.index(min(u))] u2=max(u) c2=c[u.index(max(u))] plt.title(' : %s \n    abs(ke1-ke2) :%s '%(c1,round(u1,3))) plt.hist(a,bins=str(c1)) plt.hist(b,bins=str(c1)) plt.grid() plt.show() plt.title('  : %s \n    abs(ke1-ke2):%s '%(c2,round(u2,3))) plt.hist(a,bins=str(c2)) plt.hist(b,bins=str(c2)) plt.grid() plt.show() 


Obtenemos:

La desviaci贸n est谩ndar para la muestra (n = 80): 0.24
La expectativa matem谩tica para la muestra (n = 80): 17.158
La desviaci贸n est谩ndar para la muestra (n = 40): 0.202
La expectativa matem谩tica de la muestra (n = 40): 17.138
ke1 = 1.95, h1 = 0.467, ke2 = 1.917, h2 = 0.387, dke = 0.033, m = auto
ke1 = 1.918, h1 = 0.46, ke2 = 1.91, h2 = 0.386, dke = 0.008, m = fd
ke1 = 1.831, h1 = 0.439, ke2 = 1.917, h2 = 0.387, dke = 0.086, m = doane
ke1 = 1.918, h1 = 0.46, ke2 = 1.91, h2 = 0.386, dke = 0.008, m = scott
ke1 = 1.898, h1 = 0.455, ke2 = 1.934, h2 = 0.39, dke = 0.036, m = piedra
ke1 = 1.831, h1 = 0.439, ke2 = 1.917, h2 = 0.387, dke = 0.086, m = arroz
ke1 = 1.95, h1 = 0.467, ke2 = 1.917, h2 = 0.387, dke = 0.033, m = esturiones
ke1 = 1.831, h1 = 0.439, ke2 = 1.917, h2 = 0.387, dke = 0.086, m = sqrt



La forma de la distribuci贸n de una muestra grande es similar a la forma de la distribuci贸n de una muestra peque帽a. Como se deduce del gui贸n, 'fd' es un evaluador confiable (resistente a las emisiones) que tiene en cuenta la variabilidad y el tama帽o de los datos. En este caso, el error de entrop铆a de la muestra peque帽a incluso disminuye ligeramente: h1 = 0.46, h2 = 0.386 con una ligera disminuci贸n en el coeficiente de entrop铆a de k1 = 1.918 a k2 = 1.91.



Los patrones de distribuci贸n de muestras grandes y peque帽as difieren. Como sugiere la descripci贸n, 'doane' es una versi贸n mejorada del puntaje 'sturges' que funciona mejor con conjuntos de datos con una distribuci贸n no normal. En ambas muestras, el coeficiente de entrop铆a es cercano a dos, y la distribuci贸n es cercana a la normalidad. La aparici贸n de saltos adicionales en una muestra peque帽a en este histograma, en comparaci贸n con la anterior, indica adicionalmente la elecci贸n correcta del evaluador 'fd' .

Generamos dos nuevas muestras para la distribuci贸n normal con los par谩metros mu = 20, sigma = 0.5 y size = 100 usando la relaci贸n:

 a= list([round(random.normal(20,0.5),3) for x in arange(0,100,1)]) 


El m茅todo desarrollado es aplicable a la muestra obtenida utilizando el siguiente programa:

Listado
 import matplotlib.pyplot as plt from numpy import* def diagram(a,m,n): z=histogram(a, bins=m) if type(m) is str:#      m=len(z[0]) y=z[0] d=z[1][1]-z[1][0]#   h=0.5*d*n*10**(-sum([w*log10(w) for w in y if w!=0])/n)#   ke=h/std (a)#  return ke,h #a= list([round(random.normal(20,0.5),3) for x in arange(0,100,1)]) a=array([20.525, 20.923, 18.992, 20.784, 20.134, 19.547, 19.486, 19.346, 20.219, 20.55, 20.179,19.767, 19.846, 20.203, 19.744, 20.353, 19.948, 19.114, 19.046, 20.853, 19.344, 20.384, 19.945,20.312, 19.162, 19.626, 18.995, 19.501, 20.276, 19.74, 18.862, 19.326, 20.889, 20.598, 19.974,20.158, 20.367, 19.649, 19.211, 19.911, 19.932, 20.14, 20.954, 19.673, 19.9, 20.206, 20.898, 20.239, 19.56,20.52, 19.317, 19.362, 20.629, 20.235, 20.272, 20.022, 20.473, 20.537, 19.743, 19.81, 20.159, 19.372, 19.998,19.607, 19.224, 19.508, 20.487, 20.147, 20.777, 20.263, 19.924, 20.049, 20.488, 19.731, 19.917, 19.343, 19.26,19.804, 20.192, 20.458, 20.133, 20.317, 20.105, 20.384, 21.245, 20.191, 19.607, 19.792, 20.009, 19.526, 20.37,19.742, 19.019, 19.651, 20.363, 21.08, 20.792, 19.946, 20.179, 19.8]) c=['auto','fd','doane','scott','stone','rice','sturges','sqrt'] n=len(a) b=[a[i] for i in arange(0,len(a),1) if not i%2 == 0] n1=len(b) print("     (n=100):%s"%round(std(a),3)) print("    (n=100):%s"%round(mean(a),3)) print("     (n=50):%s"%round(std(b),3)) print("   (n=50): %s"%round(mean(b),3)) u=[] for m in c: ke1,h1=diagram(a,m,n) ke2,h2=diagram(b,m,n1) u.append(abs(ke1-ke2)) print("ke1=%s,h1=%s,ke2=%s,h2=%s,dke=%s,m=%s"%(round(ke1,3),round(h1,3),round(ke2,3),round(h2,3),round(abs(ke1-ke2),3),m)) u1=min(u) c1=c[u.index(min(u))] u2=max(u) c2=c[u.index(max(u))] plt.title(' : %s \n    abs(ke1-ke2) :%s '%(c1,round(u1,3))) plt.hist(a,bins=str(c1)) plt.hist(b,bins=str(c1)) plt.grid() plt.show() plt.title('  : %s \n    abs(ke1-ke2):%s '%(c2,round(u2,3))) plt.hist(a,bins=str(c2)) plt.hist(b,bins=str(c2)) plt.grid() plt.show() 



Obtenemos:
La desviaci贸n est谩ndar para la muestra (n = 100): 0.524
La expectativa matem谩tica para la muestra (n = 100): 19.992
La desviaci贸n est谩ndar para la muestra (n = 50): 0.462
La expectativa matem谩tica de la muestra (n = 50): 20.002
ke1 = 1.979, h1 = 1.037, ke2 = 2.004, h2 = 0.926, dke = 0.025, m = auto
ke1 = 1.979, h1 = 1.037, ke2 = 1.915, h2 = 0.885, dke = 0.064, m = fd
ke1 = 1.979, h1 = 1.037, ke2 = 1.804, h2 = 0.834, dke = 0.175, m = doane
ke1 = 1.943, h1 = 1.018, ke2 = 1.934, h2 = 0.894, dke = 0.009, m = scott
ke1 = 1.943, h1 = 1.018, ke2 = 1.804, h2 = 0.834, dke = 0.139, m = piedra
ke1 = 1.946, h1 = 1.02, ke2 = 1.804, h2 = 0.834, dke = 0.142, m = arroz
ke1 = 1.979, h1 = 1.037, ke2 = 2.004, h2 = 0.926, dke = 0.025, m = esturiones
ke1 = 1.946, h1 = 1.02, ke2 = 1.804, h2 = 0.834, dke = 0.142, m = sqrt



La forma de distribuci贸n de una muestra grande es similar a la forma de distribuci贸n de una muestra peque帽a. Como se desprende de la descripci贸n, 'scott' es un evaluador menos confiable que tiene en cuenta la variabilidad y el tama帽o de los datos. En este caso, el error de entrop铆a de una muestra peque帽a incluso disminuye ligeramente: h1 = 1.018 y h2 = 0.894 con una ligera disminuci贸n en el coeficiente de entrop铆a de k1 = 1.943 a k2 = 1.934. . Cabe se帽alar que para la nueva muestra tenemos la misma tendencia a cambiar los par谩metros que en el ejemplo anterior.



Los patrones de distribuci贸n de muestras grandes y peque帽as difieren. Como se desprende de la descripci贸n, 'doane' es una versi贸n mejorada de la estimaci贸n de 'sturges' , que funciona con mayor precisi贸n con conjuntos de datos con una distribuci贸n no normal. En ambas muestras, la distribuci贸n es normal. La aparici贸n de saltos adicionales en una peque帽a muestra en este histograma en comparaci贸n con el anterior tambi茅n indica la elecci贸n correcta del evaluador 'scott' .

El uso de anti-aliasing para el an谩lisis comparativo de histogramas.


El suavizado de los histogramas creados en las muestras grandes y peque帽as le permite determinar con mayor precisi贸n su identidad desde el punto de vista de preservar la informaci贸n contenida en una muestra m谩s grande. Imagine los dos 煤ltimos histogramas como funciones de suavizado:

Listado
 from numpy import* from scipy.interpolate import UnivariateSpline from matplotlib import pyplot as plt a =array([20.525, 20.923, 18.992, 20.784, 20.134, 19.547, 19.486, 19.346, 20.219, 20.55, 20.179,19.767, 19.846, 20.203, 19.744, 20.353, 19.948, 19.114, 19.046, 20.853, 19.344, 20.384, 19.945, 20.312, 19.162, 19.626, 18.995, 19.501, 20.276, 19.74, 18.862, 19.326, 20.889, 20.598, 19.974,20.158, 20.367, 19.649, 19.211, 19.911, 19.932, 20.14, 20.954, 19.673, 19.9, 20.206, 20.898, 20.239, 19.56,20.52, 19.317, 19.362, 20.629, 20.235, 20.272, 20.022, 20.473, 20.537, 19.743, 19.81, 20.159, 19.372, 19.998,19.607, 19.224, 19.508, 20.487, 20.147, 20.777, 20.263, 19.924, 20.049, 20.488, 19.731, 19.917, 19.343, 19.26,19.804, 20.192, 20.458, 20.133, 20.317, 20.105, 20.384, 21.245, 20.191, 19.607, 19.792, 20.009, 19.526, 20.37,19.742, 19.019, 19.651, 20.363, 21.08, 20.792, 19.946, 20.179, 19.8]) b=[a[i] for i in arange(0,len(a),1) if not i%2 == 0] plt.title('    \n  abs(ke1-ke2)' ,size=12) z=histogram(a, bins="fd") x=z[1][:-1]+(z[1][1]-z[1][0])/2 f = UnivariateSpline(x, z[0], s=len(a)/2) plt.plot(x, f(x),linewidth=2,label='  n=100') z=histogram(b, bins="fd") x=z[1][:-1]+(z[1][1]-z[1][0])/2 f = UnivariateSpline(x, z[0], s=len(a)/2) plt.plot(x, f(x),linewidth=2,label='  n=50') plt.legend(loc='best') plt.grid() plt.show() plt.title('    \n  abs(ke1-ke2)' ,size=12) z=histogram(a, bins="doane") x=z[1][:-1]+(z[1][1]-z[1][0])/2 f = UnivariateSpline(x, z[0], s=len(a)/2) plt.plot(x, f(x),linewidth=2,label='  n=100') z=histogram(b, bins="doane") x=z[1][:-1]+(z[1][1]-z[1][0])/2 f = UnivariateSpline(x, z[0], s=len(a)/2) plt.plot(x, f(x),linewidth=2,label='  n=50') plt.legend(loc='best') plt.grid() plt.show() 




La aparici贸n de saltos adicionales en una peque帽a muestra en el gr谩fico de un histograma suavizado en comparaci贸n con el anterior tambi茅n indica la elecci贸n correcta del evaluador scott .

Conclusiones


Los c谩lculos presentados en el art铆culo en el rango de peque帽as muestras comunes en la producci贸n confirmaron la eficiencia del uso del coeficiente de entrop铆a como criterio para mantener el contenido de la informaci贸n de la muestra mientras se reduce su volumen . Se considera la t茅cnica de usar la 煤ltima versi贸n del m贸dulo numpy.histogram con evaluadores integrados: 'auto', 'fd', 'doane', 'scott', 'stone', 'rice', 'sturges', 'sqrt', que son suficientes para la optimizaci贸n An谩lisis de datos experimentales sobre estimaciones de intervalos.

Referencias


1. Hald A. Estad铆stica matem谩tica con aplicaciones t茅cnicas. - Mosc煤: editorial. lit., 1956
2. Kalmykov V.V., Antonyuk F.I., Zenkin N.V.
Determinaci贸n del n煤mero 贸ptimo de clases de agrupaci贸n de datos experimentales para estimaciones de intervalo // South Siberian Scientific Bulletin. - 2014. - No. 3. - P. 56-58.
3. Novitsky P. V. El concepto del valor de entrop铆a del error // T茅cnica de medici贸n. - 1966. - No. 7. 鈥擲. 11-14.
4.numpy.histogram - NumPy v1.16 Manual

Source: https://habr.com/ru/post/445464/


All Articles