Ir al contenido principal

PROGRAMACIÓN Y ESTADÍSTICA

Durante el curso de python realice este proyecto el cual fue sugerido por el docente que imparte la materia, el programa consiste el llevar un control estadístico de muestras y lecturas para ver si una linea de producción  esta dentro del rango establecido.
Lo mas importante de este proyecto son las gráficas ya que son muy visuales y fáciles de entender.

El proceso estadístico es ver si un artefacto producido esta dentro del rango establecido, un ejemplo es la producción de resistencias de 1000 ohms, donde tiene un margen de +-25, entonces se pide una muestra y sus lecturas para luego continuar con los cálculos del proceso que a continuación explicare uno por uno. 

Promedios de cada muestra:  es la sumatoria de todos los elementos sobre el numero total de elementos. (Datos a graficar)

Rangos: Es el numero mayor menos el menos de cada muestra. (Datos a graficar)

Promedio total: Es el promedio de los promedios en las muestras. (Es la linea central de la gráfica) 

Promedio de rangos: Es el promedio de todos los rangos (Es la linea central de la gráfica)

Limite control superior: Formula estadística para establecer la linea superior en la gráfica.

Limite control inferior: Formula estadística para establecer la linea inferior en la gráfica.

Si deseas conocer mas sobre este proceso y las formulas puedes consultar la siguiente liga:

https://www.gestiondeoperaciones.net/control-estadistico-de-procesos/ejemplo-de-grafica-de-promedios-y-grafica-de-rangos-en-el-control-estadistico-de-procesos

PROGRAMA 
El programa esta resuelto con matrices y ciclos anidados, como el while y for, ya que este programa es funcional para procesos estadísticos de "n" muestras y de 15 lecturas por muestras.
Cada estructura del programa cuenta con un titulo relacionado a lo que hace.

#librerías necesarias para el programa 
import numpy as np
from pylab import *


muestra=int(input("Dame numero de muestras: "))
lec=int(input("Dame numero de lecturas en un rango de 2-15 : "))

A=np.zeros((muestra, lec))  #Matriz vacia

#llenado de la matriz
for i in range(muestra):
print("Muestra",i+1)       
for j in range(lec):
A[i][j]=int(input("Dame lectura "))
print()
#imprime la matriz
print("MUESTRAS")
for i in range(muestra):
print("|",i+1,"\t|",end=" ")
for j in range(lec):
print(A[i][j], end="    ")
print()
print()

#CALCULA LOS PROMEDIOS 
prom=[]
for i in range(muestra):      
p=np.sum(A[i])/lec
prom.append(p)
print("Promedios",prom)
print()

#Calcula el promedio total de promedios
suma=0
i=0
for elemento in prom:
suma+=elemento
i+=1
promedio=suma/i
print("Promedio de promedios",promedio)
print()

#CALCULO DE LOS RANGOS 
lisrang=[]
for i in range(muestra):
M=np.max(A[i])
m=np.min(A[i])
R=M-m
lisrang.append(R)
print("Rangos", lisrang)
print()

#PROMEDIO DE RANGOS 
suma1=0
z=0
for elemento in lisrang:
suma1+=elemento
z+=1
promedio1=suma1/z
print("Promedio de rangos",promedio1)
print()
print()
print()

#CALCULA LINEA CENTRAL EN PROMEDIOS +
lineaCentralP=[]
Lc=0
while (Lc<muestra):
lineaCentralP.append(promedio)
Lc=Lc+1
print("linea central en promedios",lineaCentralP)
print()

#Tabla para sacar los A2 D3 D4 
A2=[0,0,1.880,1.023,0.729,0.577,0.486,0.429,0.373,0.377,0.308,0.285,0.266,0.249,0.235,0.223]
D3=[0,0,0,0,0,0,0,0.076,0.136,0.184,0.223,0.256,0.284,0.308,0.329,0.348]
D4=[0,0,3.268,2.574,2.282,2.114,2.004,1.924,1.864,1.816,1.777,1.744,1.717,1.692,1.671,1.652]

#LIMITE CONTROL INFERIOR EN PROMEDIOS
lci=promedio-(A2[lec]*promedio1)
LCI=0
lineainferiorP=[]
while(LCI<muestra):
lineainferiorP.append(lci)
LCI=LCI+1
print("linea inferior en promedios",lineainferiorP)
print()


#LIMITE CONTROL SUPERIOR EN PROMEDIOS 
lcs=promedio+(A2[lec]*promedio1)
LCS=0
LSP=[]
while(LCS<muestra):
LSP.append(lcs)
LCS=LCS+1
print("linea superior en promedios",LSP)
print()
print()
print()

#print("D3",D3[lec])
#print("D4",D4[lec])

