Ejemplo n.º 1
0
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}")
Ejemplo n.º 2
0
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()
Ejemplo n.º 3
0
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
Ejemplo n.º 4
0
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")
Ejemplo n.º 5
0
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()
Ejemplo n.º 6
0
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
Ejemplo n.º 8
0
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...")
Ejemplo n.º 10
0
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(".")
Ejemplo n.º 12
0
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
Ejemplo n.º 13
0
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")
Ejemplo n.º 14
0
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")