Este equipo de especialistas pasados varios días de trabajo y recopilación de de datos, obtuvieron los datos necesarios, queremos que te resulte útil en tu proyecto.
Solución:
Entonces, primero convertimos el histograma en datos para tener una mejor idea de las cosas:
beginpmatrix 23 y 24 y 25 y 26 y 27 y 28 y 29 y 30 y 31 \ 3 y 7 y 13 y 18 y 23 y 17 y 8 y 6 y 5 endpmatrix
La definición de desviación estándar es la raíz cuadrada de la varianza, definida como
$$1sobre Nsum_i=0^N (x-barx)^2$$
con $barx$ la media de los datos y $N$ el número de punto de datos que es
$$3+7+13+18+23+17+8+6+5=100$$
Ahora
$$barx=1over 100(23cdot 3+24cdot 7 +ldots + 31cdot 5)=26,94$$
que puedes calcular por ti mismo. Los términos son el número de barras multiplicado por el número de veces que aparecen en los datos, podríamos haberlo escrito de la manera más larga como
$$underbrace23+23+23_text3 veces+underbrace24+24+_text7 vecesldots+underbrace31+31_ texto 5 veces$$
pero ahorramos algo de tiempo usando la multiplicación.
A partir de ahí, puede hacer que su cálculo de la varianza sea más fácil usando la multiplicación en la suma.
$$sigma^2=1sobre 100bigg(3(23-26,94)^2+7(24-26,94)^2+ldots + 5(31-26,94)^2bigg)=3,6364 $$
Tomando raíces cuadradas, obtenemos $sigma=1.9069$ con cuatro decimales.
Editar: Dado que las categorías ahora son un rango y no solo los valores de la izquierda, esto no es del todo exacto. Como cuestión de rutina: no es posible averiguar si las categorías son rangos. Si más barras tienen una longitud de 23 que de 23,999, etcétera, entonces el valor cambia. Los rangos no son suficientes para determinar estadísticas como la desviación estándar.
Si desea obtener el código de respuesta de Adam Hughes en Python, búsquelo a continuación. El caso de prueba da:
'n': 9, 'sum': 100, 'prod': 2694, 'sqsum': 363.64, 'mean': 26.94, 'variance': 3.6364, 'stdv': 1.9069347130932406
caso de prueba:
def test_Stats():
# https://math.stackexchange.com/questions/857566/how-to-get-the-standard-deviation-of-a-given-histogram-image
values=[(23,3),(24,7),(25,13),(26,18),(27,23),(28,17),(29,8),(30,6),(31,5)]
stats=Stats(values)
print (vars(stats))
Código
class Stats:
""" Calculate Histogram statistics see https://math.stackexchange.com/questions/857566/how-to-get-the-standard-deviation-of-a-given-histogram-image """
def __init__(self,histindexed):
self.n=len(histindexed)
self.sum=0
self.prod=0
self.sqsum=0
for x,y in histindexed:
self.sum+=y
self.prod+=x*y
self.mean=self.prod/self.sum
for x,y in histindexed:
dx=x-self.mean
self.sqsum+=y*dx*dx
# σ²
self.variance=self.sqsum/self.sum
self.stdv=math.sqrt(self.variance)
valoraciones y reseñas
Si estás contento con lo expuesto, tienes el poder dejar un post acerca de qué te ha parecido esta división.