#LINEA CENTRAL EN RANGOS
LCR=[]
y=0
while(y<muestra):
LCR.append(promedio1)
y=y+1
print("linea central en rangos",LCR)
print()

#LIMITE CONTROL INFERIOR EN RANGOS
lcir=0*promedio1
v=0
LCIR=[]
while(v<muestra):
LCIR.append(lcir)
v=v+1
print("linea inferior en rangos",LCIR)
print()

#LIMITE CONTROL SUPERIOR EN RANGOS 
lcsr=2.282*promedio1
w=0
LSR=[]
while(w<muestra):
LSR.append(lcsr)
w=w+1
print("linea superior en rangos",LSR)
print() 

#GRAFICA PARA PROMEDIOS 
plt.plot(lineaCentralP, label="PROM", marker='s') #linea centra
plt.plot(lineainferiorP, label="LCI", marker='s') #linea inferior
plt.plot(LSP, label="LCS", marker='D') #linea superior
plt.plot(prom, label="Promedios",marker='s')#promedios
plt.grid(True)
plt.legend()
plt.title("Control en promedios")
plt.xlabel("Muestras") 
plt.ylabel("Promedios") 
plt.show()

#GRAFICA PARA RANGOS
plt.plot(LCR, label="prom", marker='s')
plt.plot(LCIR, label="LCI", marker='s')
plt.plot(LSR, label="LCS", marker='s')
plt.plot(lisrang, label="Rangos", marker='D')
plt.grid(True)
plt.legend()
plt.title("Control en rangos")
plt.xlabel("Muestras") 
plt.ylabel("Rangos") 
plt.show()


EJEMPLO DE UNA CORRIDA 
CORRIDA 


GRÁFICAS



  

Comentarios

Entradas populares de este blog

Funciones y Figuras Geometricas

En la siguiente serie de funciones se calculara cada una de las áreas y volúmenes de las siguientes figuras geométricas, haciendo uso de listas para evaluar e imprimir datos. PROGRAMA  En el programa siguiente tomar en cuenta las especificaciones dadas.  #en el siguiente programa se muestran 24 funciones diferentes #dichas funciones sirven para calcular el area y volumen de figuras geometricas #las funciones utilizan como principal recurso las lists (por especificaciones del docente que imparte la materia) #todas las funciones corren en el programa #pero tener cuidado con la version de python ya que en algunas verciones se puede tener error #se recomienda comprobar cada funcion por separado para su rapida ejecucion #todas las funciones contienen un print y aun lado esta comentado las salidas que da ejemplo [base,altura,area] #despues de cada funcion se manda a llamar dicha funcion para no generar confucion en el codigo #cada funcion se tiene un nombre rel...

Semaforo en python

En el siguiente programas se realizo la simulación tanto física como virtual de un semáforo a cuatro esquinas, los materiales utilizados ademas de los leds, resistencias y protoboard que son los componentes básicos, también es necesario tener una raspberry pi 3 con python instalado, con las librerías de turtle y gpio. El funcionamiento es básico, los led se aterrizan a tierra y las entradas de voltaje serán aterrizadas a los pines GPIO de la raspberry que dependiendo de las sentencias mandaran voltaje o no mandaran nada a sus respectivos leds. La lógica de un semáforo de 4 esquinas es: mientras un semáforo este en verde los otros tres deben de estar en rojo y hacer el intercambio en sentido horario. CÓDIGO DEL PROGRAMA from turtle import * import RPi.GPIO as gpio import time t=Turtle() S1=Turtle() S2=Turtle() S3=Turtle() S4=Turtle() screen=t.getscreen() setup(1100,650,0,0) screensize(1000,600) colormode(255) #fondo carretera t.fillcolo...

Sensor de luz con python

EN ESTA ENTRADA SE MUESTRA LA APLICACIÓN DE UN SENSOR DE LUZ   Como es de costumbre todos tenemos una lampara en nuestra casa, para poder aprovechar al máximo su rendimiento con una foto-resistencia o sensor de luz podemos hacer que esta se apague o prenda según la intensidad de luz que haya a su alrededor, si hay mucha luz se apaga pero si hay poca se prende, esto es algo muy esencial en la domotica. Y  me di la tarea de hacer un ejemplo simulado, por medio del modulo "turtle" y los puertos "GPIO" de la rasberry pi 3, mediante el lenguaje de programación de python, donde un puerto estará recibiendo la señal del circuito armado, y con esta señal se darán medidas o rangos para ir dibujando al foco según la intensidad de la luz. CIRCUITO ARMADO EL MATERIAL ES: Foto-resistencia Resistencia de 2k Capacitor de 1 micro PROGRAMA from turtle import * import RPi.GPIO as GPIO, time # se necesita esta libreria para poder utilizar los puertos rpigo...