def inicio(): mp.limpar_terminal() print(' By: will.i.am -> github.com/williampilger\n\n\n ') print(" > Índices de Capacidade <") n = int(input("Informe o número de unidades por amostra: ")) LSE = float( input("Informe o limite superior de especificação (LSE): ").replace( ',', '.')) LIE = float( input("Informe o limite inferior de especificação (LIE): ").replace( ',', '.')) Xl = float(input("Informe a média das médias (Xl): ").replace(',', '.')) Rl = float(input("Informe a amplitude média (Rl): ").replace(',', '.')) o = Rl / d2[n] #estimativa de desvio Cp = (LSE - LIE) / (6 * o) Cps = (LSE - Xl) / (3 * o) Cpi = (Xl - LIE) / (3 * o) Cpk = min(Cps, Cpi) print( "############################################ Resultados ############################################" ) print(f"\n Cp = {Cp}") print(f"\n Cpk = {Cpk}")
def inicio(): mp.limpar_terminal() print(' By: will.i.am -> github.com/williampilger\n\n\n ') #print('1 - MÉDIA ARITMÉTICA') #print('2 - MÉDIA ARITMÉTICA PONDERADA') #print('3 - MEDIANA') #print('4 - MODA') #print('5 - VARIÂNCIA') #print('6 - DESVIO PADRÃO') #print('7 - COEFICIENTE DE VARIAÇÃO') #print('8 - COEFICIENTE DE ASSIMETRIA DE PEARSON') #print('9 - ESPERANÇA (OU EXPECTÂNCIA)') #print('10 - DESVIO PADRÃO') #print('11 - DISTRIBUIÇÃO BINOMIAL') #print('12 - DISTRIBUIÇÃO DE POISSON') #print('13 - DISTRIBUIÇÃO HIPERGEOMÉTRICA') #print('14 - DISTRIBUIÇÃO EXPONENCIAL') #print('15 - DISTRIBUIÇÃO NORMAL') #print('16 - INTERVALO DE CONFIANÇA PARA A MÉDIA') #print('17 - INTERVALO DE CONFIANÇA PARA A PROPORÇÃO') #print('18 - DIMENSIONAMENTO DA AMOSTRA PARA ESTIMAÇÃO DA MÉDIA') #print('19 - DIMENSIONAMENTO DA AMOSTRA PARA ESTIMAÇÃO DA PROPORÇÃO') print('20 - TESTE DE HIPÓTESES PARA UMA MÉDIA') #print('21 - TESTE DE HIPÓTESES PARA UMA PROPORÇÃO') print('22 - TESTE DE HIPÓTESES PARA DIFERENÇA DE PROPORÇÕES') print('23 - TESTE DE HIPÓTESES PARA COMPARAÇÃO DE VARIÂNCIAS (ANOVA)') print('24 - TESTE DE HIPÓTESES PARA DIFERENÇA DE MÉDIAS') print('25 - TESTE DE HIPÓTESES PARA COMPARAÇÃO DE VARIÂNCIAS COM DOIS FATORES') print('26 - GRÁFICO CONTROLE DE PROCESSO - POR MÉDIA E AMPLITUDE') print('27 - GRÁFICO CONTROLE DE PROCESSO - POR ATRIBUTOS') print('28 - ÍNDICES DE CAPACIDADE (CP E CPK)') opcao = int(input('Informe sua opcao: ')) if(opcao == 0): quit() elif(opcao == 20): import testeHipoteseMedia as st st.inicio() elif(opcao == 22): import testeHipoteseDiferencaProporcoes as st st.inicio() elif(opcao == 23): import testeHipoteseVariancia as st st.inicio() elif(opcao == 24): import testeHipoteseDiferencaMedias as st st.inicio() elif(opcao == 25): import testeHipoteseVarianciaDoisFatores as st st.inicio() elif(opcao == 26): import graficoControleEstatisticoDoProcessoMediaEAmplitude as st st.inicio() elif(opcao == 27): import graficoControleEstatisticoDoProcessoAtributos as st st.inicio() elif(opcao == 28): import indicesDeCapacidade as st st.inicio()
def inicio(): pesquisa = '' dic = carrega_chaves('autotype.data')#dicionário com todas as chaves cadastradas. p = []#array com as opções condizentes com a pesquisa sel = -1#indice do ítem selecionado. -1 quando nenhum selecionado repesquisa = True while True: mp.limpar_terminal() print(f"\n Faça sua pesquisa: {pesquisa}\n") if(repesquisa): sel = -1 p = pesquisa_dict(dic, pesquisa) repesquisa = False if(len(p) > 0):#reprinta a lista de itens coerentes index = 0 for item in p: if(sel == index): carac = '♦' else: carac = ' ' print(f" {carac} {item:20} - {dic[item]}") index += 1 dig = readchar.readkey() if(dig == '\x1b'):#esc be.sair(1) elif(dig == '\t' or dig == '\r'):#tab ou enter if(sel != -1):#existe um ítem selecionado preenche(dic[p[sel]]) be.sair(10) else:#Nenhum ítem selecionado if(pesquisa in dic):#se existe uma ocorrência Idêntica no dicionário preenche(dic[p[sel]]) be.sair(10) else:#cadastrar nova chave mp.limpar_terminal() print(f"Cadastrando novo valor para a chave {pesquisa}\n") dic[pesquisa] = input("Digite o conteúdo da chave: ") preenche(dic[pesquisa]) salva_chaves(dic, 'autotype.data') be.sair(10) elif(dig == '\x1b[A'):#seta pra CIMA if(sel > 0): sel -= 1 elif(dig == '\x1b[B'):#seta pra BAIXO if(sel < len(p)): sel += 1 elif(dig == '\x08'):#back space pesquisa = pesquisa[:-1] repesquisa = True else: pesquisa += dig repesquisa = True
def detalha(dic): mp.limpar_terminal() print("\n DETALHES DO ITEM:") print(f"\n Código: {dic['Codigo']}") print(f" Data Início: {dic['Data_Inicio']}") print(f" Data Fim: ", end='') if (dic['Data_Fim'] == '31/12/9999'): print("-- / -- / ----") else: print(f"{dic['Data_Fim']}") print(f" Tipo (ato): {dic['Tipo_Ato']}") print(f" Número (ato): {dic['Numero_Ato']}") print(f" Ano (ato): {dic['Ano_Ato']}") print(f" Descrição: {dic['Descricao']}\n\n") os.system("pause")
def sair(code): multiplat.limpar_terminal() if (code == 0): print( "OOOps! Esta função ainda está em desenvolvimento.\n\nEstamos finalizando." ) time.sleep(5) elif (code == 1): print("Você escolheu sair.") time.sleep(1) elif (code == 2): print("Não encontramos o arquivo de configuração necessário.") time.sleep(5) elif (code == 10): print('Finalizado normalmente.') quit()
def sair(code): multiplat.limpar_terminal() if(code == 0): print("OOOps! Esta função ainda está em desenvolvimento.\n\nEstamos finalizando.") time.sleep(5) elif(code == 1): print("Você escolheu sair.") time.sleep(1) elif(code == 2): print("Não encontramos o arquivo de configuração necessário.") time.sleep(5) elif(code == 3): print("Alguma biblioteca necessária não está disponível.") time.sleep(5) elif(code == 4): print("Algum arquivo parece estar faltando. Contate o desenvolvedor.") time.sleep(5) elif(code == 10): print('Finalizado normalmente.') quit()
def inicio(): mp.limpar_terminal() print(' By: will.i.am -> github.com/williampilger\n\n\n ') print(" > Gráfico de Controle Estatístico do Processo para Atributos <") print(" > Gráfico para FRAÇÃO NÃO-CONFORME <") n = int(input("Informe a quantidade de elementos por amostra: ")) print( f"\n\n Digite abaixo a quantidade de itens NÃO-CONFORME de cada amostra de {n} elementos.\nDigite -1 para parar a coleta de amostras.\n" ) amostras = [] #quantidades de não-conforme por amostra pls = [] #proporções de não-conformidade (0 a 1) cont = 0 while True: val = int(input(f"Não-conformidades da amostra {cont + 1}: ")) if (val < 0): break amostras.append(val) pls.append(val / n) cont += 1 pl = sum(pls) / cont #proporção média LSC = min(1, pl + 3 * sqrt((pl * (1 - pl)) / n) ) #pode ser no maximo 1, pois não tem como ser além de 100% LC = pl LIC = max(0, pl - 3 * sqrt( (pl * (1 - pl)) / n)) #nínimo zero, pois é impossível que seja menos de 0% print( "############################################ Resultados ############################################" ) print(f"\n pl: {pl}") print(f"\nLimites de controle para gráfico da gração de não-conforme") print(f" LSC = {LSC}") print(f" LC = {LC}") print(f" LIC = {LIC}") vet = [] #vetor com número dos grupos (identificação apenas) vet_LSC = [] #Vetor de limites superiores vet_LC = [] #vetor com médias vet_LIC = [] #vetor com limites máximos for i in range(cont): vet.append(i + 1) vet_LSC.append(LSC) #só repete os valores vet_LC.append(LC) vet_LIC.append(LIC) falha = False #Verificando valores for i in range(cont): #pra cada valor do gráfico if (pls[i] > vet_LSC[i] or pls[i] < vet_LIC[i]): falha = True print( "\n############################################ Conclusões ############################################\n" ) if (falha): print(f"No mínimo um dos valores ultrapassou os limites calculados.") else: print(f"Todas as proporções estão dentro dos limites calculados.") #PLOT Gráfico fig, axs = pyplot.subplots() #(2, sharex=True, sharey=True) fig.suptitle('Gráficos de X e R, respectivamente') #print(vet, medias) axs.plot(vet, pls) axs.plot(vet, vet_LSC, color='k', linestyle='dashed') axs.plot(vet, vet_LC, color='k') axs.plot(vet, vet_LIC, color='k', linestyle='dashed') pyplot.show() #exibe o gráfico
def inicio(): mp.limpar_terminal() print(' By: will.i.am -> github.com/williampilger\n\n\n ') print( " > Gráfico baseado nas média e amplitude para Controle Estatístico do Processo <" ) print( "Facilitando a entrada de dados para esta aplicação, os dados das amostras devem ser preenchidos em um arquivo." ) print( "E para tal, cada LINHA corresponderá à uma amostra, e os valores deverão ser separados por TABS." ) print("""Como no exemplo abaixo: 2 6 9 9 6 6 5 8 6 8 2 3 6.6 58 95.658 """) fileName = input("Informe o nome do aquiro com os dados: ") if (not os.path.isfile(fileName)): print("O arquivo informado não existe!") be.sair(2) medias, amplitudes, ns = le_dados(fileName) n = ns[ 0] #estou adotando o número de amostras do primeiro grupo como padrão if (n > 25): print("Não está preparado para amostras maiores que 25") be.sair(0) cont = 0 sum = 0 for media in medias: sum += media cont += 1 X = sum / cont cont = 0 sum = 0 for amplitude in amplitudes: sum += amplitude cont += 1 R = sum / cont # Limites de controle para gráfico X LSC_X = X + A2[n] * R LC_X = X LIC_X = X - A2[n] * R # Limites de controle para gráfico R LSC_R = D4[n] * R LC_R = R LIC_R = D3[n] * R print( "############################################ Resultados ############################################" ) print(f"\n Médias: {medias}") print(f" Amplitudes: {amplitudes}") print(f" X = {X}") print(f" R = {R}") print(f"\nLimites de controle para gráfico das médias (X)") print(f" A2 para n={n} : {A2[n]}") print(f" LSC = {LSC_X}") print(f" LC = {LC_X}") print(f" LIC = {LIC_X}") print(f"\nLimites de controle para gráfico das amplitudes (R)") print(f" D4 para n={n} : {D4[n]}") print(f" D3 para n={n} : {D3[n]}") print(f" LSC = {LSC_R}") print(f" LC = {LC_R}") print(f" LIC = {LIC_R}") vet = [] #vetor com número dos grupos (identificação apenas) vet_LSC_X = [] #Vetor de limites superiores vet_LC_X = [] #vetor com médias vet_LIC_X = [] #vetor com limites máximos for i in range(1, len(medias) + 1): vet.append(i) if (ns[i - 1] == n ): #se o número de amostras for igual ao padrão (quase sempre) vet_LSC_X.append(LSC_X) #só repete os valores vet_LC_X.append(LC_X) vet_LIC_X.append(LIC_X) else: #só chega aqui se o número de amostras é diferente do padrão vet_LSC_X.append(X + A2[ns[i - 1]] * (D2[ns[i - 1]] / D2[n]) * R) vet_LC_X.append(X) #não muda vet_LIC_X.append(X - A2[ns[i - 1]] * (D2[ns[i - 1]] / D2[n]) * R) vet_LSC_R = [] vet_LC_R = [] vet_LIC_R = [] for i in range(1, len(amplitudes) + 1): if (ns[i - 1] == n ): #se o número de amostras for igual ao padrão (quase sempre) vet_LSC_R.append(LSC_R) #só repete os valores vet_LC_R.append(LC_R) vet_LIC_R.append(LIC_R) else: #só chega aqui se o número de amostras é diferente do padrão vet_LSC_R.append(D4[ns[i - 1]] * (D2[ns[i - 1]] / D2[n]) * R) vet_LC_R.append((D2[ns[i - 1]] / D2[n]) * R) vet_LIC_R.append(D3[ns[i - 1]] * (D2[ns[i - 1]] / D2[n]) * R) #Aqui falta algo falha_media = False falha_amplitude = False #Verificando valores for i in range(len(vet)): #pra cada valor do gráfico if (medias[i] > vet_LSC_X[i] or medias[i] < vet_LIC_X[i]): falha_media = True if (amplitudes[i] > vet_LSC_R[i] or amplitudes[i] < vet_LIC_R[i]): falha_amplitude = True print( "\n############################################ Conclusões ############################################\n" ) if (falha_media): print(f"Os valores das médias ultrapassaram os limites calculados.") else: print(f"As médias estão dentro dos limites.") if (falha_amplitude): print( f"Os valores das amplitudes ultrapassaram os limites calculados.") else: print(f"As amplitudes estão dentro dos limites.") if (falha_media or falha_amplitude): print( "portanto, precisa-se remover a(s) amostra(s) que ultrapassa(m) o padrão, e refazer o cálculo." ) #PLOT Gráfico fig, axs = pl.subplots(2) #(2, sharex=True, sharey=True) fig.suptitle('Gráficos de X e R, respectivamente') #print(vet, medias) axs[0].plot(vet, medias) axs[0].plot(vet, vet_LSC_X, color='k', linestyle='dashed') axs[0].plot(vet, vet_LC_X, color='k') axs[0].plot(vet, vet_LIC_X, color='k', linestyle='dashed') axs[1].plot(vet, amplitudes) axs[1].plot(vet, vet_LSC_R, color='k', linestyle='dashed') axs[1].plot(vet, vet_LC_R, color='k') axs[1].plot(vet, vet_LIC_R, color='k', linestyle='dashed') pl.show() #exibe o gráfico
def inicio(): mp.limpar_terminal() print(' By: will.i.am -> github.com/williampilger\n\n\n ') print(" > TESTE DE HIPÓTESES PARA COMPARACAO DE VARIÂNCIAS <") print( "\n Para testar hipóteses relacionadas à comparação entre duas variâncias.\n" ) print("\n DADOS AMOSTRAIS (AMOSTRA 1)") n1 = int(input(" Tamanho da amostra (n1): ")) n1H = int(input(" Desvio Padrão (s1): ")) #PAREI AQUI p1 = n1H / n1 print(" Proporção para amostra (p1) =", p1, " <- CALCULADO") print("\n DADOS AMOSTRAIS (AMOSTRA 2)") n2 = int(input(" Tamanho da amostra (n2): ")) n2H = int( input( " Número de elementos da amostra com a característica (n2*): ")) p2 = n2H / n2 print(" Proporção para amostra (p2) =", p2, " <- CALCULADO") pc = (n1 * p1 + n2 * p2) / (n1 + n2) print("\n Proporção conjunta =", pc, " <- CALCULADO") ddp = sqrt(pc * (1 - pc) * (1 / n1 + 1 / n2)) print("\n Desvio das diferenças de proporções =", pc, " <- CALCULADO") s = float( input("\n Nível de significância [percentual 0.05 - 10.00] (a): ")) l = input("\n Teste Unilateral ou Bilateral? (U/B): ") print("\n\n ## RESULTADOS ##") print("\n ESTATÍSTICA DO TESTE") Zc = (p1 - p2) / ddp print(" Zc =", Zc, " <- CALCULADO") print( f"\n Z - Da tabela de distribuição normal, para {s}% de significancia e INFINITOS graus de liberdade:" ) tb_t = [] with open("datatabs/distribuicao_t", "rt") as arquivo: for linha in arquivo: tb_t.append(linha.replace("\n", "").split("\t")) sin = "+" if (l == "U" or l == "u"): l = len(tb_t) - 1 if (Zc < 0): sin = "-" elif (l == "B" or l == "b"): l = 0 sin = "+-" else: print("ALGO DEU ERRADO. LATERALIDADE INFORMADA NÃO É VÁLIDA.") quit() Z = 0 i = 0 for item in tb_t[l]: #pega ultima linha da tabela try: item = float(item) if (item == s): Z = float(tb_t[len(tb_t) - 2][i]) break except: pass i += 1 if (Z == 0): print("ALGO DEU ERRADO. A SIGNIFICÂNCIA INFORMADA NÃO FOI ENCONTRADA.") quit() print(" Z =", sin, Z) if (abs(Zc) < Z): print("\n\n NÃO REJEIITA H0") print(f"Não há evidências a {s}% de significância...") else: print("\n\n REJEIITA H0") print(f"Há evidências a {s}% de significância...")
def inicio(): mp.limpar_terminal() print(' By: will.i.am -> github.com/williampilger\n\n\n ') print(" > TESTE DE HIPÓTESES PARA UMA MÉDIA <") print("\n Para testar hipóteses para rejeitar uma média.\n") N = int( input(" Tamanho da população ( 0 se infinito ou desconhecido): ")) n = int(input(" Tamanho da amostra (n): ")) gl = n - 1 #graus de liberdade xl = float(input(" Média Amostral (xl): ").replace(",", ".")) s = float(input(" Desvio Padrão (s): ").replace(",", ".")) u0 = float( input(" Valor da média a ser testado (u0): ").replace(",", ".")) a = float( input(" Nível de significância [percentual 0.05 - 10.00] (a): "). replace(",", ".")) l = input("\n Teste Unilateral ou Bilateral? (U/B): ") sin = "+" if (xl < u0): sin = "-" if (l == "U" or l == "u"): l = 32 #indice da última linha da tabela de distribuição t elif (l == "B" or l == "b"): l = 0 # indice da primeira linha da tabela de distribuição t sin = "+-" else: print("ALGO DEU ERRADO. LATERALIDADE INFORMADA NÃO É VÁLIDA.") quit() print("\n\n ## RESULTADOS ##") print( f"\n t - Da tabela de distribuição t, para {a}% de significancia e {gl} graus de liberdade:" ) tb_t = [] with open("datatabs/distribuicao_t", "rt") as arquivo: #carregando tabela de distribuição t for linha in arquivo: tb_t.append(linha.replace("\n", "").split("\t")) if (gl > 30): gl = 30 i = 0 # ao final do loop, i contém o indice da COLUNA que conterá o valor for item in tb_t[ l]: #pega linha certa da tabela, para procurar o percentual try: item = float(item) if (item == a): break except: pass i += 1 t = 0 j = 0 #ao final do loop, j conterá o índica da LINHA que conterá o valor for item in tb_t: try: item = int(item[0]) if (item == gl): t = float(tb_t[j][i]) except: pass j += 1 if (t == 0): print("ALGO DEU ERRADO. O VALOR DE T NÃO FOI ENCONTRADO NA TABELA.") quit() print(" t =", sin, t) print("\n Estaística do teste:") if (N > 0): # N conhecido e finito ox = (s / sqrt(n)) * sqrt((N - n) / (N - 1)) else: ox = s / sqrt(n) tc = (xl - u0) / ox print(" tc = ", tc) if (abs(tc) < t): print("\n\n NÃO REJEIITA H0") print(f"Não há evidências a {a}% de significância de que ", end="") else: print("\n\n REJEIITA H0") print(f"Há evidências a {a}% de significância de que ", end="") if (l == 0): #bilateral print(f"seja diferente de {u0}.") else: print("a média seja ", end="") if (xl > u0): print("maior", end="") else: print("menor", end="") print(f" que {u0}.")
def inicio(): mp.limpar_terminal() print(' By: will.i.am -> github.com/williampilger\n\n\n ') print(" > TESTE DE HIPÓTESES PARA DIFERENÇA DE MÉDIAS <") print( "\n Para testar hipóteses relacionadas à comparação entre duas médias populacionais.\n" ) print("\n DADOS AMOSTRAIS (AMOSTRA 1)") n1 = int(input(" Tamanho da amostra (n1): ")) x1 = float(input(" Média (x1): ").replace(",", ".")) s1 = float(input(" Desvio Padrão (s1): ").replace(",", ".")) #p1 = n1H/n1 #print(" Proporção para amostra (p1) =", p1, " <- CALCULADO") print("\n DADOS AMOSTRAIS (AMOSTRA 2)") n2 = int(input(" Tamanho da amostra (n2): ")) x2 = float(input(" Média (x2): ").replace(",", ".")) s2 = float(input(" Desvio Padrão (s2): ").replace(",", ".")) s = float( input("\n Nível de significância [percentual 0.05 - 10.00] (s): "). replace(",", ".")) u0 = float( input( "\n Valor da diferença das médias a ser testado (costuma ser 0 ): " ).replace(",", ".")) l = input("\n Teste Unilateral ou Bilateral? (U/B): ") sin = "+" if (l == "U" or l == "u"): l = 32 #indice da última linha da tabela de distribuição t elif (l == "B" or l == "b"): l = 0 # indice da primeira linha da tabela de distribuição t sin = "+-" else: print("ALGO DEU ERRADO. LATERALIDADE INFORMADA NÃO É VÁLIDA.") quit() va = input("\n A variabilidade das duas amostras é igual? (S/N): ") if (va == 'S' or va == 's'): gl = n1 + n2 - 2 #Graus de liberdade a = sqrt( (((n1 - 1) * s1**2 + (n2 - 1) * s2**2) / gl) * (1 / n1 + 1 / n2)) elif (va == 'N' or va == 'n'): v1 = s1**2 / n1 v2 = s2**2 / n2 gl = int((v1 + v2)**2 / ((v1**2 / (n1 - 1)) + (v2**2 / (n2 - 1)))) #Graus de liberdade a = sqrt(s1**2 / n1 + s2**2 / n2) else: print("ALGO DEU ERRADO. ESCOLHA INFORMADA NÃO É VÁLIDA.") quit() print("\n\n ## RESULTADOS ##") print( f"\n t - Da tabela de distribuição t, para {s}% de significancia e {gl} graus de liberdade:" ) tb_t = [] with open("datatabs/distribuicao_t", "rt") as arquivo: #carregando tabela de distribuição t for linha in arquivo: tb_t.append(linha.replace("\n", "").split("\t")) if (gl > 30): gl = 30 i = 0 # ao final do loop, i contém o indice da COLUNA que conterá o valor for item in tb_t[ l]: #pega linha certa da tabela, para procurar o percentual try: item = float(item) if (item == s): break except: pass i += 1 t = 0 j = 0 #ao final do loop, j conterá o índica da LINHA que conterá o valor for item in tb_t: try: item = int(item[0]) if (item == gl): t = float(tb_t[j][i]) except: pass j += 1 if (t == 0): print("ALGO DEU ERRADO. O VALOR DE T NÃO FOI ENCONTRADO NA TABELA.") quit() print(" t =", sin, t) print("\n Estaística do teste:") tc = (x1 - x2 - u0) / a print(" tc = ", tc) if (abs(tc) < t): print("\n\n NÃO REJEIITA H0") print(f"Não há evidências a {s}% de significância de que ", end="") else: print("\n\n REJEIITA H0") print(f"Há evidências a {s}% de significância de que ", end="") if (l == 0): #bilateral print("exista diferença na média das duas amostras.") else: print("a média da amostra ", end="") if (x1 > x2): print("1", end="") else: print("2", end="") print(" é maior que a média da amostra ") if (x1 > x2): print("2", end="") else: print("1", end="") print(".")
def main(): try: import readchar except: mp.install_lib('readchar') mp.restart_program() fileName = 'ncm.data.json' ResultPrint = 20 dic = load_ncm(fileName) if (not dic): print("Iniciando download dos dados de NCM") if (download_ncm(fileName)): print("> OK <") mp.restart_program() else: pesquisa = '' repesquisa = False p = [] #array com as opções condizentes com a pesquisa sel = -1 #indice do ítem selecionado. -1 quando nenhum selecionado while True: mp.limpar_terminal() print("\n\n By: William Pilger") print( f"\n Ultima atualização dos dados de NCM: {dic['Data_Ultima_Atualizacao_NCM']}\n" ) print(f"\n Faça sua pesquisa: {pesquisa}\n") if (repesquisa): sel = -1 p = pesquisa_dict(dic['Nomenclaturas'], pesquisa) repesquisa = False maxResultPrint = ResultPrint if (len(p) > 0): #reprinta a lista de itens coerentes index = 0 i = 0 for item in p: i += 1 if (i > maxResultPrint): break if (sel == index): carac = '♦' else: carac = ' ' print( f" {carac} {dic['Nomenclaturas'][item]['Codigo']:10} - {dic['Nomenclaturas'][item]['Descricao'][:80]}" ) index += 1 dig = readchar.readkey() if (dig == '\x1b'): #esc be.sair(1) elif (dig == '\t' or dig == '\r'): #tab ou enter if (sel != -1): #existe um ítem selecionado detalha(dic['Nomenclaturas'][p[sel]]) else: maxResultPrint += 10 elif (dig == '\x1b[A'): #seta pra CIMA if (sel > 0): sel -= 1 elif (dig == '\x1b[B'): #seta pra BAIXO if (sel < len(p)): sel += 1 elif (dig == '\x08'): #back space pesquisa = pesquisa[:-1] repesquisa = True else: pesquisa += dig repesquisa = True
def inicio(): mp.limpar_terminal() print(' By: will.i.am -> github.com/williampilger\n\n\n ') print(" > TESTE DE HIPÓTESES PARA VARIÂNCIAS (ANOVA) <") print("\n Para analizar variâncias de duas ou mais amostras da mesma população.\n") print("Facilitando a entrada de dados para esta aplicação, os dados das amostras devem ser preenchidos em um arquivo.") print("E para tal, cada LINHA corresponderá à uma amostra, e os valores deverão ser separados por TABS.") print("""Como no exemplo abaixo: 2 6 9 6 5 8 6 8 2 3 """) fileName = input("Informe o nome do aquiro com os dados: ") if(not os.path.isfile(fileName)): print("O arquivo informado não existe!") be.sair(2) significancia = float(input("Informe o PERCENTUAL de significância que deseja adotar: ")) amostras = [] medias = [] total_amostras = 0 total_soma = 0 fluxo = open(fileName, "rt") for linha in fluxo: linha = linha.split(sep='\t') amostra = [] soma = 0 contagem = 0 for valor in linha: valor = float(valor.replace(',', '.')) contagem += 1 soma += valor amostra.append(valor) amostras.append(amostra) medias.append(soma/contagem) total_amostras += contagem total_soma += soma total_media = total_soma/total_amostras k = len(amostras) #SQT -> Soma de quadrados total SQT = 0 for amostra in amostras: for valor in amostra: SQT += (valor - total_media) ** 2 #SQE -> Soma de quadrados das diferenças entre grupos SQE = 0 for i in range(k): SQE += len(amostras[i]) * ((medias[i] - total_media) ** 2) #SQR -> Soma de quadrados residual (ou das diferenças entre grupos) SQR = 0 for i in range(k): for valor in amostras[i]: SQR += (valor - medias[i]) ** 2 #QME -> Quadrado médio da diferença entre grupos QME = SQE / (k - 1) #QMR -> Quadrado médio residual (ou das diferenças dentro dos grupos) QMR = SQR / (total_amostras - k) fc = QME / QMR v1 = k - 1 v2 = total_amostras - k f = get_F(v1, v2, significancia) mp.limpar_terminal() print(f"+------------------+------------------+-------------------------------+-------------------------------+-------------------------------+") print(f"|Fonte de variação | Graus de liberd. | SQ | QM | Estatística teste |") print(f"+------------------+------------------+-------------------------------+-------------------------------+-------------------------------+") print(f"| Entre grupos | {str(k-1).ljust(6)} | {str(SQE)[:22].ljust(22)} | {str(QME)[:22].ljust(22)} | |") print(f"+------------------+------------------+-------------------------------+-------------------------------+ {str(fc)[:22].ljust(22)} |") print(f"|Dentro dos grupos | {str(total_amostras-k).ljust(6)} | {str(SQR)[:22].ljust(22)} | {str(QMR)[:22].ljust(22)} | |") print(f"+------------------+------------------+-------------------------------+-------------------------------+-------------------------------+") print(f"| TOTAL | {str(total_amostras-k).ljust(6)} | {str(SQT)[:22].ljust(22)} | ~ | ~ |") print(f"+------------------+------------------+-------------------------------+-------------------------------+-------------------------------+") print("\n------------------------------------------ RESULTADOS -----------------------------------------") print(f"Média Geral = {total_media}") print(f"Tamanho da amostra total = {total_amostras}") print(f"Somatória das amostras = {total_soma}") print(f"Médias por grupo:") i = 1 for media in medias: print(f" Grupo {i} = {media}") i += 1 print(f"Tamanho das amostras por grupo:") i = 1 for amostra in amostras: print(f" Grupo {i} = {len(amostra)}") i += 1 print(f"k = {k}") print(f"SQT = {SQT}") print(f"SQE = {SQE}") print(f"SQR = {SQR}") print(f"QME = {QME}") print(f"QMR = {QMR}") print(f"F = {f} (para significancia de {significancia}%, v1 = {v1} e v2 = {v2})") print("\n- - - - - - - - - - - - - - - - - - - ESTATISTICA DO TESTE - - - - - - - - - - - - - - - - - -") print(f"Fc = {fc}") print("\n- - - - - - - - - - - - - - - - - - - - - - CONCLUSÃO - - - - - - - - - - - - - - - - - - - - -") rejeita = f<fc print(f" Como Fc ", end='') if(rejeita): print(f"é", end='') else: print("não é", end='') print(f" maior que F, ", end='') if(not rejeita): print("NÃO ", end='') print(f"REJEITA-SE H0.") print(f"\nPortanto, concluimos que, com {significancia}% de significancia,") if(not rejeita): print("não", end='') print(f" há evidências de que haja diferença entre as médias.\n\n")
def inicio(): mp.limpar_terminal() print(' By: will.i.am -> github.com/williampilger\n\n\n ') print(" > TESTE DE HIPÓTESES PARA VARIÂNCIAS COM DOIS FATORES (ANOVA) <") print( "\n Para analizar variâncias de duas ou mais amostras da mesma população\n com base em dois fatores.\n" ) print("\n 1 - Preciso do cálculo completo") print(" 2 - Tenho os dados SQE1, SQE2, SQR, SQT, k e l") opcao = int(input("Digite sua opção: ")) if (opcao == 1): be.sair(0) elif (opcao == 2): mp.limpar_terminal() SQE1 = float(input(" Informe SQE1: ").replace(",", ".")) SQE2 = float(input(" Informe SQE2: ").replace(",", ".")) SQR = float(input(" Informe SQR: ").replace(",", ".")) try: SQT = float(input(" Informe SQT: ").replace(",", ".")) except: SQT = SQE1 + SQE2 + SQR k = int(input(" Informe k: ")) l = int(input(" Informe l: ")) total_amostras = k * l else: print("Opção inválida!") be.sair(2) significancia = float( input("Informe o PERCENTUAL de significância que deseja adotar: ")) #QME -> Quadrado médio da diferença entre grupos QME1 = SQE1 / (k - 1) QME2 = SQE2 / (l - 1) #QMR -> Quadrado médio residual (ou das diferenças dentro dos grupos) QMR = SQR / ((k - 1) * (l - 1)) fc1 = QME1 / QMR fc2 = QME2 / QMR v1_1 = k - 1 v1_2 = l - 1 v2 = (k - 1) * (l - 1) f1 = get_F(v1_1, v2, significancia) f2 = get_F(v1_2, v2, significancia) print( f"+------------------+------------------+------------------+------------------+------------------+" ) print( f"|Fonte de variação | Graus de liberd. | SQ | QM | Estatística teste|" ) print( f"+------------------+------------------+------------------+------------------+------------------+" ) print( f"| Entre grupos (F1)| {str(k-1).ljust(6)} | {str(SQE1)[:9].ljust(9)} | {str(QME1)[:9].ljust(9)} | fc1 = {str(fc1)[:9].ljust(9)} |" ) print( f"+------------------+------------------+------------------+------------------+ +" ) print( f"| Entre grupos (F2)| {str(l-1).ljust(6)} | {str(SQE2)[:9].ljust(9)} | {str(QME2)[:9].ljust(9)} | fc2 = {str(fc2)[:9].ljust(9)} |" ) print( f"+------------------+------------------+------------------+------------------+ |" ) print( f"|Dentro dos grupos | {str(v2).ljust(6)} | {str(SQR)[:9].ljust(9)} | {str(QMR)[:9].ljust(9)} | |" ) print( f"+------------------+------------------+------------------+------------------+------------------+" ) print( f"| TOTAL | {str(total_amostras-1).ljust(6)} | {str(SQT)[:9].ljust(9)} | ~ | ~ |" ) print( f"+------------------+------------------+------------------+------------------+------------------+" ) print( "\n------------------------------------------ RESULTADOS -----------------------------------------" ) print(f"QME = {QME1}") print(f"QMR = {QMR}") print( f"\nF1 = {f1} (para significancia de {significancia}%, v1 = {v1_1} e v2 = {v2})" ) print( f"F1 = {f2} (para significancia de {significancia}%, v1 = {v1_2} e v2 = {v2})" ) print( "\n- - - - - - - - - - - - - - - - - - - ESTATISTICA DO TESTE - - - - - - - - - - - - - - - - - -" ) print(f"Fc1 = {fc1}") print(f"Fc2 = {fc2}") print( "\n- - - - - - - - - - - - - - - - - - - - - - CONCLUSÃO - - - - - - - - - - - - - - - - - - - - -" ) rejeita_1 = f1 < fc1 rejeita_2 = f2 < fc2 print(f"Fator 1:\n Como Fc ", end='') if (rejeita_1): print(f"é", end='') else: print("não é", end='') print(f" maior que F, ", end='') if (not rejeita_1): print("NÃO ", end='') print(f"REJEITA-SE H0.") print( f"\nPortanto, concluimos que, com {significancia}% de significancia,") if (not rejeita_1): print("não", end='') print(f" há evidências de que haja diferença entre as médias.\n\n") print(f"Fator 2:\n Como Fc ", end='') if (rejeita_2): print(f"é", end='') else: print("não é", end='') print(f" maior que F, ", end='') if (not rejeita_2): print("NÃO ", end='') print(f"REJEITA-SE H0.") print( f"\nPortanto, concluimos que, com {significancia}% de significancia,") if (not rejeita_2): print("não", end='') print(f" há evidências de que haja diferença entre as médias.\n\n")