¿Cómo calcular la varianza y la desviación estándar?
El cálculo de la varianza y la desviación estándar es fundamental para entender la dispersión de los datos en un conjunto. Estos son dos elementos cruciales en la estadística inferencial que nos permiten obtener una imagen más clara sobre cómo se distribuyen nuestros datos respecto a la media.
¿Qué es la varianza y cómo se calcula?
La varianza nos muestra cuán alejados están los datos de la media aritmética, proporcionando una medida de dispersión en términos cuadráticos. Calcular la varianza es sencillo, siguiendo estos pasos:
Calcular la media: Primero, obtén el promedio de todos los valores.
Restar la media de cada valor: Posteriormente, resta la media de cada uno de los valores del conjunto de datos.
Elevar las diferencias al cuadrado: Eleva al cuadrado las diferencias obtenidas, eliminando así los valores negativos.
Sumar todos los valores al cuadrado: Calcula la suma de todos los valores al cuadrado obtenidos.
Dividir entre el número total de elementos: Este resultado se divide por el número total de elementos en el conjunto de datos.
Aquí está el código que ilustra cómo calcular la varianza en Python:
defvarianza(x): media = calcular_media(x) acumulador =0for xi in x: acumulador +=(xi - media)**2return acumulador /len(x)
¿Qué es la desviación estándar?
La desviación estándar es la raíz cuadrada de la varianza. Nos permite expresar la variabilidad de los datos en las mismas unidades que la media, facilitando así su interpretación. La desviación estándar indica, de una manera más clara, cuán dispersos están los datos alrededor de la media.
Código para calcular la desviación estándar:
import math
defdesviacion_estandar(x):return math.sqrt(varianza(x))
¿Por qué es importante entender la media, la varianza y la desviación estándar?
Al estudiar un conjunto de datos, es esencial no solo conocer el promedio, sino también comprender cómo los datos se dispersan alrededor de este. Por ejemplo, tener una media no nos dice cuándo los datos se encuentran muy alejados unos de otros o están muy agrupados. La desviación estándar y la varianza brindan una visión más completa al respecto.
Ejemplo práctico:
Datos: Un conjunto de alturas con una media de aproximadamente 1.80 metros puede tener una desviación estándar significativamente diferente dependiendo de la dispersión de los valores.
Alta varianza/desviación estándar: Significa que las alturas varían de manera considerable con respecto a la media.
Baja varianza/desviación estándar: Indica que las alturas están cercanas al valor promedio.
Fórmulas clave y su implementación en código
Como se ha mostrado, calcular la media es el primer paso:
defcalcular_media(x):returnsum(x)/len(x)
Utilizando estas implementaciones, podemos entender mejor la variabilidad de los datos:
Este enfoque permite evaluar estadísticamente un conjunto de datos, lo que es esencial para realizar inferencias estadísticas válidas. Asimismo, entender la varianza y la desviación estándar permite realizar muestreos e inferencias más precisas en diferentes contextos de análisis de datos. No olvides que cada consulta o duda sobre este tema puede ser discutida y resuelta en los sistemas de comentarios o foros especializados en estadística. ¡Sigue explorando el mundo de la estadística inferencial!
Media, Varianza y Desviación Estándar en Estadística
Por favor platzi y David, porfa sean más homogéneos en el uso de sus fórmulas. En este caso, en la desviación estándar nos muestran una fórmula para variables aleatorias discretas que incluye el término $p_i$,pero sin explicar a qué hace referencia dicho término, y que carece del término 1/N (a diferencia de la fórmula mostrada para la varianza). Aunque la fórmula es correcta y son equivalentes, el contexto es necesario, ya que David no da ejemplos de variables aleatorias discretas y su distribución de probabilidad. Así que era más sencillo tomar la fórmula que mostraron de la varianza y encerrarla en la 'casita' de la raíz cuadrada para mostrar la definición de la $\sigma$ sin confundirnos a nosotros los estudiantes.
Amigo,tu señalamiento es correcto y entiendo tu punto de vista. Pero pienso que no comprendiste el punto de la clase o y/o el curso. Esta clase no es para que aprendas código, sino para que entiendas los conceptos de varianza y desviación estánda aplicados a la programación.
Para el tema de código, tienes muchas librerías y a stackoverflow para aprovechar lo que otros han hecho antes.
La desviación estándar indica un rango DESDE la MEDIA, este rango indica en dónde se van a encontrar la mayoria de datos.
Por ejemplo, si tengo esta lista: [1,3,5,5,5,8,10] e imaginemos que la media es 3 y desviación estándar me dio 3, significa que la mayoría de datos se encontrarán desde el 5, 3 datos hacia arriba y 3 datos hacia abajo, osea, de 3 a 8.
La varianza es simplemente la operación que se hace para obtener la desviación estándar, el problema es que da como resultado la desviación estándar al cuadrado. Sacandole la raíz a la varianza se obtiene la desviación estándar.
Una cosa importante a tomar en cuenta es que hay dos tipos de varianza/desviación estandar. La primera es la de la población y la segunda es de una muestra. Te invito a investigar más si te interesa.
Está trabajando con la varianza poblacional y con la desviación estándar poblacional y no con las muestrales, la fórmula cambia en que habría que dividir la sumatoria entre n-1 (en el caso de trabajar con la muestra) y no solo entre N (como es este caso que trabaja con la población).
En cuanto al algoritmo, también se puede importando statistics
con la función pvariance() para la varianza y pstdev() para la desviación estándar. Estas dos funciones calculan en automático la media mean() y repito, funcionan al trabajar con poblaciones
import random
import statistics
if __name__ =='__main__': edades =[random.randint(1,35)for i inrange(15)]print(edades)print(f'la media es: {statistics.mean(edades)}')print(f'la varianza es: {statistics.pvariance(edades)}')print(f'la desviacion estandar es: {statistics.pstdev(edades)}')
¡Siempre me han encantado las estadísticas! De hecho, muchas veces las utilizo pra perfilar ciertos comportamientos en los aliados dentro de la Gestión de un Proyecto. Me ha pasado con el último proyecto del cual he sido Gerente en mi empresa:
Desde el inicio el aliado empezó a incumplir, desde la 1ra reunión.
Establecí la regla: "ya falló, esprobable que vuelva a fallar".
Falló por segunda vez. La segunda regla es: "no espero que corrija el rumbo, su lenguaje y sus acciones han sido consistentes, así que es mucho más probable que a la 3ra vez vuelva a fallar a que lo haga bien.
Efectivamente ocurrió, falló de nuevo.
Después de esto, ya sumí por defecto que fallaría. Falló 3 veces más.
Y esto impactó la facturación nuestra en el orden de 250 mil dólares, con un atraso de 2 meses, en medio de la pandemia. Las estadísticas son muy útiles, aplicadas a la gestión de las relaciones del negocio. Es decir, la variabilidad del aliado era muy pequeña, aunque su media se encontraba siempre en zona de falla.
Tu pensamiento me parece aún más cercano a inferencia bayesiana! Creo que en el siguiente curso hablan de eso, te recomiendo que busques info de esto. Seguro te dará muchas ideas. Saludos.
y por eso es que la primera impresión de un proveedor es muy importante, si falla la primera vez que se trabaja con el, yo ya lo descarto para el futuro.
Un dato: La probabilidad obtener un valor que se encuentra en el intervalo [mu-sigma, mu+sigma] es el 68.2%. Para más info:
!desviación estándar
Fuente: WikiPedia
Tengan cuidado porque en la función random.randint(a, b) los valores a y b SI son inclusivos, en el minuto 09:35 se menciona que son NO inclusivos e igualmente en alguna clase pasada se menciona lo mismo. Inclusive podemos ver al minuto 10:00 que la lista que arrojó si tenía el #12.
Cuando trabajamos con NUMPY, éste módulo también tiene la función random.randint y en ese caso numpy.random.randint(a, b) b si es NO inclusivo.
no entendi muy bien para que es que sirve la varianza,
pero si entendi para que sirve la desviacion estandar, alguien que haya entendido comente porfavor
La varianza es una medida de como varian los datos de la media, al elevarlos al cuadrado amplificamos esta diferencia y ademas positivisamos las diferencias. La desviacion estandar compatibiliza las unidades (la variancia tiene u^2 y la desviacion u)
La varianza sirve para saber y considerar el valor medio de una variable.
Tal es así que la varianza fue creada para determinar si las diferencias que existen entre las medias de muestreo exponen las diferencias que hay entre los valores medios.
Al ser la media 9.85 y la desviación estandar 5.5, se espera que la mayoria de los datos esten entre 15 y 4 porque ese es el resultado de sumar y restar la desviación estandar a la media.
9.85 + 5.5 es aproximadamente 15
9.85 - 5.5 es aproximadamente 4
Varianza/ Desviación Estándar
Son medidas de dispersión, es decir cuanto varían nuestros datos en relación a la media. Mientras más varíen nuestros datos, mas grande serán estos valores.
La varianza se calcula hallando el promedio de la suma de los cuadrados de las diferencias de cada valor con la media. La razón de este cuadrado es para eliminar los signos negativos y sobre todo para dar mayor peso a los elementos que estén muy dispersos,
La desviación estándar es simplemente la raíz de la varianza (con el objetivo de compatibilizar unidades)
Nota:
Las medidas de dispersion solo se entienden acompañadas de la media (no es lo mismo 10 +/- 5 que 1000 +/ 5)
La varianza mide qué tan propagados se encuentran un conjunto de valores aleatorios de su media. Mientras que la media nos da una idea de dónde se encuentran los valores, la varianza nos dice que tan dispersos se encuentran. La varianza siempre debe entenderse con respecto a la media.
Desviación estándar
La desviación estándar es la raíz cuadrada de la varianza. Nos permite entender, también, la propagación y se debe entender siempre relacionado con la media.
La ventaja sobre la varianza es que la desviación estándar está en las mismas unidades que la media.
Vamos a implementar las funciones de varianza y desviación estándar en nuestro script ya hecho para la media.
import random
import math
defmedia(X):returnsum(X)/len(X)defvarianza(X): mu = media(X) acumulador =0for x in X: acumulador +=(x - mu)**2return acumulador /len(X)defdesviacion_estandar(X):return math.sqrt(varianza(X))if __name__ =='__main__': X =[random.randint(9,12)for i inrange(20)] mu = media(X) Var = varianza(X) sigma = desviacion_estandar(X)print(f'Arreglo X: {X}')print(f'Media = {mu}')print(f'Varianza = {Var}')print(f'Desviacion estandar = {sigma}')
Yo preferi hacer una clase, algo nuevo que descubri es que el el constructor de la clase puedes llamar un metodo para definir una propiedad, como lo hice con el promedio.
Tambien quiero agregar como nota extra que el metodo 'random.randint' si incluye los extremos
>>>help(random.randint)Help on method randint in module random:randint(a, b) methodof random.Random instance
Return random integer inrange [a, b], including both end points.
import random
classEstadisticas:def__init__(self, lista): self.lista = lista
self.mu = self.media()defmedia(self):returnsum(self.lista)/len(self.lista)defvarianza(self): x_varianza =0for numero in self.lista: x_varianza +=(numero - self.mu)**2returnround(x_varianza /len(self.lista),2)defdesviacion(self):returnround(self.varianza()**0.5,2)if __name__ =='__main__': lista =[random.randint(0,20)for _ inrange(20)] X = Estadisticas(lista)print(f'{X.lista}')print(f'Media: \t\t{X.media()}')print(f'Varianza: \t{X.varianza()}')print(f'Desviacion: \t{X.desviacion()}')
Con la mediana.
import random
import math
def media(X):returnsum(X)/len(X)def varianza(X): mu =media(X) acumulador =0for x inX: acumulador +=(x - mu)**2return acumulador /len(X)def desviacion_estandar(X):return math.sqrt(varianza(X))def mediana(X):returnX[len(X)//2]if __name__ =='__main__':X=[random.randint(1,100)for i inrange(200)]X.sort()X mu =media(X)Var=varianza(X) sigma =desviacion_estandar(X) valor_mediana =mediana(X)print(f'Arreglo X: {X}')print(f'Media = {mu}')print(f'Mediana = {valor_mediana}')print(f'Varianza = {Var}')print(f'Desviación estándar = {sigma}')```