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
Publicar un comentario