Python
y datos tipo gauss
Autor: Bruno Binner Quiñones
Competencia: Aplica las ciencias de la ingeniería (Nivel 1)
Asignatura: Programación II
Palabras Clave: Distribucion normal, Gauss, python, grafico, filtro low-pass
Descripción de la Actividad
La actividad consistió en hacer un programa en python que generará 10.000 datos aleatorios con valores de una ‘Distribución Normal’ (o ‘Distribución Gaussiana’) con media 10 y desviación estándar de 0,5. Luego aplicar un filtro a los datos obtenidos y graficarlos con el módulo matplotlib de python.
Qué es Distribución Normal o Distribución Gaussiana?
En estadística y probabilidad se llama distribución normal, distribución de Gauss o distribución gaussiana, a una de las distribuciones de probabilidad de variable continua que con más frecuencia aparece aproximada en fenómenos reales.
La importancia de esta distribución radica en que permite modelar numerosos fenómenos naturales, sociales y psicológicos.
Por ejemplo, el siguiente es un gráfico llamado la campana de gauss que representa una Distribución normal:
Donde 0 es la media.
Filtro Low-pass
Un filtro low-pass se usa para atenuar las altas frecuencias en una onda. En nuestro caso va a atenuar valores que se alejen de la media.
Código y explicación
Resultado- import pylab as plab
- import random as ra
- def lowpass(v,a):
- f = [0]*10000
- f[0] = v[0]
- for i in range(1,10000):
- f[i] = a*v[i] + (1.0-a) * f[i-1]
- return f
- d = [ra.gauss(10,0.5) for i in range(10000)]
- fil = lowpass(d,0.9)
- plab.plot(d)
- plab.plot(fil)
- plab.grid()
- plab.show()
Se importó la librería pylab que nos permitirá representar de forma gráfica los datos que generemos y la librería random que incluye una función especial para generar datos de tipo gaussianos.
Se crea la función que servirá para filtrar los datos obtenidos. Para así facilitar el trabajo con estos.
En un arreglo ‘d’ guardamos 10000 datos gaussianos que irán del 8,25 hasta el 11,75. Para generarlos se uso la funcion random.gauss(media,variación) donde se usó como media 10, y variación estándar 0,5.
Luego en otro arreglo se guardaron los mismos datos pero con el filtro (low-pass) aplicado, usando como índice de filtro 0,9.
Con pylab se generaron 2 gráficos usando .plot(). Uno usando los datos gaussianos (‘d') y el otro usando los datos gaussianos con el filtro aplicado (‘fil’). Luego con .show() se mostraron los gráficos por pantalla resultando lo siguiente.
Lo graficado en azul corresponderia al contenido de ´d´ y lo verde es 'd' con el filtro aplicado, o sea 'fil'.
Después para demostrar la utilidad del filtro se procedió a probar con distintos valores para ‘a’ en la función ‘lowpass(v,a)’.
a = 0.1 a = 0.3
a = 0.5 a = 0.7
a = 0.9
Conclusión
Lo que se puede rescatar de esta actividad son esencialmente 2 cosas: El manejo de la librería pylab que nos permite crear y mostrar una representación gráfica de los datos que queramos. Y la comprensión de las Distribuciones normales o gaussianas para representar datos estadísticos y establecer que considerar dentro o fuera de lo normal.
No hay comentarios:
Publicar un comentario