Me gusta python. Es un lenguaje versátil y entretenido de usar. Es más con Flask he podido hacer cosas divertidas, incluso sacarle provecho a un prototipo completo que he ido escribiendo. Sin embargo, el lenguaje en si, puede hacer muchas cosas mas.
Hoy me entretuve haciendo algunas cosas con estadística, recordando la parte de las matemáticas que mas me gustan (Aunque admito:en la media no me fue tan bien por dejado). Asi que para ejemplificar algunos códigos voy a hacer un pequeño ejercicio: obtener la desviación media, varianza y desviación estándar y con eso, crear un programita en python con ellos.
Desviación Media.
La desviación media es una medida estadística que indica cuánto se alejan, en promedio, los valores de un conjunto de datos respecto a su media aritmética. Se calcula sumando las diferencias absolutas entre cada dato y la media, y luego dividiendo por el número total de datos. Es útil para entender la dispersión de los valores en un conjunto.
La desviación media, se denota matemáticamente de la siguiente manera:
Donde
- representa cada uno de los valores del conjunto de datos
- es la media aritmética (promedio)
- es el numero total al contar los valores del conjunto
- son las desviaciones absolutas, resultado de la resta entre el valor del conjunto y el promedio.
en python quedaría así.
def desviacionMedia (datos):
promedio = (sum(datos)) / len(datos)
absolutos = []
for i in datos:
valor = abs(i - promedio)
absolutos.append(valor)
sumaAbsolutos = sum(absolutos)
desvMedia = sumaAbsolutos / len(datos)
return desvMedia
Varianza.
La varianza es una medida estadística que indica cuánto se dispersan los valores de un conjunto de datos respecto a su media. Se calcula como el promedio de las diferencias al cuadrado entre cada dato y la media. Es clave para entender la variabilidad de los datos.
La varianza se escribe de la siguiente manera.
Donde
- son los valores del conjunto de datos (las temperaturas)
- es la media aritmética (promedio)
- es la cantidad de datos del conjunto.
- son los cuadrados.
En Python quedaría así.
def varianza (datos):
promedio = (sum(datos)) / len(datos)
cuadrados = []
for i in datos:
valor = math.pow((i - promedio), 2)
cuadrados.append(valor)
sumaCuadrados = sum(cuadrados)
varianza = sumaCuadrados / (len(datos) - 1) if len(datos) > 1 else 0
return varianza
Desviación estándar.
La desviación estándar es una medida estadística que indica cuánto varían los datos respecto a su media. Cuanto mayor sea la desviación estándar, más dispersos están los valores; si es baja, los datos están más agrupados cerca de la media.
Se obtiene idéntico a la varianza, pero con la salvedad de que se trata de la raiz cuadrada
Donde:
- son los valores del conjunto de datos (las temperaturas)
- es la media aritmética (promedio)
- es la cantidad de datos del conjunto.
- son los cuadrados.
Para el ejemplo usamos la muestra . Para población, se usa .
En Python queda así.
def desvEstandar(datos):
promedio = (sum(datos)) / len(datos)
cuadrados = []
for i in datos:
valor = math.pow((i - promedio), 2)
cuadrados.append(valor)
sumaCuadrados = sum(cuadrados)
desvEstandar = math.sqrt((sumaCuadrados / (len(datos) - 1) if len(datos) > 1 else 0))
return desvEstandar
Programa en python.
En python existe la librería statistics
la cual nos proporciona diversas funciones como las mencionadas: promedio mean()
asi como la varianza pvariance()
, desviación estándar stdev()
entre otras. En este ejercicio, decidí hacerlo así para explicar mejor las fórmulas matemáticas.
Voy a proceder con un ejemplo.
Dado el conjunto de datos data = [30, 31, 30, 25, 21, 20, 22]
que es una lista de numeros enteros, obtendremos la desviacion media, la varianza y la desviacion estándar.
Lo primero que hay que hacer es importar las funciones. En este caso, la estructura es la siguiente.
├── lib/
│ └── funciones.py
└── prueba.py
funciones.py
import math #importamos la libreria math para las funciones pow y sqrt
def desviacionMedia (datos):
promedio = (sum(datos)) / len(datos)
absolutos = []
for i in datos:
valor = abs(i - promedio)
absolutos.append(valor)
sumaAbsolutos = sum(absolutos)
desvMedia = sumaAbsolutos / len(datos)
return desvMedia
def varianza (datos):
promedio = (sum(datos)) / len(datos)
cuadrados = []
for i in datos:
valor = math.pow((i - promedio), 2)
cuadrados.append(valor)
sumaCuadrados = sum(cuadrados)
varianza = sumaCuadrados / (len(datos) - 1) if len(datos) > 1 else 0
return varianza
def desvEstandar(datos):
promedio = (sum(datos)) / len(datos)
cuadrados = []
for i in datos:
valor = math.pow((i - promedio), 2)
cuadrados.append(valor)
sumaCuadrados = sum(cuadrados)
desvEstandar = math.sqrt((sumaCuadrados / (len(datos) - 1) if len(datos) > 1 else 0))
return desvEstandar
prueba.py
from lib.funciones import *
data = [30, 31, 30, 25, 21, 20, 22]
if len(data) > 0:
desviacion_media = desviacionMedia(data)
varianza = varianza(data)
desviacion_estandar = desvEstandar(data)
resultado = f'Desviacion media = {desviacion_media}\nVarianza = {varianza}\nDesviacion estandar = {desviacion_estandar}'
print(resultado)
Ejecutamos prueba.py
python prueba.py
# Resultado mostrado en la consola.
Desviacion media = 4.081632653061225
Varianza = 22.28571428571428
Desviacion estandar = 4.7207747548166585
Concluyendo.
Si bien es un ejercicio básico, permite entender bien como funcionan estas fórmulas estadísticas, aplicando un poco de código python.
Como bien mencioné, existen librerías para estadísticas, que permiten acelerar y acortar el código, además de dar mejores resultados. Espero les sirva.
Top comments (0)